我有一个C应用程序,其中“删除”功能运行缓慢.可能导致这种情况的原因以及我应该从哪里开始寻找解决方案?
@H_502_17@解决方法
背景:
此C代码位于AutoCAD内部运行的ARX文件中,该文件基本上只是一个DLL.
删除速度慢的特定计算机运行AutoCAD 2011,Windows 7,64位.必须使用Visual Studio 2008 Service Pack 1编译ARX for AutoCAD 2011.
有问题的计算机是客户的计算机.它没有安装任何版本的Visual Studio.
在我的开发计算机上,代码在AutoCAD 2011中没有任何问题.
为了测试,我有一些删除链表的代码.在有问题的计算机上,删除列表需要0.7秒.在没有问题的计算机和配置上,相同的代码需要0.02秒.具体时间并不重要 – 两个数字之间的差异很大.
我确保在两台计算机上运行相同版本的代码,因此它不是发布与调试构建问题.
大概按顺序我会检查它们:
>其他插件:可能由其他ARX文件引起的行为?他们可以在糟糕的系统上被禁用吗?> PerfMon:在删除期间检查软/硬页面错误或缓存未命中是否达到峰值(我希望您可以在客户计算机上进行设置).> HeapQueryInformation:好/坏环境中的相同值?>堆锁:其他一些线程可能在后台高度活跃,紧紧抓住堆的锁吗?您可以通过在HeapLock / HeapUnlock中包装循环来测试(当然,锁定时间在锁内).>钩子:各个代码可以挂钩吗? (例如,第三方应用程序挂钩到C / Win32 Heap函数以执行它想做的任何事情)>抓住吸管:相应的新产品需要多长时间吗?个人删除时间如何分配?