返回信息流比如
for (循环100000次)
{
第一个函数
第二个函数
第三个函数
第四个函数
}
和
for (循环100000次)
{
第一个函数
}
for (循环100000次)
{
第二个函数
}
for (循环100000次)
{
第三个函数
}
for (循环100000次)
{
第四个函数
}
有区别么
这是一条镜像帖。来源:北邮人论坛 / cpp / #99607同步于 2019/11/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
一个循环内执行多次计算,和多个循环每次执行一次计算,效率有
sharonyue
2019/11/22镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 mitemd 的大作中提到: 】
: 首先循环判断条件和自增变量肯定多了几次,但应该无伤大雅。
: 其次是要看这些函数之间有什么关系,假如函数之间完全独立无依赖,应当是没什么效率上的差别。
是无依赖的,但后面感觉循环了40万次,第一种感觉循环了10万次... 虽然总共执行的函数都是40万次
【 在 sjjyyaocan 的大作中提到: 】
: 你直接实验比较一下啊
暴力啊老铁.... 目前我这个算法不太好重写代码呢.. 就是因为这个,我觉得值不值得花费精力重新写一下呢?如果有区别的话
【 在 sharonyue 的大作中提到: 】
:
: 暴力啊老铁.... 目前我这个算法不太好重写代码呢.. 就是因为这个,我觉得值不值得花费精力重新写一下呢?如果有区别的话
不就是比较这两种循环方式么?实验把这四个函数定义为最简单的运算不行么?
【 在 sjjyyaocan 的大作中提到: 】
: 不就是比较这两种循环方式么?实验把这四个函数定义为最简单的运算不行么?
妥老铁的福,我硬生生写了一个:
#include <iostream>
#include<ctime>
using namespace std;
int main()
{
clock_t startTime, endTime;
double a = 1.2;
double b = 1.4;
double c = 2.345333;
int iter = 1000000;
startTime = clock();
for (int i = 0; i < 4*iter; i++)
{
a = b/c;
a = b/c;
a = b/c;
a = b/c;
}
endTime = clock();
cout << "The run time is: " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;
startTime = clock();
for (int i = 0; i < iter; i++)
{
a = b/c;
}
for (int i = 0; i < iter; i++)
{
a = b/c;
}
for (int i = 0; i < iter; i++)
{
a = b/c;
}
for (int i = 0; i < iter; i++)
{
a = b/c;
}
endTime = clock();
cout << "The run time is: " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;
return 0;
}
输出是
The run time is: 0.029882s
The run time is: 0.011877s
求分析
可以复制到这里运行 https://www.onlinegdb.com/online_c++_compiler