我正在接收事件,并且我想跟踪最近的N个事件,并且对于任何新事件,计算过去发生过类似事件的次数(这通常不会经常发生)。
因此,我需要一些带队列语义(shift / push)以及快速查找不是插入顺序的键。
我当前的解决方案,当我们只关心计数时,是保持一个事件数组和一个计数哈希值,这样我就可以在推送时递增适当的计数器并在移位时递减它。但是,这不允许我记录更多的计数,并且难以概括。
另一种可能性是将事件放置在包含N / K事件的几代K + 1哈希表中,跟踪插入的顺序,并在最新的表满时丢弃最旧的表。这使我在具有恒定移位/推送和线性查找的队列(当K = N时)之间进行权衡,并且以最多两倍的内存(K = 1)为代价进行更快的查找。
我认为类似链接哈希表的行为会稍微好一些。在Perl中是否存在这个或具有等效语义的东西?