小编try*_*arn的帖子

为什么需要“final”和“mut”这样的关键字?

https://www.baeldung.com/java-final-performancefinal该博客给出了在java中 使用关键字来提高性能的示例。这是他们给出的例子:

public static String concatNonFinalStrings() {
    String x = "x";
    String y = "y";
    return x + y;
}

public static String concatFinalStrings() {
    final String x = "x";
    final String y = "y";
    return x + y;
}
Run Code Online (Sandbox Code Playgroud)

显然,编译器将优化concatFinalStrings()为仅返回"xy". 为什么编译器不能对 做同样的事情concatNonFinalStrings()x并且y范围有限,并且从未在其他地方使用过。那么,编译器当然应该能够将它们视为最终的吗?不可能有一些外部实体可以改变x和的值y,因为它们在函数外部是不可访问的。我链接的博客将这些称为“有效最终”,并指出编译器不会对“有效最终”变量执行代码优化。为什么不?

此外,为什么mutRust 中存在这样的关键字?也许在 Java 中这是有意义的,你可以拥有公共变量,并且你不知道还.class存在哪些其他文件,但在 Rust 中,如果整个过程立即编译,那么编译器肯定可以mut通过查看哪些变量发生变化来推断出哪些变量。他们的价值?现在这些是否只是为了使代码更清晰而存在,而实际上并没有提供任何类型的优化?

java rust

2
推荐指数
1
解决办法
189
查看次数

标签 统计

java ×1

rust ×1