kir*_*uku 4 algorithm functional-programming scala imperative-programming
我正在寻找功能风格的算法(或这种算法的参数),这比命令式更快.
我喜欢功能代码,因为它具有表现力,而且比它的命令性吊坠更容易阅读.但我也知道这种表现力可能会花费运行时开销.并不总是由于尾递归等技术 - 但往往它们更慢.
虽然节目我不会去想的功能代码运行成本,因为现在的电脑速度非常快,发展的时间比运行时更为昂贵.此外,对我而言,可读性比性能更重要.然而,我的程序足够快,所以我很少需要以命令的方式解决问题.
有些算法在实践中应该以命令式方式(如排序算法)实现,否则在大多数情况下它们太慢或需要大量内存.在由于像模式匹配整个节目像写在功能语言解析器技术对比度可能多于一个的写入命令式语言的编译器,因为的可能性来优化代码快得多.
但是,是否有任何算法在功能样式上更快或者是否有可能设置这种算法的参数?
Nik*_*bak 13
一个简单的推理.我不保证术语,但似乎有道理.
因此,在我们获得"功能性计算机"之前,您可能必须对"表现力"感到满意.
简短的回答:
任何可以轻松实现并行的东西,因为它没有副作用,在多核处理器上会更快.
例如,QuickSort在与不可变集合一起使用时可以很好地扩展:http://en.wikipedia.org/wiki/Quicksort#Parallelization
在其他条件相同的情况下,如果你有两个可以合理地描述为等价的算法,除了一个在不可变数据上使用纯函数,而第二个算法依赖于就地突变,那么第一个算法将轻松扩展到多个核心.
甚至可能是您的编程语言可以为您执行此优化的情况,就像scalaCL插件将编译代码以在GPU上运行一样.(我现在想知道SIMD指令是否是一个"功能"处理器)
因此,给定并行硬件,第一个算法将表现更好,并且您拥有的核心越多,差异就越大.