gpt4 book ai didi

c++ - 如何在不使用大量 CPU 的情况下将大量丰富的内容(图像、格式)快速附加到控件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:44 26 4
gpt4 key购买 nike

我正在使用 wxWidgets 和 Visual C++ 创建类似于在 GUI 中使用具有丰富格式(颜色、字体、图像)的 Unix“tail -f”的功能。我的目标是 wxMSW 和 wxMAC。

显而易见的答案是使用 wxTextCtrl 和 wxTE_RICH,调用 wxTextCtrl::SetDefaultStyle() 和 wxTextCtrl::WriteText()。

但是,在我的 3ghz 工作站上,在 Release模式下编译,我无法继续跟踪每行平均增长 1 毫秒的日志,最终落后。对于每一行,我要承担:

  1. 两次调用 SetDefaultStyle()
  2. 两次调用两次 WriteText()
  3. 调用 Freeze() 和 Thaw() 小部件

运行此程序时,我的 CPU 在使用 wxMSW 填充大约 20,000 行后在一个内核上达到 100%。一旦达到某个阈值,程序就会明显变慢,进一步落后。

我愿意使用其他控件(wxListCtrl、wxRichTextCtrl 等)。

最佳答案

您是否考虑过限制 View 中的行数?当我们遇到类似问题时,我们只是确保 View 中的行数不超过 10,000 行。如果底部有更多行,我们会删除顶部的行。这不是使用 WxWidgets,它是在 Mac 上使用 native Cocoa UI,但问题是一样的。如果带样式的 TextView (带有颜色、格式和 pretty-print )变得很大,在底部附加更多数据会变得非常慢。

关于c++ - 如何在不使用大量 CPU 的情况下将大量丰富的内容(图像、格式)快速附加到控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/148881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com