다양한 하드웨어 구현 환경에서 Jeff Dean의“모든 프로그래머가 알아야하는 대기 시간 수”는 어떻게 정확합니까?


11

Google의 Jeff Dean 이이 대기 시간 수치 차트를 참조 하고 있습니다.

내가 이해하지 못하는 것은이 숫자가 하드웨어 세트마다 다르지 않습니까? 모든 다른 유형의 RAM, CPU, 마더 보드, 하드 드라이브 등에 어떻게 이것이 정확할 수 있습니까?


숫자가 년 (대표적 하드웨어 당)에 따라 어떻게 다른지 보여주는 people.eecs.berkeley.edu/~rcs/research/interactive_latency.html 을 참조하십시오 .
ShreevatsaR

답변:


14

이 숫자들 ( Norvig 's Teach yourself Programming in 10 years )에도 대략적인 수치 이며 (순서) 규모로만 유용합니다.

실제로 오늘날의 하드웨어 (적어도 데스크톱 또는 랩톱 용)는 저렴한 300 € 랩톱과 하이 엔드 10k 워크 스테이션 사이에서도 크게 다르지 않습니다. 속도는 최대 약 2 또는 4 배 정도 다릅니다. 이러한 워크 스테이션은 더 큰 디스크, 더 많은 코어, 캐시 및 RAM을 가질 수 있습니다. 그러나 이는 원시 단일 스레드 성능에 큰 영향을 미치지 않습니다.

http://openbenchmarking.org/ 또는 일부 CPU 비교기의 수치를보십시오 .

소위 무어의 법칙죽어 가고 있습니다. 집에서 3 년 이상 된 데스크탑 (i3770K)은 20 % 더 빠른 i6700으로 대체 할 수 있습니다 (2016 년 3 월 현재) .


7

숫자는 정확하지 않습니다. 그것은이다 크기의 명령 사이의 비율 사이의 계층 문제.

그러나 파괴적인 기술 (예 : 클라우드 컴퓨팅, 10GB / 100GB 이더넷, 새로운 네트워킹 커널 모듈, SSD 스토리지 네트워크, 가상화 및 컨테이너화)이 나타나면 새로운 계층이 나타나거나 사라지거나 뒤섞여 서이 숫자가 무효화 될 수 있습니다.

모든 계산, 네트워킹, 구문 분석 등이 사용자가 작성하지 않은 라이브러리를 사용하여 수행되는 매우 높은 수준에서 프로그래밍하는 경우 각 수준을 향상시킬 수있는 기회가 있기 때문에 낮은 수준의 작업의 성능 수치를 알면별로 도움이되지 않을 수 있습니다. 도서관의 성능은 다소 제한적이거나 완전히 불가능합니다.

대신 각 라이브러리의 성능 관련 문서를주의해서 읽으십시오. 라이브러리에 해당 라이브러리가 제공되지 않으면 문의하십시오-문제가되도록하십시오. 또는 올바른 방법으로 소프트웨어를 벤치마킹하는 방법을 배우십시오.

소프트웨어 구성 요소 를 설계 및 제조 하는 회사에서 고용 할 경우 대기 시간 수에 대한 기본적인 이해가 중요 합니다. 자동차와 그 안에 포함 된 모든 구성 요소를 디자인하고 제조하는 회사와 비교할 때- "바퀴 재발견"(고무, 타이어 압력, 트레드 등)

대부분의 소프트웨어 회사는 구성 요소 수준에서 작동하지 않습니다. 전체 기능 소프트웨어 시스템은 구성 요소를 조합하여 구성 할 수 있습니다. 이러한 소프트웨어 회사는 지연 시간 측면에서 구성 요소를 엔지니어링하는 방법에 초점을 맞출 필요가 없습니다. 대신에 그들은 선택한 부품의 품질을 평가해야합니다.

요약하면, (1) 대기 시간 수를 알 필요가 없습니다. (2) 판매용이든 내부 용이든 (세계의 일부 최대 소프트웨어 회사에서와 같이) 소프트웨어 구성 요소 (라이브러리)를 제조하는 회사에서 고용하지 않는 한 (3) 해당 번호가 필요한 경우, 과학적으로 올바른 방법으로 벤치 마크를 직접 수행하거나 소프트웨어 구성 요소로 작업해서는 안됩니다.


3

아무도이 숫자가 하드웨어에 대해 정확하다고 주장하지 않았습니다.

그러나 그것들은 맹검 추측보다 훨씬 정확합니다. 불행히도 많은 사람들이 코드를 기반으로하는 것입니다.


2

그것들은 완벽하게 정확하지는 않으며 실제로 의도 된 것이 아닙니다.

그것들은 (특히 작은 숫자 일 때) 규모보다 조금 낫습니다. 또 다른 요점은 어떤 것이 서로 가까이 있는지 이해하는 데 도움이 될 수 있다는 것입니다. 사람들은 때때로 실제보다 훨씬 멀리 떨어져 있다고 잘못 해석합니다. 하나의 명백한 예를 들어, 상당수의 사람들은 가지 오해가 종종 큰 것이라고 가정합니다. 그것은 는 많이 반복 않다면 큰 문제가 될 수 있지만, 다른 곳에서 반드시 엄청난 양의 어느 곳을 희생 가치가 없어 및 단지 (더 나은 분기 예측을 얻기 위해 예를 들어, 당신은 분기 예측을 개선하기 위해 메인 메모리, 또는 L2 캐시에서 읽는다면, 아마도 순 손실 일 것입니다).

동시에, 예, 수십 배가 가장 유용한 부분 일 수 있습니다. 예를 들어, 주 메모리에서 레지스터보다 데이터에 액세스하는 데 약 100 배 더 오래 걸립니다. 예, 한 컴퓨터에서는 약 97 배 더 길고 다른 컴퓨터에서는 127 배 더 길 수 있습니다. 그래도 10 또는 1000보다 100에 가까워 질 것입니다.

개인적으로, 나는 이것들 대부분이 태평양의 섬들과 비슷하다고 생각하는 경향이 있습니다. 하드 드라이브 속도 (예를 들어)는 하와이 섬일 수 있습니다. SSD 속도는 필리핀 섬입니다. 이것은 각각의 점을 하나의 점처럼 보이도록지도를 작은 규모로 보여줍니다. 확대하면 사실이 아니지만 두 체인 사이의 거리가 두 체인 의 섬 사이의 거리보다 배 더 큽니다.


0

물론 숫자가 모든 기계에 대해 정확한 것은 아닙니다. 그리고 나는 그들이 절대로 예정되어 있지 않은 것 같아요. 그러나 여러 종류의 작업 사이에서 크기 순서의 차이를 보여줍니다.

링크 된 데이터의 주석에서 더 유용한 링크와 데이터를 찾을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.