Replace switch
キーワード switch 文は複数条件の判定に使用され、if-else 文と機能が似ており、性能も似ています。したがって、switch ステートメントがシステムのパフォーマンスを低下させるとは言えません。ただし、ほとんどの場合、switch ステートメントにはパフォーマンスを改善する余地がまだあります。
次の例を見てください:
public static void main(String[] args) { long start = System.currentTimeMillis(); int re = 0; for (int i = 0;i<1000000;i++){ re = switchInt(i); System.out.println(re); } System.out.println(System.currentTimeMillis() - start+"毫秒");//17860 } public static int switchInt(int z){ int i = z%10+1; switch (i){ case 1:return 3; case 2:return 6; case 3:return 7; case 4:return 8; case 5:return 10; case 6:return 16; case 7:return 18; case 8:return 44; default:return -1; } }
分岐ロジックに関する限り、このスイッチ モードのパフォーマンスは悪くありません。しかし、スイッチを置き換える新しいアイデアを使用して、同じプログラムの機能を実現すると、パフォーマンスには改善の余地がたくさんあります。
public static void main(String[] args) { long start = System.currentTimeMillis(); int re = 0; int[] sw = new int[]{0,3,6,7,8,10,16,18,44}; for (int i = 0;i<1000000;i++){ re = arrayInt(sw,i); System.out.println(re); } System.out.println(System.currentTimeMillis() - start+"毫秒");//12590 } public static int arrayInt( int[] sw,int z){ int i = z%10+1; if (i>7 || i<1){ return -1; }else { return sw[i]; } }
上記のコードは、switch ステートメントの代わりに連続配列を使用するという新しいアイデアを使用しています。データへのランダムアクセスは非常に高速であるため、少なくともスイッチ分岐判断よりも優れています。実験によると、switch を使用したステートメントには 17860 ミリ秒かかりましたが、配列を使用した実装には 12590 ミリ秒しかかからず、5 秒以上改善されました。ソフトウェア開発では、switch ステートメントの代わりに配列を使用するなど、考え方を変えるとより良い結果が得られる場合があります。
以上がJavaでスイッチを置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。