<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Alan Bateman <<a href="mailto:Alan.Bateman@oracle.com">Alan.Bateman@oracle.com</a>> schrieb am Mo., 3. Apr. 2023, 09:38:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 01/04/2023 21:00, Attila Kelemen wrote:<br>
> Hi,<br>
><br>
> I bumped into this article (actually a while ago, but only now did I<br>
> start to experiment with the performance myself):<br>
> <a href="https://apiumhub.com/tech-blog-barcelona/project-loom-and-kotlin-some-experiments" rel="noreferrer noreferrer" target="_blank">https://apiumhub.com/tech-blog-barcelona/project-loom-and-kotlin-some-experiments</a><br>
> comparing Kotlin coroutines vs. virtual threads.<br>
><br>
> Though I don't think the article itself is a fair measure of Loom's<br>
> performance (given that most applications do not involve 100k threads<br>
> sleeping as their main purpose). Especially because when I did a<br>
> comparison with tasks actually doing some CPU work, then the results<br>
> were way in favor of Loom.<br>
><br>
> Still, I find it strange that Kotlin coroutines can heavily outperform<br>
> Loom in the case when there is almost nothing but waiting (especially<br>
> in the case of timed waiting). Can anyone shed a light on why this can<br>
> happen? Is this because of a particular trade-off choice?<br>
<br>
 From a quick read, this seems to be more about Thread.sleep vs. <br>
coroutine delay.  Thread.sleep(0) reschedules the current thread whereas <br>
the documentation for delay(0) suggests it's a no-op.  For the >0 case, <br>
there is further work needed to improve virtual Thread.sleep. Right now <br>
it is based on a STPE and there can be contention on</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"></blockquote></div></div><div dir="auto"><br></div><div dir="auto">What is "STPE"?</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> its work queue. We <br>
have done some early experiments with hierarchical timing wheels that <br>
show promise. There have also been suggestions to use the OS timer <br>
facility. So improvements should come in time, it's just that other <br>
areas have been higher priority to date.<br>
<br>
Best to follow-up on loom-dev rather than here, esp. if you have your <br>
own benchmarks to discuss.<br>
<br>
-Alan.<br>
</blockquote></div></div></div>