Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;大型阵列的性能_C++_Performance_C++14_Stdthread_Large Data - Fatal编程技术网

C++ C++;大型阵列的性能

C++ C++;大型阵列的性能,c++,performance,c++14,stdthread,large-data,C++,Performance,C++14,Stdthread,Large Data,我有大字符阵列(614400)和高性能视频流应用程序(100fps,1帧10ms)。 在1帧中,我必须修改我的帧,并用于这8个线程 什么更快: 1.逐个访问线程1中的每个元素, EG螺纹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

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

什么更快: 1.逐个访问线程1中的每个元素, EG螺纹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;
workers=newstd::thread*[workersCount];
对于(int j=0;jjoin();
删除工人[j];
}
删除工人;

对两者进行分析,并查看差异,这是唯一可以确定的方法。我想,由于预取和缓存友好性,让每个线程生成一个连续块的速度会更快,但只有测量才能让您确定。

我怀疑测量可以回答您的问题,即什么(如果有的话)更快。您是否为每个帧创建和销毁线程?o、 我知道,这是错误的方式,但现在不知道如何实施。现在我在构造函数中寻找init 8无限线程,它在等待新的帧。有什么想法,如何捕捉等待新帧的线程吗?因为在这之后,我必须对这些数据做更多的处理。是的,每个线程必须创建一次,同意。你能推荐线程数吗?这个值与CPU核心有关吗?@Nick我想你应该使用GPU,CPU有那么多线程。。任何超过内核数量的东西都只会对性能产生负面影响,非服务器CPU有4到16个内核。。GPU以几十个开始,以几千个结束。但在您的例子中,主要性能影响是线程的创建和销毁,而不是指针数组的访问。