首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于程序效率的一些见地

2012-08-27 
关于程序效率的一些想法? ? ??在之前做的视频监控系统项目中,我遇到的最大的问题就是解码器执行效率问题,

关于程序效率的一些想法

? ? ??在之前做的视频监控系统项目中,我遇到的最大的问题就是解码器执行效率问题,因为视频处理数据量大,而且越是清晰的视频对解码器性能的要求越高,记得当时开始使用的是ffmpeg移植到VC++下的版本,用Debug调试的时候性能非常差,完全不能满足要求。现在想想,当时为什么不用Release试试呢?

? ? ?之所以有这样的想法源于两个地方,今天看《C++对象模型》的时候作者提到“如果没有把优化开关打开,就很难猜测一个程序的效率表现............’” 还有一个是,昨天在实现对大量格式化数据进行关键字查重的时候,由于不同环境下的几次运行,效率各有千秋(同一段程序)


具体表现如下(处理150M数据)

环境+编译选项 ? ? ? ? ??运行时间? ?

VS 下 Debug模式 ? ? ?60s+

VS 下release模式 ? ? ?8.7s

Linux 无优化G++ ? ? ?10s+

Linux -o2 G++ ? ? ? ? 8.1s ? ??


? ? ? 这也就是引发我回忆的原因,我因为之前的项目经验,导致我觉得VC++是个很废柴的编译器,但这次我需要改变看法了。大家如果在VC++下开发过,必然觉得VC的调试功能实在是过于好了,我目前觉得调试最爽的IDE,debug模式需要编译器完全变量查看,执行中断等等操作,需要设置许多的编译选项,所以编译的程序其实是加入过多杂物的庞然大物。执行起来自然不如意,只是很少人会想到,之间的差距居然如此之大。这个数据虽然我记不清楚准确的值,但我也十分震惊。 虽然我可以认为VC++不再那么废柴,但确定的一点是:G++编译器的表现还是优于VC++的。不管在Windows还是Linux。

?

?

总结:如果你没有开启所有优化之前,千万不要轻易对程序性能进行判断。一切需要付诸实践!

热点排行