哪些调用方法的方式给我最好的性能
What ways of calling methods give me the best performance
我想问的是有没有
final Cat c = getBlackCat();
polishCat(c);
或
polishCat(getBlackCat());
那些编译成同一个东西吗?最佳做法是什么?什么是内存明智和 cpu 明智更好?
在字节码级别,您必须始终显式存储一个方法调用的结果,以便能够将其提供给下一个方法调用。您可以将 Java 中的 "nested calls" 习语视为其语法糖。所以是的,这两段代码是等价的。
在风格上哪个更受欢迎是有争议的,并且有支持任何一个的论点。我赞成这样的论点,即每次您在代码中明确命名一个事物时,reader 就产生了记住该名称及其所指的内容的义务。如果变量不是最终的,那么 reader 必须另外仔细跟踪变量的所有用法,以免在其他地方有另一个赋值,即使是偶然的(例如,使用 =
而不是 ==
).如果您内联调用方法,则不会强加这种认知负担。
我想问的是有没有
final Cat c = getBlackCat();
polishCat(c);
或
polishCat(getBlackCat());
那些编译成同一个东西吗?最佳做法是什么?什么是内存明智和 cpu 明智更好?
在字节码级别,您必须始终显式存储一个方法调用的结果,以便能够将其提供给下一个方法调用。您可以将 Java 中的 "nested calls" 习语视为其语法糖。所以是的,这两段代码是等价的。
在风格上哪个更受欢迎是有争议的,并且有支持任何一个的论点。我赞成这样的论点,即每次您在代码中明确命名一个事物时,reader 就产生了记住该名称及其所指的内容的义务。如果变量不是最终的,那么 reader 必须另外仔细跟踪变量的所有用法,以免在其他地方有另一个赋值,即使是偶然的(例如,使用 =
而不是 ==
).如果您内联调用方法,则不会强加这种认知负担。