dan*_*jar 4 c++ performance build visual-studio
当然,Debug版本比Release版本慢.但是当我在Release模式下构建时,应用程序在从资源管理器中手动启动时比在Visual Studio中启动时执行得更好.例如,文件系统访问在我的项目中需要大约10倍.由于它是相同的可执行文件,我认为它应该运行相同的指令.
为什么在Visual Studio中启动Release版本如此之慢?如何获得完整的原生速度?
我认为不同之处在于堆.
MSDN说:调试器创建的进程(也称为生成进程)的行为与调试器未创建的进程略有不同.调试器创建的进程使用特殊的调试堆,而不是使用标准堆API.您可以使用_NO_DEBUG_HEAP环境变量或-hd命令行选项强制生成的进程使用标准堆而不是调试堆.
使用调试堆时,它会在分配或释放时检查堆的完整性,因此会影响性能.
此外,它在启用调试堆时禁用低碎片堆.如果直接运行exe,系统会根据需要使用低碎片堆(LFH)来维护Windows Vista之后的内存分配请求,如果您的应用程序有大量的分配和空闲,LFH可以大大提高应用程序性能.
当我在很久以前尝试提高Window XP下的应用程序性能时遇到了同样的问题,而在XP上默认禁用了LFH.我添加的代码,以使LFH在我的应用程序,然后我发现的代码只有当应用程序从资源管理器开始工作,在VS.调试启动时无法正常工作
| 归档时间: |
|
| 查看次数: |
494 次 |
| 最近记录: |