erlang – Id和Pid的映射是否应该存储在ets表或gen_server的状态中?

我正在构建一个OTP应用程序,它遵循类似于
trapexit中描述的模式,在那里我使用gen_server实现一个非阻塞gen_server:call / 3来启动与后端的事务并将事务id的映射存储到From pid .当gen_server从后端接收消息时,它会提取事务ID并使用此映射来查找正确的pid,并将其转发给.

在trapexit示例中,这个映射是使用ets实现的,但是我发现gen_server的状态包含带有这些映射的dict是一个非常自然的解决方案.

对于我的特定用例,映射最多包含200个条目.

推荐哪种实施方案?

提前致谢!

最佳答案 与ets相比,200足以对性能产生一些影响(可能是一个数量级或更小).你必须问自己的真正问题是“我是否需要这种额外的表现或者这是否足够?”.

如果性能不是问题,请使用dict.

点赞