背景:
我一直在寻找一种语言来代替Java进行游戏开发。Kotlin提供了良好的IDE支持和Java互操作,看起来很有前途。但是游戏(特别是Android )的FPS杀手之一是GC的使用。因此,一些库(如libgdx)使用对象池、自定义集合和其他技巧来避免频繁的GC运行。对于Java来说,这是可以清楚地完成的。其他一些JVM语言--尤其是功能支持--本质上使用了大量的GC,因此很难避免。
问题:
发布于 2015-07-02 08:33:01
根据经验,Kotlin生成的字节码尽可能接近Java生成的字节码。因此,例如,如果您使用一个函数作为值,就会创建一个内部类,就像在Java中一样,但不会有更多。还有一些优化技巧,比如IntArray和inline,可以更好地执行。
正如@Peter所说,衡量你的具体情况的价值总是一个更好的主意。
发布于 2020-04-16 18:52:47
您可以为JVM编写Kotlin代码,这将导致与Java相应逻辑相同的分配。在这两种情况下,您都必须仔细检查库调用是否在堆上分配新内存。结合使用Kotlin和LibGDX不会引入任何不可见的GC开销。这是一种有效的方法,并且运行良好(特别是使用ktx扩展)。
但是,有一些Kotlin语言特性可以帮助您以更少的分配来编写代码。
但是还有另一种选择,它确实给了您不同的内存管理行为。感谢Kotlin多平台,您可以将游戏逻辑编写为Kotlin公共模块,并将其交叉编译为本机代码或Javascript。
我在一个游戏项目示例糖果碎屑克隆中这样做。它与科奇一起工作,这是一个为Kotlin开发的现代多平台游戏引擎。游戏运行在JVM上,作为HTML web应用程序,并在Win、Linux、Mac、Android或IOS中作为本机二进制程序运行。
本机编译的代码有自己的更简单的垃圾收集和can 跑得更快。因此,速度增长和不同的内存管理可能会给您的权力储备,以麻烦更少的GC。
总之,我可以为Game推荐Kotlin,也可以推荐GC关键场景。在我的项目中,当我编写Kotlin代码时,我倾向于创建更多的类并分配更多的内存。但这是一个编程风格的问题,而不是一个技术性的问题。
发布于 2015-12-27 05:28:32
从技术上讲,您将Kotlin与Java进行比较的问题是没有意义的,它们将执行相同的操作。但科特林将是一个更好的发展经验。
如果Java适合编写游戏,那么Kotlin只会因为开发人员的生产力而更好。
注意:游戏库LWJGL 3部分使用Kotlin,GitHub统计数据显示67.3%的代码是Kotlin (模板模块看起来大部分是Kotlin)。因此,询问与LWJGL合作的人会给你这个问题最好的答案,因为他们在这方面有很多经验。

https://stackoverflow.com/questions/31059842
复制相似问题