主题:影响程序计算快慢的因素
kikyomn
[专家分:30] 发布于 2011-03-04 15:45:00
1,未知量多 2,循环多 3,子程序多了会不会让程序变慢啊??
回复列表 (共17个回复)
沙发
臭石头雪球 [专家分:23030] 发布于 2011-03-04 17:51:00
1. 什么叫未知量?
2. 循环的个数影响不大,循环终止条件和嵌套层数,以及循环体执行量会影响。
3. 会影响,但要综合考虑,为了让程序更有条理,更易读,易于维护,还是应该合理的使用子程序。
板凳
yeg001 [专家分:14390] 发布于 2011-03-04 23:54:00
影响程序性能的因素确实很多. 例如能不能利用上cpu的矢量计算, cache是使用情况对性能影响都很大.
3 楼
ch06 [专家分:30] 发布于 2011-03-05 09:48:00
编译器好像也影响程序的快慢,以前用CVF6.6,后来考虑openmp,结果CVF不支持,
改了IVF后,openmp还没加呢,结果计算速度比在CFV6.6快了6倍多,太意外了
也是一个意外的惊喜!
我用的是32位系统,不知道64位会怎么样!
4 楼
yeg001 [专家分:14390] 发布于 2011-03-05 12:44:00
楼上, 你不会是把cvf6.6的debug模式跟ivf的release比较吧?
5 楼
ch06 [专家分:30] 发布于 2011-03-05 19:09:00
呵呵,我对编译器懂的不多,cvf6.6用的是debug模式
因为用Microsoft visual studio 2008感觉挺麻烦的,所以用的是IVF的命令模式
是不是这样比不公平?
cvf6.6一般我都默认用debug模式,只有那种只能用release模式的,我才修改一下
如有不妥,请高手扫盲,我都自己摸索着用的,呵呵
6 楼
dongyuanxun [专家分:7180] 发布于 2011-03-05 20:02:00
[quote]呵呵,我对编译器懂的不多,cvf6.6用的是debug模式
因为用Microsoft visual studio 2008感觉挺麻烦的,所以用的是IVF的命令模式
是不是这样比不公平?
cvf6.6一般我都默认用debug模式,只有那种只能用release模式的,我才修改一下
如有不妥,请高手扫盲,我都自己摸索着用的,呵呵
[/quote]
那你看使用的是什么编译开关
ivf默认什么都不加时,优化开关应该为/O1
7 楼
ch06 [专家分:30] 发布于 2011-03-05 20:37:00
我刚才用cvf6.6的release模式,好像程序运行也快了不少
[em21]以前居然不知道!
8 楼
kikyomn [专家分:30] 发布于 2011-03-07 11:20:00
[quote]1. 什么叫未知量?
2. 循环的个数影响不大,循环终止条件和嵌套层数,以及循环体执行量会影响。
3. 会影响,但要综合考虑,为了让程序更有条理,更易读,易于维护,还是应该合理的使用子程序。[/quote]
我的程序是N*N的循环,我就经常把N称为未知量了。
十几个子程序应该不会影响速度吧
9 楼
kikyomn [专家分:30] 发布于 2011-03-07 11:22:00
[quote]
我刚才用cvf6.6的release模式,好像程序运行也快了不少
[em21]以前居然不知道![/quote]
这句话感觉像是在为release打广告,哈哈。
据说确实用release比debug快不少,但就是用不习惯。
10 楼
kikyomn [专家分:30] 发布于 2011-03-07 11:25:00
是不是Compaq里只有debug模式,Microsoft 除了有debug还有realease啊?
我来回复