什么更高性能? Haskell或OCaml
我花了18个月的时间来掌握函数式编程,从学习OCaml开始,几个星期后现在Haskell。 现在我想进行下一步并实施一些实际的应用程序:一个简单的实时地形编辑器。 我编写了许多实时地形渲染引擎,所以这是一个熟悉的主题。 所使用的递归算法和数据结构看起来非常适合功能实现。
有了这个实时应用程序,我自然而然地在寻找我可以获得的最佳性能。 现在一些(恕我直言,非常恼人的)OCaml的支持者相对于OCaml或F#而言,对Haskell的反应相当缓慢。 但根据计算机语言基准游戏,Haskell经常击败OCaml,即使只有相当小的分数 - 仍然存在问题,这个基准只采用非常具体的样本。
正确的做法当然是用两种语言来实现这个程序,然后进行比较,但我根本不想做双重工作。
但也许其他人在OCaml和Haskell中做了类似的应用并给出了一些数字?
根据所有的说法,OCaml和Haskell几乎都具有足够的性能编译器和运行时间。 在纯粹的表演基础上挑选他们对我来说似乎很愚蠢。 你已经走到了这么远 - 以更清晰,更简洁,更富有表现力,更高级别的代码的名义从最明显的低级别和高性能语言(C,C ++等)中移除。 那么为什么当所涉及的性能差异更小时,现在切换到那个标准呢?
我会用更广泛的标准去做 - 如果你想要普遍的并行性,那么Haskell是更好的选择。 如果你想真正普遍的突变,那么OCaml更好。
如果你只想要非常粗糙的并行性,并且你打算坚持大部分的功能结构,那就选择其他的东西,比如语法(我认为Haskell在这里更好,但这是主观的)或者可用库(Haskell赢得数量/可用性,但OCaml可能会在图形部门留下它)。
我不认为你会以任何方式出错
在两位非常聪明的同事的帮助下,我在Objective Caml和Haskell中编写了一个数据流优化库。 Haskell版本更具多态性,具有更多的编译时类型检查,因此运行时检查更少。 OCaml版本使用可变状态来累积数据流事实,这可能会在本周更快或更慢,具体取决于月亮的相位。 关键的事实是, 在他们预期的应用中,这两个库都是如此之快以至于不值得与之搭讪 。 也就是说,在各自的编译器(QuickC--和GHC)中,数据流优化花费的时间很少,代码不值得改进。
标杆管理是地狱。
我编写了许多实时地形渲染引擎,所以这是一个熟悉的主题。
熟悉足以知道大部分时间将花在哪里?
如果是这样,那么也许你可以用不同的语言编写代码,然后进行比较。
但根据计算机语言基准游戏,Haskell经常击败OCaml,即使只有相当小的分数 - 仍然存在问题,这个基准只采用非常具体的样本。
基准游戏报告了4组结果 - 一个核心和四核,32或64位Ubuntu - 您可能会发现OCaml或Haskell基准测试程序的性能表现会更好或更差,具体取决于平台。
所有基准测试都可以采取非常具体的样本,当然,您应该忽略不同于大多数时间将花费在应用中的任务的比较 - 大整数算术? 正则表达式? 字符串? - 看看最想做什么的比较。
链接地址: http://www.djcxy.com/p/79335.html