在此Brainfuck v2.0 benchmark ,Java version似乎相当于 Kotlin version据我所知。
但是,它的运行速度要慢两倍,并且使用更多的内存。这是为什么?
我希望它们具有非常相似的内存和速度特征,因为两者都在 JVM 上运行。
最佳答案
免责声明:Kotlin 基准代码是我贡献的结果。
如果您比较 Java 和 Kotlin 版本的代码,您会发现它们实际上是不同的。每个都使用相应编程语言的惯用方法来编码操作。
Java 版本使用
enum OpT
与class Op
相结合。为了运行 Brainfuck 代码,它在枚举上使用惯用的 Javaswitch (op.op)
来选择要执行的操作。Kotlin 版本在利用 Kotlin 的流敏感类型(也称为智能类型)的操作类型上使用
密封类 Op
和惯用的 Kotlinwhen (op)
强制转换)以获得漂亮且可读的代码。
事实证明,惯用的 Kotlin 代码在 JVM 上执行速度更快(没有特别充分的理由)。您可以使用与 Kotlin 中相同的方法重写 Java 代码,并且您将获得相同的性能,但是这样的 Java 代码在 Java 中看起来很难看,并且不能被视为 Java 中的惯用实现。
关于java - 为什么 Kotlin 解释 Brainfuck 的速度比 Java 快得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277267/