小编m. *_* bs的帖子

为什么多线程for循环的性能不如单线程?

我认为使用多线程处理简单和繁重的工作(例如矩阵计算)比使用单线程更好,所以我测试了以下代码:

int main()
{
    constexpr int N = 100000;

    std::random_device rd;
    std::mt19937 mt(rd());
    std::uniform_real_distribution<double> ini(0.0, 10.0);

    // single-thread
    {
        std::vector<int> vec(N);
        for(int i = 0; i < N; ++i)
        {
            vec[i] = ini(mt);
        }

        auto start = std::chrono::system_clock::now();

        for(int i = 0; i < N; ++i)
        {
            vec[i] = 2 * vec[i] + 3 * vec[i] - vec[i];
        }

        auto end = std::chrono::system_clock::now();
        auto dur = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
        std::cout << "single : " << dur << " ms."<< std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ performance multithreading c++11 stdasync

6
推荐指数
1
解决办法
2425
查看次数

标签 统计

c++ ×1

c++11 ×1

multithreading ×1

performance ×1

stdasync ×1