我有大型字符数组(614400)和高性能的视频流应用程序(100fps,1帧10ms)。
在1帧中,我必须修改我的帧,并用于这8个线程。

什么更快:
1.通过1访问线程1中的每个元素
e。 G。线程1(1,2,3,... n)
线程2(n + 1,n + 2,... n * 2)
...
2.下一个访问元素:
线程1(1,9,17 ...)
线程2(2,10,18)
...
有什么方法可以更快?现在我有第二种方法:

workers = new std::thread*[workersCount];
for ( int j = 0; j < workersCount; j++){
    workers[j] = new std::thread(&parameterController::extractPart, this, j*2, workersCount*2);
}
for ( int j = 0; j < workersCount; j++){
        workers[j]->join();
        delete workers[j];
    }
delete workers;

最佳答案

剖析两者并查看差异,这是唯一可以确保的方法。我猜由于预取和缓存友好,让每个线程产生一个连续的块会更快,但是只有测量才能使您确定。

关于c++ - 大型数组的C++性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43933793/

10-09 04:10