Tag: 基准

为什么线程显示比协程更好的性能?

我写了3个简单的程序来测试协程在线程上的性能优势。 每个程序都做了很多简单的计算。 所有的程序都是分开运行的。 除了执行时间外,我还通过Visual VM IDE插件测量了CPU的使用情况。 第一个程序使用1000-threaded池进行所有计算。 由于频繁的上下文更改, 64326 ms代码显示了最差的结果( 64326 ms ) val executor = Executors.newFixedThreadPool(1000) time = generateSequence { measureTimeMillis { val comps = mutableListOf<Future>() for (i in 0..1_000_000) { comps += executor.submit { computation2(); 15 } } comps.map { it.get() }.sum() } }.take(100).sum() println(“Completed in $time ms”) executor.shutdownNow() 第二个程序具有相同的逻辑,而不是1000-threaded池,它只使用n-threaded池(其中n等于机器内核的数量)。 它显示更好的结果( 43939 ms […]