重拾写作的乐趣
持久对象(Persistent Term)是OTP-21.3之后引入的, 它的get是非复制(Copy)的
persistent_term_get_1 lookup get_bucket
而ETS的get是复制(Copy)的
ets_lookup_2 db_get_hash build_term_list
在游戏服务器里面, 配置表通常会用ETS或者beam进行热更新, ETS每一次get都会复制, beam每一次调用, 也是要重新构造一份数据的。如果你使用OTP-21.3之后的版本, 可以结合持久对象(Persistent Term)做成OOP那样的单例模式, 进一步提升计算性能和降低内存消耗。
参考Erlang博客
Clever use of persistent_term