gpt4 book ai didi

java多线程性能扩展

转载 作者:行者123 更新时间:2023-12-01 05:11:08 26 4
gpt4 key购买 nike

你能给我解释一下这些废话吗?我有一种基本上用数学运算填充数组的方法。不涉及任何 I/O 或任何东西。现在,这个方法需要大约 50 秒的时间来运行,并且代码是完全可扩展的(理论上是 100%),所以我将其分成 4 个线程,等待它们完成,然后重新组装 4 个数组。现在,我在四核处理器上运行该程序,预计需要大约 15 秒,实际需要 58 秒。没错:需要更长的时间!我看到 cpu 100% 工作,并且我知道每个线程执行 1/4 的计算,创建线程和重新组装数组总共需要大约 1-2 毫秒。是什么导致了如此大的性能损失? cpu这段时间到底在做什么?代码:http://pastebin.com/cFUgiysw

最佳答案

线程不是这样工作的。

线程仍然是同一进程的一部分(取决于操作系统),因此就操作系统而言 - 1 个进程中的 4 个线程的 CPU 时间将与 1 个进程中的 1 个线程的 CPU 时间安排相同。

此外,由于值的数量如此之少,您将无法在开销中看到可扩展性。在java中重新组装数组的成本很高。

查看诸如“上下文切换开销”之类的内容 - 当您尝试将理论映射到实践时,此类内容总是会让您感到困惑:P

我会坚持使用单线程方式:)

~丹

http://en.wikipedia.org/wiki/Context_switch

关于java多线程性能扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017062/

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