gpt4 book ai didi

c - 为什么更多的线程需要更多的时间来处理?

转载 作者:行者123 更新时间:2023-11-30 14:48:17 25 4
gpt4 key购买 nike

我有一个 C 代码,可以处理全局数组中的大量数据(80MB,U16)。为了减少所花费的时间,我使用了 pthreads 库。该过程是将每个元素与一个常数相乘。使用2个线程,处理需要50ms。使用三个线程时,需要 120 毫秒(大约)。我也尝试过增加堆栈内存,但没有用。

代码中没有rand()函数或动态分配内存。只需在 2 或 3 个线程中调用一个简单的函数即可。

我想知道如果增加线程数,限制性能的因素是什么?另请建议我如何进一步优化执行时间。

P.S:我的系统有 8GB RAM,Intel i3 处理器。在 Windows 上运行(如果有帮助)

最佳答案

假设您进行了最佳实现(根据问题的不同,这可能非常困难)。

您将 block 分开,没有重叠,并将它们送入线程。

到目前为止一切顺利。

首先,创建和终止(也许还管理)线程需要时间,这会添加到所需的计算时间中。这可能会产生开销,从而损害您的利益。

但我认为更重要的可能是你有一个 i3 处理器,其中很多只有 2 个核心,并且根据是否激活超线程,你还有 2 个逻辑核心。对于此类系统,您无法从超过 2 个线程中受益(如果它们可以使用所有资源),第三个线程可能会妨碍其他两个线程,从而产生更长的运行时间。

关于c - 为什么更多的线程需要更多的时间来处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50525849/

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