Chromium 규모 확인 3: 버전 간 변경량

Chromium 버전 간의 차이점 크기 확인



지난번까지는 Chromium의 규모를 LOC에서 확인했다
이번에는 Chromium 버전 간 변경량 확인

Chromium은 6주마다에 정기적으로 출시되었습니다.
거대한 소프트웨어로서는 이례적인 빈번한 릴리스를 하고 있는 Chromium 하지만, 1개의 버젼이 오를 때마다 어느 정도의 변경이 들어가 있는 것인가?

결론


  • 88.0.4324.91
  • 89.0.4388.4

  • 버전간에 확인한 변경량


    변경 내용
    규모


    변경, 추가, 삭제된 파일(C, C++, Assembly, Java)
    2만 파일 이상

    변경, 추가, 삭제된 코드(C,C++,Assembly,Java)
    100만 LOC 이상

    변경, 추가, 삭제된 코드의 비율
    전체 코드의 약 7%


    비교 대상



    먼저 Chromium의 각 버전에 대한 최신 태그를 확인하십시오.
    $ git show-ref --tag | sed s/refs\\/tags\\///g | sort -k2,2 -V -r | awk  -F'[ .]' '!colname[$2]++{print}' | head
    
    70aa692d68ee86d365928edd160c3575fda2b453 pre_blink_merge
    b9f09110acc31d8cfcdaf9ad99994493993fc837 89.0.4388.4
    5133e62bf71cdc73827e8a692f41c340fae44f0c 88.0.4324.91
    5b067f298bad6ee9966e55409ae85923aeafb4dd 87.0.4280.151
    8e2f4b1218732818284cc04088d9d9618b22889f 86.0.4240.261
    1b92670ff184497b121d26c7ecaff6006ac1697b 85.0.4183.162
    9fe9eba385acebd69c14548b73dce6126c1ae1b2 84.0.4147.142
    894fb9eb56c6cbda65e3c3ae9ada6d4cb5850cc9 83.0.4103.122
    690e69771fa599fb1c6e9114c5d9b1296621b86a 82.0.4085.28
    39d87f902daa0d138ded056c26e63c94558829b7 81.0.4044.156
    

    아래의 두 버전의 차이를 LOC로 확인
    - 88.0.4324.91
    - 89.0.4388.4

    cloc --diff 는 git 커밋 간의 변화량을 조사할 수 있다
    그러나 커밋 간의 서브 디렉토리를 비교하는 것은 한 번 힘들고 번거롭기 때문에, 또 하나 git 리포지토리를 준비해, 디렉토리간의 비교로 조사를 진행한다

    M88용 리포지토리 준비


    $ cd ~/work
    $ time cp -rf chromium chromium2
    
    real    5m32.421s
    user    0m3.462s
    sys 1m51.560s
    
    $ (cd chromium/src/ && git status)
    HEAD detached at 89.0.4388.4
    nothing to commit, working tree clean
    
    $ (cd chromium2/src/ && git status)
    HEAD detached at 89.0.4388.4
    nothing to commit, working tree clean
    

    복사한 리포지토리에 이전 버전의 소스 코드 체크아웃
    $ cd ~/work/chromium2/src/
    $ git checkout 88.0.4324.91
    Checking out files: 100% (46989/46989), done.
    Previous HEAD position was b9f09110acc3 Publish DEPS for 89.0.4388.4
    HEAD is now at 5133e62bf71c Publish DEPS for 88.0.4324.91
    
    $ git status
    HEAD detached at 88.0.4324.91
    
    It took 2.70 seconds to enumerate untracked files. 'status -uno'
    may speed it up, but you have to be careful not to forget to add
    new files yourself (see 'git help status').
    nothing to commit, working tree clean
    

    두 디렉토리의 소스 코드 비교
    $ time ~/work/cloc-1.88/cloc --quiet --diff --timeout=60 --diff-timeout=60 --csv chromium2/src chromium/src > cloc_diff_M88_M89.csv
    
    7 errors:
    Diff error, exceeded timeout:  chromium2/src/testing/buildbot/chromium.android.json v. chromium/src/testing/buildbot/chromium.android.json
    Diff error, exceeded timeout:  chromium2/src/testing/buildbot/chromium.fyi.json v. chromium/src/testing/buildbot/chromium.fyi.json
    Diff error, exceeded timeout:  chromium2/src/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json v. chromium/src/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
    Diff error, exceeded timeout:  chromium2/src/testing/buildbot/chromium.clang.json v. chromium/src/testing/buildbot/chromium.clang.json
    Diff error, exceeded timeout:  chromium2/src/tools/metrics/histograms/histograms_xml/obsolete_histograms.xml
    Diff error, exceeded timeout:  chromium/src/tools/metrics/histograms/histograms_xml/obsolete_histograms.xml
    Diff error, exceeded timeout:  chromium2/src/testing/buildbot/chromium.gpu.fyi.json v. chromium/src/testing/buildbot/chromium.gpu.fyi.json
    
    real    53m22.413s
    user    46m56.280s
    sys 1m51.859s
    

    타임 아웃 에러가 발생한 파일은 큰 사이즈의 xml 또는 json 파일
    도구나 테스트용 파일처럼 무시하고 진행

    변경량



    파일 변경 수




    Language
    차이 파일
    추가 파일
    삭제 파일
    합계


    C++
    11,082
    595
    1,101
    12,778

    C/C++ Header
    5,868
    552
    904
    7,324

    HTML
    1,024
    1,573
    1,528
    4,125

    자바스크립트
    1,245
    524
    524
    2,293

    자바
    1,434
    278
    367
    2,079

    XML
    1,806
    113
    142
    2,061

    파이썬
    762
    231
    195
    1,188

    Objective-C++
    852
    57
    77
    986

    JSON
    163
    270
    39
    472

    XHTML
    0
    163
    148
    311

    기타
    1,214
    242
    552
    2,008

    합계
    25,450
    4,598
    5,577
    35,625


    C, C++, Assembly, Java의 4언어 파일만으로도 2만 파일 이상에 어떠한 수정이 들어 있다


    Language
    차이 파일
    추가 파일
    삭제 파일
    합계


    C++
    11,082
    595
    1,101
    12,778

    C/C++ Header
    5,868
    552
    904
    7,324

    C
    47
    27
    5
    79

    자바
    1,434
    278
    367
    2,079

    Assembly
    36
    0
    0
    36

    합계
    16,997
    1,174
    2,010
    20,181






    코드 변경량




    Language
    차이 코드
    추가 코드
    삭제 코드
    합계


    C++
    87,921
    174,648
    298,045
    560,614

    C/C++ Header
    18,329
    210,391
    68,542
    297,262

    HTML
    4,393
    73,967
    89,078
    167,438

    자바스크립트
    6,158
    62,237
    70,182
    138,577

    XML
    9,777
    51,513
    73,560
    134,850

    C#
    961
    19,673
    80,721
    101,355

    JSON
    13,780
    45,697
    33,063
    92,540

    자바
    6,802
    30,905
    45,411
    83,118

    파이썬
    6,029
    32,850
    36,334
    75,213

    C
    4,734
    29,294
    24,942
    58,970

    기타
    12,662
    51,463
    65,147
    129,272

    합계
    171,546
    782,638
    885,025
    1,839,209


    C, C++, Assembly, Java의 4개 언어의 차분(변경·추가·삭제) 코드가 100만 LOC를 넘는다


    Language
    차이 코드
    추가 코드
    삭제 코드
    합계


    C++
    87,921
    174,648
    298,045
    560,614

    C/C++ Header
    18,329
    210,391
    68,542
    297,262

    C
    4,734
    29,294
    24,942
    58,970

    자바
    6,802
    30,905
    45,411
    83,118

    Assembly
    3364
    8897
    724
    12985

    합계
    121,150
    454,135
    437,664
    1,012,949






    코드 변경 비율



    전체의 약 7%의 코드에 차이(변경·추가·삭제)가 있다



    좋은 웹페이지 즐겨찾기