我需要在QImage上绘制动态叠加层。叠加层的组成部分以XML定义,并解析为QHash<QString, QPicture>,其中QString是名称(例如“十字线”),而QPicture是与分辨率无关的图形。然后,在运行时确定的位置上根据需要绘制覆盖图的组件。

示例:我的QHash中有10张图片,组成了HUD中的每个可能元素。在视频的特定帧中,我需要在图像的不同位置绘制其中的6个。在下一帧中,某些内容已发生更改,现在我只需要绘制其中的4个,但是其中2个位置已更改。

现在我的问题是:如果我想快速执行此操作,是否应该将QHash重新定义为QHash<int, QPicture>并枚举 key 以抵消由字符串比较引起的开销;还是比较不会对性能产生很大的影响?因为XML解析器和overlay编写器是完全独立的类,所以我可以轻松地转换为整数键;但我想在整个应用程序中使用一致的数据结构。

我是否应该克服对一致性和可重用性的渴望,以提高性能?如果我这样做会很重要吗?

最佳答案

Gareth当然有正确的答案。我想稍微扩展一下。

  • Go具有一致性和可重用性
    第一的。尽量不要引入巨大
    性能瓶颈它是
    很难达到平衡
  • 设置现实的性能标准。我猜您正在做类似游戏的事情,一个合理的标准是“在我的开发机上保持25 fps”
  • 您的应用程序符合条件吗?是的?足够的优化,请转到5。
  • 对应用程序进行概要分析,优化花费时间最多的部分。回到3。
  • 利润!

  • 回到您的具体问题,如果哈希表中的元素数小于或等于一百,那么键类型可能根本就不重要。

    09-27 13:39