gpt4 book ai didi

performance - 我的代码中是否有开销使我的线程运行速度变慢[C++]

转载 作者:行者123 更新时间:2023-12-03 07:07:08 25 4
gpt4 key购买 nike

我创建了两个程序,用于查找2个矩阵的行列式,其中一个使用线程,另一个不使用线程,然后记录完成计算所需的时间。线程脚本似乎比没有线程的脚本要慢,但是我看不到任何可能造成开销问题的东西。任何帮助表示赞赏,谢谢。
线程脚本:

#include <iostream>
#include <ctime>
#include <thread>

void determinant(int matrix[3][3]){
int a = matrix[0][0]*((matrix[1][1]*matrix[2][2])-(matrix[1][2]*matrix[2][1]));
int b = matrix[0][1]*((matrix[1][0]*matrix[2][2])-(matrix[1][2]*matrix[2][0]));
int c = matrix[0][2]*((matrix[1][0]*matrix[2][1])-(matrix[1][1]*matrix[2][0]));
int determinant = a-b+c;
}

int main() {
int matrix[3][3]= {
{11453, 14515, 1399954},
{13152, 11254, 11523},
{11539994, 51821, 19515}
};
int matrix2[3][3] = {
{16392, 16999942, 18682},
{5669, 466999832, 1429},
{96989, 10962, 63413}
};
const clock_t c_start = clock();
std::thread mat_thread1(determinant, matrix);
std::thread mat_thread2(determinant, matrix2);
mat_thread1.join();
mat_thread2.join();
const clock_t c_end = clock();
std::cout << "\nOperation takes: " << 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC << "ms of CPU time";
}
除了主线程外没有其他线程的脚本:
#include <iostream>
#include <ctime>
#include <thread>

void determinant(int matrix[3][3]){
int a = matrix[0][0]*((matrix[1][1]*matrix[2][2])-(matrix[1][2]*matrix[2][1]));
int b = matrix[0][1]*((matrix[1][0]*matrix[2][2])-(matrix[1][2]*matrix[2][0]));
int c = matrix[0][2]*((matrix[1][0]*matrix[2][1])-(matrix[1][1]*matrix[2][0]));
int determinant = a-b+c;
}

int main() {
int matrix[3][3]= {
{11453, 14515, 1399954},
{13152, 11254, 11523},
{11539994, 51821, 19515}
};
int matrix2[3][3] = {
{16392, 16999942, 18682},
{5669, 466999832, 1429},
{96989, 10962, 63413}
};
const clock_t c_start = clock();
determinant(matrix);
determinant(matrix2);
const clock_t c_end = clock();
std::cout << "\nOperation takes: " << 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC << "ms of CPU time";
}
PS-第一个脚本在上一次运行中花费了0.293ms,第二个脚本在0.002ms上花费了
再次感谢,
温德尔

最佳答案

区别似乎是两个线程的创建,而加入了。我希望执行此操作(创建和联接)的时间比执行9次乘法和5次加法的时间更多。

关于performance - 我的代码中是否有开销使我的线程运行速度变慢[C++],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64087111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com