Qt QPaint::save()和QPaint::restore()的价格有多高?

Qt QPaint::save()和QPaint::restore()的价格有多高?,qt,qpainter,scenegraph,Qt,Qpainter,Scenegraph,我想构建一个场景图来存储和管理我的场景布局,该场景布局将使用QPainter(如QPicture,但布局应该是可修改的) 场景图将包含用于变换、剪裁和基本体的节点。前两个需要存储画师的当前状态,以便在以后恢复它。分别使用qpaint::save()和qpaint::restore()似乎很自然 我有点担心这两个功能的效率。Qt的文档在此未提供任何信息。看看Qt的源代码,似乎 qPaint::save()复制状态的每个元素,例如笔、画笔、变换、剪裁路径等。在我看来,存储我自己实际需要的一个或两个相

我想构建一个场景图来存储和管理我的场景布局,该场景布局将使用
QPainter
(如
QPicture
,但布局应该是可修改的)

场景图将包含用于变换、剪裁和基本体的节点。前两个需要存储画师的当前状态,以便在以后恢复它。分别使用
qpaint::save()
qpaint::restore()
似乎很自然

我有点担心这两个功能的效率。Qt的文档在此未提供任何信息。看看Qt的源代码,似乎
qPaint::save()
复制状态的每个元素,例如笔、画笔、变换、剪裁路径等。在我看来,存储我自己实际需要的一个或两个相关属性的前一个状态要高效得多。有人对此有经验吗?

如果查看源代码没有帮助,那么您可以进行基准测试<代码>QeReleasdTimer围绕一个执行了一百万次保存和恢复的循环应该会给出一些线索,特别是如果您执行了一百万次其他操作(如绘制一条线)的其他循环并进行比较。我的直觉是,与您可能执行的任何其他操作相比,保存和恢复都是微不足道的操作,但这只是一个猜测。我从未遇到过上述函数在性能方面的问题。你的担忧来自哪里?你注意到什么了吗?@vahancho我的担心主要是因为看了资料来源,我这么做是出于普遍的好奇心。可能我对过早的优化非常敏感。如果查看源代码没有帮助,那么您可以进行基准测试<代码>QeReleasdTimer围绕一个执行了一百万次保存和恢复的循环应该会给出一些线索,特别是如果您执行了一百万次其他操作(如绘制一条线)的其他循环并进行比较。我的直觉是,与您可能执行的任何其他操作相比,保存和恢复都是微不足道的操作,但这只是一个猜测。我从未遇到过上述函数在性能方面的问题。你的担忧来自哪里?你注意到什么了吗?@vahancho我的担心主要是因为看了资料来源,我这么做是出于普遍的好奇心。可能我很容易受到过早优化的影响。