Replace switch
키워드 switch 문은 다중 조건 판단에 사용됩니다. switch 문의 기능은 if-else 문과 유사하며 둘의 성능도 비슷합니다. 따라서 스위치 문이 시스템 성능을 저하시킨다고는 말할 수 없습니다. 그러나 대부분의 경우 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]; } }
위 코드는 스위치 문 대신 연속 배열을 사용하는 새로운 아이디어를 사용합니다. 데이터에 대한 무작위 액세스는 매우 빠르기 때문에 적어도 스위치 분기 판단보다 낫습니다. 실험을 통해 스위치를 사용한 명령문은 17860ms가 걸렸고, 배열을 사용한 구현은 12590ms만 소요되어 5초 이상 개선되었습니다. 소프트웨어 개발에서는 생각을 바꾸면 더 나은 결과를 얻을 수 있습니다. 예를 들어 스위치 문을 대체하기 위해 배열을 사용하는 것이 좋은 예입니다.
위 내용은 Java에서 스위치를 교체하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!