私はこのquestionの回答を見ていました。instanceofはポリモーフィックコールよりもどのように速くなりますか?
instanceof
がequals
のような多型呼び出しよりも速く判明した可能性があります。
私はこのquestionの回答を見ていました。instanceofはポリモーフィックコールよりもどのように速くなりますか?
instanceof
がequals
のような多型呼び出しよりも速く判明した可能性があります。
あなたはあまりにも多くのアップフォースを得るのではなく、地面にdownvotedするべきであるthis answerを指していると思います。まず、テスト中の実際のコードを表示せずにベンチマークツールの名前をつけて投稿した数字は、質の高い解答ではなく(おそらく)興味深いコメントであると考えられるべきです。
第2に、この回答は、全く関係のない2つの操作、つまりString
の等価チェックとinstanceof
演算子を比較します。その答えは、(あなたのような)読者に、Javaのメソッドディスパッチのコストについてのあらゆる知見があると考えるように誤解しますが、そのコストを孤立して測定する方法はありません。 作業X(文字列比較のような)を実行するメソッドを呼び出すコストを測定する場合、基本的に呼び出しコストではなく作業X(文字列比較)のコストを測定しています。 instanceof
は文字列の比較を実行しないので、String.equals
を呼び出すよりも動作が少ないことは明らかです。特にString.equals(Object)
の実装では、引数にinstanceof
があります。
String.equals
を呼び出すと、instanceof
操作を実行するよりもコストがかかり、まったく異なる質問に対する回答が得られます。リンクされた答えは、これが実際に起こったことを証明するのに十分ではありません。 10,000,000回のループに対して80±17msと168±62msを測定することは、ループ本体の実際のコストが統計的ノイズの深いところに埋もれているという明確な兆候です。
さらに、String.equals
は多型呼び出しを考慮することさえできません。
あなたは、Gistコードとグラフで長く詳細な答えを意味しますか?その答えはインスタンスである、壊れたマイクロベンチマークではすべてが可能です。 –
あなたはすでにあなたの答えをリンクしています==残りの==残りのリンクされた質問と同様、リンクのすべての答えを探せます –
@マルコトポルニク:いいえ、長くて詳細な答えはそのような主張をしません。私は、この質問は2つの全く関係のない操作(文字列の等価性チェックと 'instanceof'演算子)を比較する、2番目に(望ましくない)upvoted質問を参照します。 – Holger