C语言多充循环,运算次数多,编译时间很长,又无法估计最终需要多久,怎么办?

循环层数比较多,设置的变量区间比较大,编译成功后,运行时间很长,咋办?求大神。

可以用C语言中的时间函数:
1.在预处理的部分添加:#include <time.h>;
2.然后在main主函数的开头记录下开始的时刻: clock_t start=clock(),在结尾再记录下结束的时刻:clock_t finish=clock();
3.然后打印出这个时间差就是中间程序的执行时间: duration = (double)(finish - start);printf( "%f seconds\n", );
例子:
#include <stdio.h>
#include <time.h>
int main()
{
double duration;
clock_t start=clock();
printf("I am studying");
clock_t finish=clock();
duration = (double)(finish - start);
printf( "%f seconds\n",duration );
return 0;
}
我还以为是想知道时间来着。感觉在你这个阶段应该不会出现运行时间很长的事儿的,建议你仔细检查下你的源程序,会不会出现死循环或者递归没有结束条件啥的追问

你好!不是死循环,当我把几层的变量区间设置小的时候,就能很快输出运算结果的。编译已经结束,当运行时,鼠标一直跳,就是没有运行结束的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-14
编译器不好。换一个。代码都写的出来。编译时间不会长到离谱的。编译的时间嘛。只能等了。
或者分开编译。把函数独立成单文件。每一个单独编译。可以预估编译时间。碰到编译时间特别长的函数就是问题的关键了。这样可以缩小问题范围。然后,就是革命,优化算法的问题了。追问

是运行时间比较长的。谢谢!

第2个回答  2013-05-14
编译时间长短和多重循环 和运算次数多没有关系, 和源文件复杂程度有关。
用make, 开启编译输出。

我看错了, 没有看到补充。

看看cpu利用率。 单核如果cpu 利用率 90%以上,双核 每个都是 50%左右的话, 则可能有死循环。如果没有死循环, 则可以打印日志。追问

pentium(r) dual-core cpu e5700 3.3GHz 运行cpu使用率50% 左右。当我把几层的变量区间设置小的时候,就能很快输出运算结果的。

追答

1.如果是想看运行时各个状态, 则可以打印log
2.如果想减小运行时间,a.优化算法。b。由于cpu是双核, 则可以考虑用并行计算,用并行函数库。
3.如果只是想看看总共运行的时间, 则计算出运行时间即可。 方法其他网友有所提到。

希望能帮助到你。

追问

谢谢,并行不会的,就是想想啊,如果循环10层,每层变量变化100,那么运算的次数就是100的10次方,运行较慢啊!谢谢高手!

第3个回答  2013-05-14
如果要减少时间 那么优化代码,或者直接改进算法
如果要预测时间,那么大致估计一下循环的次数,然后在固定的某个循环中加一个打印,通过打印频率来估算总时间
相似回答