我在过去的18个月里掌握了函数式编程,从学习OCaml开始,到现在已经有几个星期了。现在我想走下一步,实现一些实际的应用程序:一个简单的实时地形编辑器。我写过许多实时地形渲染引擎,所以这是一个熟悉的话题。所使用的递归算法和数据结构似乎非常适合函数实现。
由于这是一个实时应用程序,我自然会寻找我能获得的最佳性能。现在,一些(我觉得挺烦人的) OCaml的支持者经常抱怨Haskell比OCaml或F#慢。但根据The Computer Language Benchmarks Game哈斯克尔经常击败OCaml,如果只是相当小的分数-仍然存在问题,这个基准测试只采用非常具体的样本。
正确的做法当然是用两种语言实现程序,然后进行比较,但我就是不想做重复的工作。
但也许其他人在OCaml和Haskell中做了类似的应用程序,并给出了一些数字?
发布于 2010-11-30 12:38:28
所有人都说,OCaml和Haskell都有足够高性能的编译器和运行时来处理几乎所有的事情。在我看来,基于纯粹的性能在它们之间进行选择似乎很愚蠢。您已经走了这么远--摆脱了显然最低级和性能最好的语言(C、C++等)。以更清晰、更简洁、更有表现力、更高级的代码为名。那么,当涉及到的性能差异要小得多时,为什么现在切换到该标准?
我会采用一些更宽泛的标准--如果您想要普遍的并行性,那么Haskell是更好的选择。如果你想要真正的无处不在的突变,那么OCaml更好。
如果你充其量只想要非常粗略的并行性,并且你打算主要使用函数式结构,那么可以根据其他的东西来选择,比如语法(我认为Haskell在这里要好得多,但这是主观的)或可用的库(Haskell在数量/可用性上胜出,但OCaml可能仍然在图形部门胜过它)。
我不认为你会出错
发布于 2010-11-30 05:15:39
根据我看到的所有数据,它们大致具有可比性。你写的代码会比语言本身产生更大的不同。
https://stackoverflow.com/questions/4308137
复制相似问题