ApacheBench에서 잡히 Nim과 Golang을 비교해보십시오.

6351 단어 5Nim
Nim이라는 언어가 Golang이나 Rust보다 가볍고 빠릅니다! ! 같은 기사를 보았기 때문에
재미있을 것 같은 Nim으로 갈아 타고 싶습니다.
라고 생각 ab 을 사용해 조사해 보았습니다.

하는 방법이 우선 이와 노망! 같은 츳코미 대기로 기사를 썼기 때문에, 가시가시 돌진해 주시면 다행입니다.

사용할 리포지토리



  • htps : // 기주 b. 코 m / 미지메 / ぁ ぇ 밧 p 헷 rld
  • Golang은 http.Server, Nim은 asynchttpserver가 그대로 사용하는 느낌입니다
  • 기반 이미지를 alpine으로 만들었습니다


  • 추가


  • 코멘트에서 지적 받았으므로, 릴리스 빌드로 벤치 마크 다시 잡았습니다!
  • 2017/10/31 결과 점수가 평균과 어긋났기 때문에 더 가깝습니다

  • 환경



  • AMI: ami-785c491f
  • Ubuntu
  • VERSION="16.04.2 LTS (Xenial Xerus)"
  • Intel (R) Xeon (R) CPU E5-2676 v3 @ 2.40GHz
  • cpu cores : 1


  • Instance-Type: t2.micro
  • MemTotal: 1014660 kB


  • 결과




    metrics/lang
    Nim
    Golang


    Requests per second [#/sec]
    6527.52
    7341.14

    Time per request [ms]
    15.320
    13.622

    Time per request [ms] (mean, across all concurrent requests)
    0.153
    0.136

    Transfer rate [Kbytes/sec] received
    325.10
    931.98


    Transfer rate는 대략 3배 정도 차이가 있습니다...

    작업 로그



    docker setup
    docker-machine create --driver amazonec2 --amazonec2-region ap-northeast-1 aws-default
    eval "$(docker-machine env aws-default | tee ~/.dockerc)"
    
    docker-machine ls aws-default
    NAME          ACTIVE   DRIVER      STATE     URL                         SWARM   DOCKER        ERRORS
    aws-default   *        amazonec2   Running   tcp://13.114.246.147:2376           v17.09.0-ce   
    
    docker stats 그렇다고 맛이 없었기 때문에 google/cadvisor를 사용하여 감시합니다.
    docker-compose build
    docker-compose up -d cadvisor
    

    cadvisor 포트 열어 둡니다.
    aws ec2 describe-instances # security group id 調べる
    aws ec2 authorize-security-group-ingress --group-id ${sgid} --port 8080 --cidr $(curl -sSL ifconfig.io)/32 --protocol tcp
    

    우선 nim에서 ...
    docker-compose up -d nimapp
    # 立ち上がったら、http://${dockerのIP}:8080/containers/docker の一番下をみる
    docker-compose up nimapp-bench
    

    과연. 과연. (노란색이 nimapp)

    docker-compose logs nimapp-bench
    ...
    nimapp-bench_1  | Concurrency Level:      100
    nimapp-bench_1  | Time taken for tests:   15.501 seconds
    nimapp-bench_1  | Complete requests:      100000
    nimapp-bench_1  | Failed requests:        0
    nimapp-bench_1  | Total transferred:      5100000 bytes
    nimapp-bench_1  | HTML transferred:       1200000 bytes
    nimapp-bench_1  | Requests per second:    6451.14 [#/sec] (mean)
    nimapp-bench_1  | Time per request:       15.501 [ms] (mean)
    nimapp-bench_1  | Time per request:       0.155 [ms] (mean, across all concurrent requests)
    nimapp-bench_1  | Transfer rate:          321.30 [Kbytes/sec] received
    ...
    

    그런 다음 Golang ...
    docker-compose stop nimapp
    docker-compose up -d goapp
    docker-compose up goapp-bench
    

    알겠어. 알겠어. 알겠어.


    docker-compose logs goapp-bench
    ...
    goapp-bench_1   | Concurrency Level:      100
    goapp-bench_1   | Time taken for tests:   14.371 seconds
    goapp-bench_1   | Complete requests:      100000
    goapp-bench_1   | Failed requests:        0
    goapp-bench_1   | Total transferred:      13000000 bytes
    goapp-bench_1   | HTML transferred:       1300000 bytes
    goapp-bench_1   | Requests per second:    6958.52 [#/sec] (mean)
    goapp-bench_1   | Time per request:       14.371 [ms] (mean)
    goapp-bench_1   | Time per request:       0.144 [ms] (mean, across all concurrent requests)
    goapp-bench_1   | Transfer rate:          883.41 [Kbytes/sec] received
    ...
    

    ... 잘 모르기 때문에 나란히 확인합니다.
    docker-compose stop goapp nimapp
    docker system prune # 一旦掃除
    
    docker-compose up -d goapp nimapp
    docker-compose up goapp-bench
    docker-compose up nimapp-bench
    

    ... 과연? (빨강 goapp, 노랑 nimapp)



    감상


  • Nim은 아마추어에게 어려울 것 같습니다. .
  • 크로스 컴파일도 조금 수중의 PC뿐이라고 어려울 것 같다. . .

  • 참고로 한 페이지라면 Golang 과 같은 rps 이었기 때문에 검증 절차가 잘못되었을 가능성이 크다 잘못되었습니다

  • 동시 접속수가 100인 것은 1000정도 넘으면 nim측이 막히기 시작하므로
    적게 설정하고 있습니다. 보통 nim이라도 다루었습니다. 슈고이
  • 반대로 golang 라든지 netty 라든지가 다루는 것은 어째서

  • 스스로 벤치 마크를 잡는 것의 중요 제대로 문서 읽기의 중요

  • 참고


  • htp : / / lf sh. 는 bぉ. jp/엔트리/2017/09/27/172150
  • 좋은 웹페이지 즐겨찾기