读书人

程序运行速度减慢,该怎么解决

发布时间: 2012-05-29 12:16:00 作者: rapoo

程序运行速度减慢
最近搞了一个程序,里面会循环计算某个东西,但是运行的时候那个循环计算的地方越来越慢,用任务管理器查看,没有内存溢出。

请教各位大神,导致程序运行减慢的原因都有哪些?

还有个关于VC Debug版本和Release版本的问题,现在假设我的代码分为两部分:A和B。Debug版本中A运行时间109ms,B运行时间410ms,Release版本A部分运行172ms,B部分运行16ms。有没有大神遇到过类似情况,请指点。

[解决办法]
没泄漏的话多半是逻辑问题,分块输出时间定位到底是哪里的处理变慢了
release开了优化,显然会比debug的要快
[解决办法]
测一下performance,看看在哪些地方花了太多时间
确保在计算后面的数时,不会再需要计算以前的数
[解决办法]
Debug的程序里面有调试信息库,调试用堆栈等信息。
调试版本的分配内存会事先在内存中初始化,而Release版本就不管了。
调试版本包括了每个执行码对应的源代码信息,Release版本去掉了。
调试版本的堆栈,比较复杂,如果被破坏会被检查出来,Release版本不检查了。
[解决办法]
没程序,说什么
我写的程序debug处理1个文件要一分半
release处理31个文件只用一分20秒
[解决办法]
重复计算的结果可以保存为静态数据。
[解决办法]


上VTUNE去分析,看看函数热点在哪里

有试用版下载的
[解决办法]
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!

[解决办法]
可以用vs2010的性能分析工具,对程序进行分析,找出问题所在
具体的可见其他网友写的一篇博文
链接地址
http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html
[解决办法]
调试-》启动性能分析

读书人网 >C++

热点推荐