[解決済み] Javaでinstanceofを使用することによるパフォーマンスへの影響
質問
あるアプリケーションを制作しているのですが、あるデザインアプローチでは
instanceof
演算子を使用します。OO設計では一般的に
instanceof
というのは別の話で、この質問は純粋にパフォーマンスに関するものです。パフォーマンスへの影響はあるのでしょうか?と同じように速いのでしょうか?
==
?
例えば、ある基本クラスと10のサブクラスがあるとします。ベースクラスを受け取る1つの関数で、そのクラスがサブクラスのインスタンスであるかどうかをチェックし、いくつかのルーチンを実行します。
この問題を解決するために私が考えた他の方法のひとつは、quot;type id"という整数プリミティブを代わりに使い、サブクラスのカテゴリをビットマスクで表現し、サブクラスのquot;type id"とカテゴリを表す定数マスクとのビットマスク比較のみを行うことでした。
は
instanceof
それよりも速くなるように、JVMによって何らかの最適化が行われているのでしょうか?私はJavaにこだわりたいのですが、アプリのパフォーマンスは重要です。この道を歩んだことのある人が何かアドバイスしてくれるとうれしいです。私は、最適化するために間違ったことに焦点を当てたり、あまりに細かいことを言うでしょうか?
解決方法は?
最近のJVM/JITコンパイラは、instanceof、例外処理、リフレクションなど、伝統的に"slow"な操作のほとんどについて、パフォーマンスへの打撃を除去しています。
Donald Knuthが書いたように、"97%程度の小さな効率は忘れるべきだ。早まった最適化は諸悪の根源だ。" instanceofのパフォーマンスはおそらく問題にならないだろうから、それが問題だと確信するまでは、エキゾチックな回避策を考えて時間を無駄にしないことだ。
関連
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
linux run jarfile Invalid or corrupt jarfile error.
-
IDEA パッケージステートメントの欠落
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
Spring Boot による HTTPS アクセスの設定
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
javaでよく使われる英単語
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み] instanceofとClass.isAssignableFrom(...)の違いは何ですか?