在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |