gpt4 book ai didi

multithreading - clojure reduce 函数使用所有内核,即使它看起来是单线程的

转载 作者:行者123 更新时间:2023-12-03 12:46:23 26 4
gpt4 key购买 nike

(defn sum [numbers]
(reduce + numbers))

(def numbers (into [] (range 0 100000000)))

(time (sum numbers))

上面是运行的代码。

简单地把很多数字相加。

这一行在repl中执行了多次:
(时间(总和数))每次它几乎让所有内核都完全运行。

enter image description here

查看 jvisualvm,并没有创建很多线程。

但这段代码使用了我的 6 核笔记本电脑上可用的所有 12 个超线程。

幕后发生了什么使这成为可能?

最佳答案

感谢评论。

这与范围的大小有关。

在我的笔记本电脑上,当它有大约 7000 万个数字时,一切都很好。

当它达到大约 8000 万时,堆大小增长很多,所用时间增长非常显着,所有内核都开始工作。视觉 vm 显示更多的 GC 事件正在发生。

所以上面的评论可能是正确的,它与GC有关。

关于multithreading - clojure reduce 函数使用所有内核,即使它看起来是单线程的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65040569/

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