소프트웨어 엔지니어가 알아야할 13가지 지연시간을 정리해 본다.
구글의 전설적인 엔지니어 제프 딘이 공유한 내용이라고 한다.
지연시간 | |
---|---|
L1 캐시 참조 | 0.5ns |
분기 예측 오류 | 5ns |
L2 캐시 참조 | 7ns |
뮤텍스 잠금/해제 | 100ns |
메인 메모리 참조 | 100ns |
Snappy로 1KB 압축 | 10,000ns = 10μs |
1Gbps 네트워크를 통한 2KB 전송 | 20,000 = 20μs |
메모리에서 순차적으로 1MB 읽기 | 250,000ns = 250μs |
동일 데이터센터 내 데이터 왕복 | 500,000ns = 500μs |
디스크 탐색 | 10,000,000ns =10,000μs= 10ms |
네트워크에서 순차적으로 1MB 읽기 | 10,000,000ns = 10,000μs = 10ms |
디스크에서 순차적으로 1MB 읽기 | 30,000,000ns = 30ms |
패킷전송 CA → 네덜란드 → CA | 150,000,000ns = 150ms |
Orders of Magnitude (time)
Factor | 1s is… | |
---|---|---|
nanosecond(ns) | 10**-9 | 1,000,000,000ns |
microsecond(μs) | 10**-6 | 1,000,000μs |
millisecond(ms) | 10**-3 | 1,000ms |
second(s) | 10**0 | 1 |
물론 정확하지는 않다. 속도라는 것이 매번 변화하고 환경에 따라 달라지기 마련이니까.
하지만, guesstimation에는 충분히 도움이 된다.
자주 보고 외워둬야겠다.
그래서 메모한다.