加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在erlang进程之间发送消息:Atoms vs Binaries

发布时间:2020-12-15 22:10:48 所属栏目:安全 来源:网络整理
导读:当我将原子作为信息发送时,原子是否从一个过程复制到另一个过程?我的想法是,因为这个原子已经存在于VM中,所以不必复制.我知道从一个进程发送到另一个进程时二进制文件更有效. 如果我发送一个触发器消息,从一个进程到另一个进程的常量消息,最好使用:atom或b
当我将原子作为信息发送时,原子是否从一个过程复制到另一个过程?我的想法是,因为这个原子已经存在于VM中,所以不必复制.我知道从一个进程发送到另一个进程时二进制文件更有效.

如果我发送一个触发器消息,从一个进程到另一个进程的常量消息,最好使用:atom或binary?

解决方法

使用语义上最正确的.一般情况下,除非您已经进行了基准测试,并且确信您的代码可以从优化中受益,否则不要担心性能.如果你在语义上使用最正确的东西,那么无论如何它可能是最快的.

那就是说,语义上最正确的是什么?

原子用于标记或识别静态的术语,这些术语不会改变.因此,如果您想告诉流程做一些工作,您可以写:send(pid,:do_some_work).然后另一个过程可以很容易地匹配原子并执行所需的工作(与原子比较超快).

但是,如果您要传递动态内容,那么您肯定要使用二进制文件.将二进制转换为原子实际上是不安全的,原子也有大小限制.你不能拥有1千字节长的原子.

最后,值得指出的是原子是最快复制的.原子表示为整数,它们取1个字.所以你只复制了一个字.

二进制文件,即使它们在一定大小后共享,也至少需要3个单词.

更多信息:Why is useful to have a atom type (like in elixir,erlang)?

Erlang VM效率指南:http://www.erlang.org/doc/efficiency_guide/advanced.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读