자바 성능 튜닝 - loop (for, while) 성능 향상 By starseat 2024-04-24 16:02:02 java/spring Post Tags [자바 성능 튜닝 이야기](https://product.kyobobook.co.kr/detail/S000001032977) 책을 읽고 정리한 내용 입니다. --- # 조건문 - if, switch-case 반복문 안에서의 조건문 처리에 대해서도 성능을 향상시킬 수 있다. `switch` 문은 jdk 6 버전까진 기본 자료형(byte, short, char, int) 만 사용 가능했지만 jdk 7 버전부터 String 도 사용 가능해졌다. 일반적으로 `if` 문을 많이 사용하면 성능이 느려진다. ## if - 샘플 코드 ```java import java.util.*; import org.openjdk.jmh.annotations.*; @State(Scope.Thread) @BenchmarkMode({ Mode.AverageTime }) @OutputTimeUnit(TimeUnit.MICROSECONDS) public class ConditionIf { int LOOP_COUNT = 1000; @GenerateMicroBenchmark public void randomOnly() { Random random = new Random(); int data = 1000 + random.nextInt(); for(int i=0; i list = new ArrayList<>(); // ... for(String str : list) { ``` 이 `for-each` 는 `get()` 메서드나 `elementAt()` 메서드를 호출할 필요없이 바로 사용할 수 있어 편하지만, 처음 부터 끝까지의 데이터 처리할 경우만 유용하다. 역순이나 특정값 부터 탐색하는 경우는 적절하지 않다. ## for 성능 비교 - 샘플 코드 ```java import java.util.*; import org.openjdk.jmh.annotations.*; @State(Scope.Thread) @BenchmarkMode({ Mode.AverageTime }) @OutputTimeUnit(TimeUnit.MICROSECONDS) public class ForLoop { int LOOP_COUNT = 100000; List list; @Setup public void setUp() { list = new ArrayList<>(LOOP_COUNT); for(int i=0; i Previous Post 자바 성능 튜닝 - Collection 관련 Next Post 자바 성능 튜닝 - static