자바 버전만 올리면 프로그램이 빨라질까요

4951 단어 Java
(이 글은 화지평선으로 향하다의 여러 문장이다)
자바의 실행 버전만 높이면 빨라진다고 합니다.
그런데 정말 그런가.만약 사실이라면 얼마나 빠를까.
그래서 나는 간단한 프로그램으로 실험을 진행했다.

실험 개요


실험을 위해 만들었다독립형 Java 프로그램 풀기.
이 프로그램은 간단한 연산만 반복할 뿐 웹 응용 프로그램처럼 복잡한 프로그램과는 성향이 다를 수 있지만, 나는 참고 대상이 되고 싶다.
자바 1.1로 이것을 컴파일하고 자바 1.1~12의 각 Oracle JDK(32비트/64비트)로 읽기독보적인 100만 문의 데이터 세트가 풀리기 전의 시간을 측정했다.1
자세한 측정 조건은 다음과 같습니다.
  • 실행 환경
  • Windwos 10 Home 1809 (64bit)
  • Intel Core i7-7500 CPU @ 2.70GHz
  • Java 실행 옵션
  • -mx512m수여-ms512m2
  • Java 1.3.1 이후 부여-server3
  • 측정 방법
  • 각 버전을 5회 측정하여 중앙치 획득
  • 실험 결과


    처리는 두 부분으로 나뉘기 때문에 매 처리마다 도표축을 분리하였다.
  • 독자 100만 개의 데이터 집합을 읽는 처리(아래 그림의 파란색 부분)
  • 이 섹션은 GC의 성능에 따라 다름
  • 해수독 처리(다음 그림의 빨간색 부분)
  • 이 섹션은 주로 JIT 최적화 성능에 따라 다름
  • 이 실험의 결과는 아래와 같다.

    도표 원시 데이터...
    Java
    Version
    데이터 읽기(ms)
    디지털 분석 (ms)
    합계(ms)
    Java 1.1 (32bit)
    1.1.8
    8,313
    4,231
    12,544
    Java 1.2 (32bit)
    1.2.2_017
    6,647
    4,360
    11,006
    Java 1.3 (32bit)
    1.3.0_05
    10,747
    6,905
    17,652
    Java 1.3.1 (32bit)
    1.3.1_28
    7,647
    5,093
    12,740
    Java 1.4 (32bit)
    1.4.0_04
    8,061
    4,741
    12,802
    Java 1.4.1 (32bit)
    1.4.1_07
    7,810
    4,796
    12,606
    Java 1.4.2 (32bit)
    1.4.2_19
    3,437
    3,281
    6,717
    Java 5 (32bit)
    1.5.0_22
    3,050
    3,289
    6,338
    Java 6 (32bit)
    1.6.0_45
    3,530
    4,077
    7,607
    Java 7 (32bit)
    1.7.0_80
    3,411
    3,211
    6,622
    Java 8 (32bit)
    1.8.0_202
    3,239
    3,257
    6,496
    Java 6 (64bit)
    1.6.0_45
    5,029
    3,312
    8,341
    Java 7 (64bit)
    1.7.0_80
    7,019
    3,148
    10,167
    Java 8 (64bit)
    1.8.0_202
    5,050
    3,054
    8,104
    Java 9 (64bit)
    9.0.4
    2,101
    2,961
    5,061
    Java 10 (64bit)
    10.0.2
    2,056
    3,054
    5,110
    Java 11 (64bit)
    11.0.3
    1,922
    3,343
    5,265
    Java 12 (64bit)
    12.0.1
    1,934
    3,422
    5,356

    고찰하다.


    '이번 프로그램에서'라는 전제가 있었지만, 수치에서 다음과 같은 내용을 엿볼 수 있다.
  • Java 1.1에 비해 최근 Java가 2배 이상 빠른
  • Java 1.3은 급격히 느려졌다.핫스팟은 아직 성숙하지 않나요?
  • Java 1.4.1까지는 늦었지만 Java 1.4.2로 하면 훨씬 빨라요.
  • 데이터 읽기 속도가 빨라진 이유는 기본 GC가 CMS4로 전환되었기 때문입니다.5
  • 발표 노트에 Use of SSE and SSE2 instructions on IA32 platforms라고 쓰여 있어서 수독 해석이 빨라진 것은 이것 덕분일까?
  • Java6~8의 데이터 읽기 속도가 64비트 VM보다 32비트
  • 빠름
  • Java9로 더 빨라짐
  • 총결산


    자바의 버전을 높이기만 하면 프로그램은 빨라진다.
    Java1.1에서 컴파일한 클래스 파일은 후방 호환성 때문에 이후 릴리즈에서도 그대로 이동합니다. 
    "그건 -Xmx-Xms 아닌가요?"이렇게 생각할 수 있습니다. 자바 1.1에서 이 옵션은 -mx -ms 입니다.Java 1.2는 VM 옵션-Xmx-Xms으로 변경되었으나 현재-mx-ms도 사용할 수 있습니다. 
    이 옵션이 없으면 HotSpot Client VM이 사용되고 배 정도 늦게... 
    Concurrent Mark Sweep Garbage Collector.GC에 대한 자세한 내용은 쿠보타 유지의 자료.를 참조하십시오. 
    https://twitter.com/skrb/status/1161642952420016130  

    좋은 웹페이지 즐겨찾기