Muz*_*hua 4 erlang mnesia elixir erlang-shell
当我将原子作为信息发送时,原子是否从一个过程复制到另一个过程?我的想法是,因为这个原子已经存在于VM中,所以不必复制.我知道从一个进程发送到另一个进程时二进制文件更有效.
如果我发送一个触发器消息,从一个进程到另一个进程的常量消息,最好使用:atom或binary?
使用语义上最正确的.一般情况下,除非您已经进行了基准测试,并且确信您的代码可以从优化中受益,否则不要担心性能.如果你在语义上使用最正确的东西,那么无论如何它可能是最快的.
那就是说,语义上最正确的是什么?
原子用于标记或识别静态的术语,这些术语不会改变.所以,如果你想让一个过程做一些工作,你可以写:send(pid, :do_some_work).然后另一个过程可以很容易地匹配原子并执行所需的工作(与原子比较超快).
但是,如果您要传递动态内容,那么您肯定要使用二进制文件.将二进制转换为原子实际上是不安全的,原子也有大小限制.你不能拥有1千字节长的原子.
最后,值得指出的是原子是最快复制的.原子表示为整数,它们取1个字.所以你只复制了一个字.
二进制文件,即使它们在一定大小后共享,也至少需要3个单词.
更多信息:为什么有一个原子类型很有用(比如elixir,erlang)?
Erlang VM效率指南:http://www.erlang.org/doc/efficiency_guide/advanced.html
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |