sách gpt4 ai đã đi

Toán tử thời gian+, toán tử-, toán tử* và toán tử/

In lại 作者:行者123 更新时间:2023-11-28 07:33:15 30 4
mua khóa gpt4 Nike

我有一个运算符重载的简单数学 vector 类。我想为我的运算符(operator)获取一些计时结果。我可以通过计时以下代码轻松计时我的 +=、-=、*= 和/=:

Vector sum;
for(size_t i = 0; i
sum += RandVector();
cout << sum << endl;

然后我可以减去生成 iter 随机 vector 所需的时间。在我的测试中,Vector 是 3 维的,iter = 10,000,000。

我尝试用 +,-,*,/做类似的事情:

Vector sum;
for(size_t i = 0; i
sum = sum + RandVector();
cout << sum << endl;

然后减去生成 iter 随机 vector 和执行 iter 赋值所花费的时间,但这给出了一个“负”时间,让我相信编译器正在以某种方式优化操作,或者发生了一些奇怪的事情。

我在 Fedora Linux 机器上使用 gcc-4.7.2 和 -O3。

这是我的时间代码:

clock_t start, k = clock();
do start = clock();
while(start == k);

F()();

clock_t end = clock();

double time = double(end-start)/double(CLOCKS_PER_SEC);
cout << time - time_iter_rand_v - time_iter_ass;

这里的 F 是一个执行上述代码的函数对象。 time_iter_rand_v 是创建 iter 随机 vector 所花费的时间,time_iter_ass 是 iter 赋值操作所花费的时间。

我的问题是如何仅对 operator+ 函数进行准确计时,而不是对任何赋值或随机 vector 生成进行计时?

1 Câu trả lời

当优化开启时,您真的无法为类似的事情获得准确的时间。原因在于编译器具有移动代码的能力。

如果使时间存储变量可变,则它们之间的相对位置不会因移动而受到优化。但是,它们周围的代码是,除非它们正在分配或调用采用易变变量的函数(这包括使 *this 易变的易变成员函数)。

如果您期望线性执行,优化可以对代码做很多奇怪的事情。

关于c++ - 时序运算符+、运算符-、运算符*和运算符/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245899/

30 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com