erlang中有一些公共的库函数,它们比c中的等效函数慢得多。
有没有可能让c代码执行二进制解析和数字处理,并让erlang衍生进程来运行c代码?
发布于 2010-08-24 17:27:35
当然,在极端情况下,经过优化后,C会更快。如果你说的更快是指跑得更快。
到目前为止,Erlang编写起来要快得多。根据您对速度的要求,Erlang可能“足够快”,它将为您节省在C中搜索bug的时间。
C代码只有在优化后才会更快。如果你在C和Erlang上花费相同的时间,你会得到大致相同的速度(请注意,我在这个时间估计中计算了调试和修复错误的时间。这在Erlang中会少得多)。
所以:
faster writing = Erlang
faster running (after optimisations) = C
faster running without optimisations = any of the two选你所选。
发布于 2015-12-26 23:20:31
基于Erlang FAQ有两个粗略的经验法则
主要涉及数字处理和数据处理的
然而,对于Erlang缺乏数字处理性能,有一些官方解决方案:
用C语言实现一个函数并将其对象代码加载到Erlang虚拟机中,使其类似于标准的Erlang函数,但具有本机性能。
通过标准输入和输出文件描述符从Erlang虚拟机到外部OS进程的面向字节的接口。从Erlang的角度来看,与此端口的通信是通过消息传递进行的。
一个动态链接的C对象文件,加载到Erlang虚拟机中,就像一个端口。从Erlang的角度来看,与这个端口驱动程序的通信是通过消息传递进行的。
您可以简单地将Erlang运行时升级到分布式节点。这样,就有了用C实现Erlang运行时的规范,并通过单个接口与Erlang节点通信。
上述所有解决方案都有自己的优缺点,需要非常小心地使用。
发布于 2010-08-21 19:30:14
首先用Erlang编写系统的整个逻辑,然后用C实现处理二进制文件。使用NIF(它是C语言的一种接口)对系统的其余部分非常直接和透明。这是另一个关于与C Run C Code Block in Erlang对话的帖子。
在使用C之前,请确保您已经对当前的实现进行了基准测试。它有可能满足您的需求,尤其是最新的Erlang/OTP发行版(R14),它引入了对二进制处理的极大增强。
https://stackoverflow.com/questions/3536459
复制相似问题