启用XP视觉主题/视觉样式会导致性能下降

时间:2009-12-04 22:06:12

标签: delphi themes uxtheme

在尝试对旧的C ++ Builder / Delphi应用程序的外观进行现代化改造时,我启用了可视化主题(visual styles)并且对于添加了多少性能命中主题感到惊讶。例如,对于我们的主要设置页面(由于开发时间和再培训成本原因,我们现在不想重做的11-tab,200-control怪物对话框):

  • 未启用主题: ~0.1秒构建表单及其控件(由QueryPerformanceCounter测量), ~0.9 sec 从单击菜单项到表单显示(用秒表测量)。对最终用户来说并不明显。
  • 启用主题: ~0.6秒构建表单及其控件, ~1.5秒从单击菜单项到显示的表单。最终用户非常注意。

我在Windows XP桌面和Windows 7 VM上都得到了类似的结果。

我意识到我可以采取一些步骤来改进这种特殊情况(例如懒洋洋地加载对话框的标签或完全重新设计它),但主题是否经常添加如此明显的性能?是否有任何简单的建议可以避免这种性能损失?

2 个答案:

答案 0 :(得分:3)

哇。我不确定我在一张表格上有200个控件。以下是一些建议。

  • 这可能是一种特殊情况,您希望在应用程序启动时创建一次对话框,并在需要时显示该对话框,而不是按需创建。

  • 我还会看一下构造函数或OnShow事件中发生了什么。您是否填充了BeginUpdate / EndUpdate优势的任何列表?

  • 您是否在OnResize事件或类似事件中有任何代码被多次触发,可能会等到创建表单并运行一次之后?

  • 您使用什么样的控件?如果一种类型的控制涂料特别缓慢,您可以将其替换为涂料更快的涂料。但这需要进行一些测试。

答案 1 :(得分:1)

您可以尝试在控件上启用双缓冲,我们有相同的行为,并且这种方法有所加快,但在采用应用程序主题支持之前没有接近性能。