gpt4 book ai didi

c++:简单的多线程示例不比单线程快

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:37 24 4
gpt4 key购买 nike

我用 C++ 编写了一个非常简单的多线程示例。为什么多线程和单线程的执行时间几乎相同?

代码:

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

using namespace std;

// function adds up all number up to given number
void task(int number)
{
int s = 0;
for(int i=0; i<number; i++){
s = s + i;
}
}

int main()
{

int n = 100000000;

////////////////////////////
// single processing //
////////////////////////////

clock_t begin = clock();

task(n);
task(n);
task(n);
task(n);

clock_t end = clock();
double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
cout << "time single-threading: "<< elapsed_secs << " sec" << endl;

////////////////////////////
// multiprocessing //
////////////////////////////

begin = clock();

thread t1 = thread(task, n);
thread t2 = thread(task, n);
thread t3 = thread(task, n);
thread t4 = thread(task, n);

t1.join();
t2.join();
t3.join();
t4.join();

end = clock();
elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
cout << "time multi-threading: " << elapsed_secs << " sec" << endl;

}

对我来说程序的输出是

time single-threading: 0.755919 sec 
time multi-threading: 0.746857 sec

我编译我的代码

g++ cpp_tasksize.cpp -std=c++0x -pthread

我在 24 核 linux 机器上运行

最佳答案

clock() 测量处理器时间,即您的进程花费在 cpu 上的时间。在多线程程序中,它会增加每个线程在您的 cpu 上花费的时间。据报告,您的单线程和多线程实现需要大约相同的时间来运行,因为它们总体上执行相同数量的计算。

您需要测量挂钟时间。如果您想测量挂钟时间,请使用 chrono 库。

#include <chrono>

int main ()
{
auto start = std::chrono::high_resolution_clock::now();

// code section

auto end = std::chrono::high_resolution_clock::now();
std::cout << std::chrono::duration<double, std::milli>(end - start).count() << " ms\n";
}

关于c++:简单的多线程示例不比单线程快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44483115/

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