gpt4 book ai didi

c++ - concurrency::parallel_sort 开销和性能影响(经验法则)?

转载 作者:行者123 更新时间:2023-11-28 04:55:57 35 4
gpt4 key购买 nike

最近我偶然发现了一个非常大的性能改进——我说的是 4 倍的改进——只需更改一行代码。我刚刚将 std::sort 调用更改为 concurrency_parallel 排序

// Get a contiguous vector copy of the pixels from the image.

std::vector<float> vals = image.copyPixels();

// New, fast way. Takes 7 seconds on a test image.

concurrency::parallel_buffered_sort(vals.begin(), vals.end());

// Old, slow way -- takes 30 seconds on a test image
// std::sort(vals.begin(), vals.end());

这是针对大图像的,将我的处理时间从 30 秒缩短到 7 秒。然而,有些情况会涉及小图像。我不知道我是否可以或应该盲目地这样做。

我想明智地使用 parallel_sort、parallel_for 等,但我想知道在它成为帮助之前需要跨越什么阈值(根据要排序/迭代的元素数量)不是障碍。

我最终会进行一些冗长的性能测试,但目前我没有太多时间这样做。我想让它在“大多数”时间更好地工作,而不是在任何时候(或至少很少)损害性能。

在这方面有经验的人可以给我一个合理的经验法则,在“大多数”情况下对我有帮助吗?有吗?

最佳答案

RandomIterator 的要求和带有 const size_t _Chunk_size = 2048 参数的重载的存在,控制序列化的阈值,意味着库作者意识到了这个问题。因此,可能仅使用 concurrency::parallel_* 作为 std::* 的替代品就可以了。

关于c++ - concurrency::parallel_sort 开销和性能影响(经验法则)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47130420/

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