在尝试对旧的C ++ Builder / Delphi应用程序的外观进行现代化改造时,我启用了可视化主题(visual styles)并且对于添加了多少性能命中主题感到惊讶。例如,对于我们的主要设置页面(由于开发时间和再培训成本原因,我们现在不想重做的11-tab,200-control怪物对话框):
我在Windows XP桌面和Windows 7 VM上都得到了类似的结果。
我意识到我可以采取一些步骤来改进这种特殊情况(例如懒洋洋地加载对话框的标签或完全重新设计它),但主题是否经常添加如此明显的性能?是否有任何简单的建议可以避免这种性能损失?
答案 0 :(得分:3)
哇。我不确定我在一张表格上有200个控件。以下是一些建议。
这可能是一种特殊情况,您希望在应用程序启动时创建一次对话框,并在需要时显示该对话框,而不是按需创建。
我还会看一下构造函数或OnShow事件中发生了什么。您是否填充了BeginUpdate / EndUpdate优势的任何列表?
您是否在OnResize事件或类似事件中有任何代码被多次触发,可能会等到创建表单并运行一次之后?
您使用什么样的控件?如果一种类型的控制涂料特别缓慢,您可以将其替换为涂料更快的涂料。但这需要进行一些测试。
答案 1 :(得分:1)
您可以尝试在控件上启用双缓冲,我们有相同的行为,并且这种方法有所加快,但在采用应用程序主题支持之前没有接近性能。