atom在erlang里面的作用非常大,特别是在消息匹配的时候,所以需要个非常高效的实现。erts的index.c hash.c atom.c用来实现atom. atom在内部表示的时候是个index. atom是个字符串,首先存在hash表里,然后把在hash里的slot,放在index的索引表里。这样要获取atom就非常高效,基本是2次指针运算。当需要把atom传送到外部的时候,第一次的时候就乖乖的送字符串的内容,同时把这个atom cache起来,以后再发送的时候就可以只传送在cache中的index了,大大提高了网络传输效率。具体的常见dec_atom enc_atom, external.c中。
细节中可以看到erlang非常注意性能。
细节中可以看到erlang非常注意性能。