C++ TBB:我如何衡量调度开销?
我有一个非常简单的parallel\u for循环,它在一个大向量上做一些工作。虽然这是一个人为的例子,但我希望通过改变粒度来衡量调度的潜在开销。循环如下:C++ TBB:我如何衡量调度开销?,c++,multithreading,tbb,C++,Multithreading,Tbb,我有一个非常简单的parallel\u for循环,它在一个大向量上做一些工作。虽然这是一个人为的例子,但我希望通过改变粒度来衡量调度的潜在开销。循环如下: tbb_start = std::chrono::high_resolution_clock::now(); tbb::parallel_for(tbb::blocked_range<int>(0, values.size(), grainSize), [&](tbb::blocked_range
tbb_start = std::chrono::high_resolution_clock::now();
tbb::parallel_for(tbb::blocked_range<int>(0, values.size(), grainSize),
[&](tbb::blocked_range<int> r)
{
for (int i = r.begin(); i < r.end(); ++i)
{
values[i] = std::sin(i * 0.001);
}
});
tbb_end = std::chrono::high_resolution_clock::now();
loop_duration = (tbb_end - tbb_start);
std::cout << "TBB Time: " << loop_duration.count() << "ms" << std::endl;
tbb_start=std::chrono::high_resolution_clock::now();
tbb::parallel_for(tbb::blocked_范围(0,values.size(),grainSize),
[&](待定::阻塞范围r)
{
对于(int i=r.begin();i std::我可以这样做吗:我能以多快的速度将结果送到我需要的地方?我能做得更好吗?理论是好的,但真正的测量是关键。经验法则身体也应该挑选一些特定的可以改变性能可能是你可以测量每个身体运行到内存中不同位置的时间,以避免通过线程id错误共享。但它也有足够的缺陷)