Làm thế nào để số lượng trễ độ trễ của Jeff Dean mà mọi lập trình viên nên biết chính xác trong bối cảnh triển khai phần cứng khác nhau?


10

Tôi đang đề cập đến biểu đồ các số trễ này , được quy cho Jeff Dean tại Google.

Điều tôi không hiểu là, những con số này không thay đổi từ một bộ phần cứng sang bộ tiếp theo? Làm thế nào những điều này có thể chính xác cho tất cả các loại RAM, CPU, bo mạch chủ, ổ cứng, vv?


Xem people.eecs.ber siêu.edu / ~ rcs / research / interactive_latency.html trong đó cho thấy các con số thay đổi theo (phần cứng đại diện mỗi năm) như thế nào.
ShreevatsaR

Câu trả lời:


14

Những con số này (cũng được liệt kê trên chương trình Dạy cho bản thân của Norvig trong 10 năm ) là gần đúng, chỉ hữu ích theo độ lớn (thứ tự).

Trên thực tế, phần cứng ngày nay (ít nhất là cho máy tính để bàn hoặc máy tính xách tay) không khác nhau nhiều ngay cả giữa máy tính xách tay giá rẻ 300 € và máy trạm 10k € cao cấp. Tốc độ thay đổi theo hệ số khoảng 2 hoặc 4. Một máy trạm như vậy có thể có đĩa lớn hơn, nhiều lõi hơn, bộ đệm và RAM. Tuy nhiên, điều này không ảnh hưởng nhiều đến hiệu năng đơn luồng thô.

Nhìn vào một số số liệu trên http://openbenchmarking.org/ hoặc một số bộ so sánh CPU.

Cái gọi là định luật Moore đang chết dần . Máy tính để bàn hơn 3 năm tuổi của tôi ở nhà (một i3770K) có thể được thay thế (hôm nay, vào tháng 3 năm 2016) bằng một số i6700, tốc độ chỉ nhanh hơn 20% .


7

Các con số không có nghĩa là chính xác. Đó là tỷ lệ giữa các bậc của cường độ giữa các tầng là vấn đề.

Tuy nhiên, khi một công nghệ đột phá xuất hiện (ví dụ: điện toán đám mây, ethernet 10GB / 100GB, mô-đun hạt nhân mạng mới, mạng lưu trữ SSD, ảo hóa và container hóa), những con số này có thể bị vô hiệu do các tầng mới xuất hiện, biến mất hoặc bị xáo trộn.

Khi lập trình ở mức rất cao - trong đó tất cả các tính toán, kết nối mạng, phân tích cú pháp, v.v., được thực hiện bằng các thư viện không phải do bạn tự viết, biết các số liệu hiệu suất của các hoạt động cấp thấp có thể không giúp ích nhiều, vì cơ hội của bạn để cải thiện từng hiệu suất của thư viện là khá hạn chế hoặc hoàn toàn không thể.

Thay vào đó, hãy đọc tài liệu liên quan đến hiệu suất của từng thư viện một cách cẩn thận. Nếu một thư viện không đi kèm với chúng, hãy hỏi họ - làm cho nó trở thành một vấn đề. Hoặc tìm hiểu làm thế nào để điểm chuẩn phần mềm một cách chính xác.

Có một sự hiểu biết cơ bản về số lượng độ trễ là rất quan trọng khi bạn được thuê bởi một công ty thiết kế và sản xuất các thành phần phần mềm. So sánh điều đó với một công ty thiết kế và sản xuất ô tô và mọi thành phần có trong - câu tục ngữ "phát minh lại bánh xe" (cao su, áp suất lốp, lốp, v.v.)

Hầu hết các công ty phần mềm không làm việc ở cấp thành phần - toàn bộ hệ thống phần mềm chức năng có thể được xây dựng từ việc đặt các thành phần lại với nhau. Các công ty phần mềm này không cần tập trung vào cách thiết kế các thành phần về độ trễ; thay vào đó họ cần đánh giá chất lượng của các thành phần họ chọn.

Tóm lại, (1) rất có thể bạn không cần biết các số trễ; (2) trừ khi bạn muốn được thuê bởi một công ty sản xuất các thành phần phần mềm (thư viện), cho dù để bán hoặc sử dụng nội bộ (như trong một số công ty phần mềm lớn nhất thế giới), (3) nếu bạn cần những con số đó, theo cách khoa học, công việc của bạn là làm việc theo tiêu chuẩn chính xác, nếu không bạn không nên làm việc trên các thành phần phần mềm.


3

Không ai đưa ra bất kỳ tuyên bố rằng những con số này là chính xác cho bất kỳ phần cứng.

Tuy nhiên, chúng chính xác hơn nhiều so với những phỏng đoán mù quáng. Đó là những gì nhiều người không may dựa vào mã của họ.


2

Chúng không hoàn toàn chính xác và chúng không thực sự có ý định.

Chúng (đặc biệt là trên các số nhỏ hơn) tốt hơn một chút so với chỉ thứ tự cường độ. Một điểm khác là nó có thể giúp hiểu được những thứ gần nhau, mà mọi người đôi khi hiểu sai là cách xa nhau hơn nhiều so với thực tế. Đối với một ví dụ rõ ràng, khá nhiều người cho rằng việc hiểu sai chi nhánh thường là một vấn đề lớn. Nó có thể là một vấn đề lớn nếu nó lặp đi lặp lại nhiều, nhưng không nhất thiết phải hy sinh một lượng lớn ở bất cứ đâu và bất cứ nơi nào khác chỉ để có được dự đoán nhánh tốt hơn (ví dụ: nếu bạn đọc từ bộ nhớ chính hoặc thậm chí bộ đệm L2 để cải thiện dự đoán nhánh, nó có thể là một mất mát ròng).

Đồng thời, vâng, các đơn đặt hàng độ lớn có thể là phần hữu ích nhất. Ví dụ, phải mất khoảng 100 lần để truy cập dữ liệu từ bộ nhớ chính so với từ một thanh ghi. Có, trên một máy có thể dài hơn khoảng 97 lần và trên máy khác có thể dài hơn tới 127 lần. Nó gần như chắc chắn sẽ gần 100 hơn so với 10 hoặc 1000.

Cá nhân, tôi có xu hướng nghĩ rằng hầu hết trong số này giống như các hòn đảo ở Thái Bình Dương. Tốc độ ổ cứng (ví dụ) có thể là các đảo Hawaii. Tốc độ SSD là các đảo của Philippines. Điều này đang hiển thị bản đồ ở một tỷ lệ đủ nhỏ để làm cho mỗi trong số chúng trông giống như một điểm duy nhất. Nếu chúng ta phóng to, điều đó rõ ràng không đúng - nhưng khoảng cách giữa hai chuỗi lớn hơn nhiều lần so với khoảng cách giữa các đảo trong một trong hai chuỗi.


0

Tất nhiên các con số không thể chính xác cho mọi máy. Và tôi đoán họ không bao giờ được yêu cầu. Tuy nhiên, chúng cho thấy sự khác biệt về thứ tự cường độ giữa một số loại hoạt động.

Bạn có thể tìm thấy một số liên kết và dữ liệu hữu ích hơn trong các nhận xét về dữ liệu được liên kết của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.