对此有几点评论:
如果您要生成像素图的哈希/缓存键,那么您可能需要跳过 QPixmapCache 并直接使用 QCache。这将消除使用 QStrings 作为键的一些开销(除非您还想使用文件路径来定位项目)
从 Qt4.4 开始,QPixmap 有一个与之关联的“哈希”值(请参阅QPixmap::cacheKey())。该文档声称“不同的 QPixmap 对象只有引用相同的内容才能具有相同的缓存键。” 然而,由于 Qt 使用共享数据复制,这可能仅适用于复制的像素图,而不适用于从同一图像加载的两个不同的像素图。一些测试会告诉你它是否有效,如果有效,它会让你轻松获得哈希值。
如果您确实想通过删除重复项来实现良好、相当快速的缓存,您可能需要查看自己的数据结构,该数据结构根据大小、颜色深度、图像类型等进行排序。然后,在找到具有相同尺寸、位深度等的相同类型的图像后,您只需要对实际图像数据进行哈希处理。当然,如果您的用户通常打开大量具有相同内容的图像,则不会根本没有帮助。
性能:不要忘记 Qt 在 4.5 中添加的基准测试工具,它可以让您比较各种哈希想法并查看哪一种运行速度最快。我还没有检查过,但看起来很整洁。
归档时间: |
|
查看次数: |
2029 次 |
最近记录: |