如何在Perl中实现Tie :: IxHash?

如何在Perl中实现Tie :: IxHash?,第1张

概述我最近遇到了一个Perl的情况,使用保持顺序的哈希会使我的代码更易读,更容易使用.经过一番搜索,我发现了Tie :: IxHash CPAN模块,它完全符合我的要求.在我谨慎起见并开始使用它之前,我想更好地了解它是如何工作的以及我可以从中获得什么样的性能. 据我所知,有序关联数组通常被实现为尝试,我以前从未实际使用过,但确实知道它们的性能符合我的期望(我希望做大量的阅读和写作,并且需要永远记住最初 我最近遇到了一个Perl的情况,使用保持顺序的哈希会使我的代码更易读,更容易使用.经过一番搜索,我发现了TIE :: IxHash CPAN模块,它完全符合我的要求.在我谨慎起见并开始使用它之前,我想更好地了解它是如何工作的以及我可以从中获得什么样的性能.

据我所知,有序关联数组通常被实现为尝试,我以前从未实际使用过,但确实知道它们的性能符合我的期望(我希望做大量的阅读和写作,并且需要永远记住最初插入的订单键).我的问题是我无法弄清楚这是否是TIE :: IxHash的制作方式,或者我应该从中获得什么样的性能,或者对我来说是否有一些更好/更清洁的选择(我真的不想保留一个单独的数组和哈希来完成我需要的东西,因为这会产生丑陋的代码和空间效率低下).我也只是因为好奇心而好奇.如果它没有被实现为trIE,它是如何实现的?我知道我可以涉及源代码,但我希望其他人已经这样做了,我猜我并不是唯一一个对这个答案感兴趣的人.

所以…想法?建议?建议吗?

解决方法 使用人们期望的常规Perl构建块以直接方式实现 Tie::IxHash对象.具体地说,这样的对象是保持4个元素的祝福数组引用.

> [0]用于存储用户散列的键的散列引用.只要模块需要检查密钥是否存在,就会使用它.
> [1]按顺序存储用户散列键的数组引用.
> [2]并行数组引用,用于存储值,也按顺序存储.
> [3]一个整数,用于跟踪两个并行数组中的当前位置.迭代需要这个.

关于表现,一个好的benchmark通常比猜测更值钱.我的猜测是,最大的性能损失将伴随删除,因为持有有序键和值的数组将需要调整.

总结

以上是内存溢出为你收集整理的如何在Perl中实现Tie :: IxHash?全部内容,希望文章能够帮你解决如何在Perl中实现Tie :: IxHash?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1265161.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存