gpt4 book ai didi

C++ "delete"很慢。我应该先看哪里?

转载 作者:可可西里 更新时间:2023-11-01 18:34:57 24 4
gpt4 key购买 nike

我有一个 C++ 应用程序,其中“删除”功能运行缓慢。什么可能导致这种情况,我应该从哪里开始寻找解决方案?

背景:

此 C++ 代码位于 AutoCAD 内部运行的 ARX 文件中,它基本上只是一个 DLL。

删除速度较慢的特定计算机正在运行 AutoCAD 2011、Windows 7、64 位。 AutoCAD 2011 的 ARX 必须使用 Visual Studio 2008 Service Pack 1 进行编译。

出现问题的计算机是客户的计算机。它没有安装任何版本的 Visual Studio。

在我的开发电脑上,代码在 AutoCAD 2011 中没有任何问题。

为了测试,我有一些删除链表的代码。在有问题的电脑上,删除列表需要0.7秒。在没有问题的计算机和配置上,相同的代码需要 0.02 秒。具体时间并不重要,重要的是两个数字之间的巨大差异。

我确保在两台计算机上运行相同版本的代码,因此这不是发布与调试构建问题。

最佳答案

大致按照我检查它们的顺序:

  • 其他插件:该行为是否由其他 ARX 文件引起?可以在坏系统上禁用它们吗?
  • PerfMon:检查软/硬页面错误或缓存未命中是否在删除期间达到峰值(我希望您可以在客户的计算机上进行设置)。
  • HeapQueryInformation:在好的/坏的环境中相同的值?
  • 堆锁:是否有其他线程在后台高度活跃,紧紧捕获堆锁?您可以通过将循环包装在 HeapLock/HeapUnlock 中进行测试(当然还有锁内的时间)。
  • Hooks: 相应的代码可以被 hook 吗? (例如,挂接到 C++/Win32 堆函数的第 3 方应用程序可以做任何它想做的事情)
  • 捕获救命稻草:相应的是否需要异常长的时间?各个删除时间是如何分布的?

关于C++ "delete"很慢。我应该先看哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4752708/

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