Kotlin中的协程与Go中的协程不同,所以哪一个"更快"取决于您正在解决的问题以及您正在编写的代码类型。
一般来说,很难预先告诉哪一个人可以更好地处理您手边的问题。您必须为特定的工作负载运行基准测试。但是,这里是关键差异的一般总结,应该给你一些指导。
Kotlin协程每个简单实例所需的内存少于Go goroutines。 Kotlin中的一个简单协程只占用了几十个字节的堆内存,而Go程序以4KiB的堆栈空间开始。这意味着,如果你打算拥有数百万条协程,那么Kotlin中的协程可能会给你一个优势。它还使得Kotlin协同程序更适合于生成器和惰性序列等非常短暂的小任务。
Kotlin协同程序可以转到任何栈深度,但每个挂起函数的调用都会在堆中为其堆栈分配对象。 Kotlin协同程序中的调用堆栈当前是作为堆对象的链接列表实现的。相反,Go中的goroutines使用线性堆栈空间。这使得在Go中更高效的悬挂在深层堆栈上。因此,如果您正在编写的代码在堆栈中暂停很深,可能会发现goroutines对您更有效。
高效的异步IO是一个非常多维的设计问题。对于某种应用程序而言,高效的方法可能无法为另一种应用程序提供最佳性能。 Kotlin协同程序中的所有IO操作都是用Kotlin或Java编写的库实现的。Kotlin代码提供了各种各样的IO库。在Go中,异步IO由Go运行时使用通用Go代码不可用的基元实现。如果Go方法实现IO操作非常适合您的应用程序,那么您可能会发现它与Go运行时的紧密集成为您带来了优势。另一方面,在Kotlin中,您可以找到一个库或自己编写一个以最适合您的应用程序的方式实现异步IO的库。
Read full article from 哪个协程(goroutines和kotlin协程)更快?
No comments:
Post a Comment