@Test
   public void plusTest() {
       for (int i = 0; i < 10; i++) {
           plus();
       }

   }

plus() 코드 보기
[#M_ more.. | less.. |
  private void plus() {
       long t1 = System.currentTimeMillis();
       int i = 0;
       while (i < 100000000) {
           i++;
       }
       long t2 = System.currentTimeMillis();
       System.out.println(“plus using i++ :” + (t2 – t1));

       long t3 = System.currentTimeMillis();
       int j = 0;
       while (j < 100000000) {
           j = j + 1;
       }
       long t4 = System.currentTimeMillis();
       System.out.println(“plus using i=i+1 :” + (t4 – t3));
   }
_M#]
결과 보기
[#M_ more.. | less.. |
plus using i++ :406
plus using i=i+1 :172
plus using i++ :187
plus using i=i+1 :172
plus using i++ :188
plus using i=i+1 :187
plus using i++ :172
plus using i=i+1 :172
plus using i++ :187
plus using i=i+1 :172
plus using i++ :188
plus using i=i+1 :187
plus using i++ :188
plus using i=i+1 :172
plus using i++ :187
plus using i=i+1 :188
plus using i++ :187
plus using i=i+1 :188
plus using i++ :297
plus using i=i+1 :218
_M#]
생각해 보건데 맨 처음 루프를 돌 때만 심각한 속도 차이가 발생하고 그 이후로는 속도차이가 거의 없거나 매우 미묘하게 보입니다. 따라서 혹시 i++ 가 i = i + 1 보다 느린 것이 아니라 i++ 가 이 프로그램을 실행시킬 때 맨 앞에 있어서 그런 건 아닐까.. 하는 생각이 들었습니다.

그래서 연산자만 위 아래를 바꾸고 다시 test를 해보았습니다.
[#M_ more.. | less.. |
plus using i=i+1 :390
plus using i++ :172
plus using i=i+1 :172
plus using i++ :187
plus using i=i+1 :219
plus using i++ :219
plus using i=i+1 :172
plus using i++ :187
plus using i=i+1 :172
plus using i++ :187
plus using i=i+1 :188
plus using i++ :172
plus using i=i+1 :187
plus using i++ :188
plus using i=i+1 :172
plus using i++ :187
plus using i=i+1 :188
plus using i++ :187
plus using i=i+1 :172
plus using i++ :188
_M#]
와오!!! 추측이 맞긴 했지만 역시.. 그래도 중반 부분을 보니까 i = i + 1 로 연산하는 것이 미묘하긴 하지만 i++ 보다 빠른 경우가 많군요.