使用记忆处理一个 erlang 项目(一些表内存副本,一些表磁盘副本,一些表两者兼而有之)。 为了优化某个读取(RAM 表),我使用了 ETS 查找而不是我一直使用的助记dirty_read,并对两个版本的例程进行了计时。 ETS查找明显快于记忆dirty_read。
我的问题是,使用 ETS 与遗忘症阅读助记符表是否有一些"陷阱"或"陷阱"(必须有,否则没有理由存在较慢的失忆症读取)。 如果它有任何区别,我不需要也不会使用任何"分布式"或"节点"。 换句话说,我现在和将来只会在一台计算机上使用单个节点。
mnesia:dirty_read 即使表是本地的,也会执行 RPC 调用。此外,它还检查当前活动上下文,即使对于脏查找也对其进行维护。这将导致查找所需的额外时间。
在您的情况下(只有一个节点具有本地助记符),直接 ets 查找应该有效,但不建议使用,因为它将取决于实现。更好的方法是使用mnesia:ets(Fun,[,Args])。