コンパイラによって最適化された同じ文で同じメソッドへの複数の呼び出しがありますか?

マグナスで:

のは、私は、Java 8(特にアンドロイド)でこのような何かを言ってみましょう

String name = someObject.getName() != null ? someObject.getName() : "null";

そしてこの方法は、getName()名前を解決するために、他のメソッドの呼び出しの多くを持っているかもしれません。また、私はかなり頻繁にこのコードを呼んでいると仮定します。

それが良いだろう、パフォーマンスが賢明、この代わりのようなものを行うには?

String name = someObject.getName();
name = name != null ? name : "null";
ユージン:

呼ばれる可能性の最適化、のようなこのルックスCSEJVM私の知る限りでは(ただし必ずAndroidの程度)ことを行います。

しかし、これは非常にどのように依存しgetName、それは内部的に他のオブジェクトを割り当て、いくつかの他の事をした場合、ありません。残念ながら、私もどのように言うことができないことを証明するために私が間違っているか、右ここ(調査する必要がある場合があります)。正直私はこの自分自身を行うことの習慣を持っています。例えば:

for(int i=0;i<list.size();++i){

}

私はいつも抽出しようとint size = list.size()ループの前に。これは私の理解での対象となる場合にもscalar replacement最適。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=203649&siteId=1