【发布时间】:2020-08-14 11:29:15
【问题描述】:
- 创建了一个包含 10000 个元素的向量,初始化为 5,并使用 chrono 计算时间。
auto startTime = high_resolution_clock::now();
vector<int> v(10000, 5);
for(auto& a : v)
a *= a;
auto stopTime = high_resolution_clock::now();
auto duration = duration_cast<nanoseconds>(stopTime - startTime);
cout<<"time: "<<duration.count()*1000<<" microsec\n"; //98362000 microsec
- 创建了一个包含 10000 个元素的列表,初始化为 5。
from datetime import datetime
start = datetime.now()
a = [5]*10000
a = [a ** 2 for a in a]
end = datetime.now()
diff = end - start
print("time: ", diff.microseconds , " microseconds") //1542 microseconds
从上面看,python 显然是赢家,但作为 c++ 较低级别(我觉得)为什么它的 python 慢?
我知道 chrono 和 datetime 包的时间计算算法可能不同,但是向量(c++)和列表(python)的比较基准是什么?
【问题讨论】:
-
//98362000 微秒,98 秒?你确定吗?
-
要将纳秒转换为微秒,您需要除以 1000,而不是相乘。您的 C++ 代码实际上比您的 Python 代码花费的时间要少得多。
-
确保您测试的是优化的发布版本,而不是未优化的调试版本。
-
请注意,C++ 编译器可能会完全删除您的整个代码,因为它没有做任何有意义的事情。执行时间可能为0。