0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Thời Gian Thực Thi Của Các Hoạt Động Máy Tính Điển Hình - Khám Phá Độ Nhanh Chậm Trong Lập Trình

Đăng vào 4 ngày trước

• 3 phút đọc

Thời Gian Thực Thi Của Các Hoạt Động Máy Tính Điển Hình

Năm 2010, trong bài chia sẻ đến các sinh viên của Đại học Stanford, Tiến sĩ Jeff Dean, Trưởng khoa của Google's School of Infrastructure Wizardry và là người đứng sau nhiều hệ thống nổi tiếng như TensorFlow, ProtocolBuffers, Bigtable, và MapReduce, đã cung cấp những con số ấn tượng về thời gian thực thi các hoạt động máy tính điển hình.

Mặc dù những con số này có thể đã lỗi thời với công nghệ máy tính hiện đại, nhưng chúng vẫn mang lại cái nhìn bao quát về độ nhanh và chậm của các thao tác máy tính.

Hoạt Động Thời Gian Thực Thi
L1 Cache Reference 0,5 ns
Branch Mispredict 5 ns
L2 Cache Reference 7 ns
Mutex Lock/Unlock 100 ns
Main Memory Reference 100 ns
Nén 1K bytes với Zippy 10.000 ns = 10 μs
Gửi 2K bytes qua mạng 1 Gbps 20.000 ns = 20 μs
Đọc 1 MB tuần tự từ bộ nhớ 250.000 ns = 250 μs
Đi vòng trong cùng datacenter 500.000 ns = 500 μs
Seek ổ đĩa 10.000.000 ns = 10 ms
Đọc 1 MB tuần tự từ mạng 10.000.000 ns = 10 ms
Đọc 1 MB tuần tự từ ổ đĩa 30.000.000 ns = 30 ms
Gửi gói tin CA->Hà Lan->CA 150.000.000 ns = 150 ms

Lưu Ý Quan Trọng

Nắm rõ các đơn vị thời gian:

  • ns = nanosecond
  • μs = microsecond
  • ms = millisecond

1 ns = 10⁻⁹ giây
1 μs = 10⁻⁶ giây = 1.000 ns
1 ms = 10⁻³ giây = 1.000 μs = 1.000.000 ns

Sau bài chia sẻ của Tiến sĩ Jeff Dean, một kỹ sư phần mềm tại Google đã phát triển một công cụ để trực quan hóa những con số trên, giúp người dùng dễ dàng nhận diện các khía cạnh thú vị của các hoạt động máy tính.

Phân Tích Thông Tin

Phân tích các số liệu này giúp chúng ta hiểu rõ hơn về các lý thuyết trong ngành công nghệ thông tin:

  • Tốc độ đọc dữ liệu từ bộ nhớ nhanh gấp nhiều lần so với ổ cứng.

    • Đọc 1 MB tuần tự từ bộ nhớ (250.000 ns = 250 μs) so với từ ổ cứng (30.000.000 ns = 30 ms).
  • Hạn chế việc tìm kiếm trên ổ cứng đến mức tối đa.

    • Disk Seek (10.000.000 ns = 10 ms).
  • Nén dữ liệu trước khi truyền qua internet sẽ tiết kiệm được thời gian.

    • Nén 1K bytes với Zippy (10.000 ns = 10 μs).
  • Độ trễ trong việc gửi nhận giữa các Data Center ở những khu vực khác nhau.

    • Gửi gói tin CA->Hà Lan->CA (150.000.000 ns = 150 ms).

Lời Nhắn Đến Độc Giả

Bạn có thể tìm hiểu thêm nhiều bài viết trong series "Thiết Kế Hệ Thống" trên blog của mình. Hy vọng kiến thức này sẽ mang lại giá trị cho bạn!

Hãy theo dõi mình trên Facebook "CLB Lập trình - THPT Ngọc Tảo" hoặc kênh Youtube "Tờ Mờ Sáng học Lập trình" để cùng nhau nâng cao hiểu biết về công nghệ và lập trình hoàn toàn miễn phí!

Facebook CLB Lập trình - THPT Ngọc Tảo: Fanpage
Youtube Tờ Mờ Sáng học Lập trình: Kênh Youtube

Hẹn gặp lại các bạn! 👋


Tài Liệu Đọc Thêm

  • Clean Architecture: A Craftsman’s Guide to Software Structure and Design - Robert C. Martin
  • Designing Data – Insensitive applications - Martin Kleppmann
  • System Analysis and Design - Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
  • System Design Interview - Alex Xu
  • Modern Systems Analysis and Design - Joseph Valacich, Joey George
  • Head First Design Patterns - Eric Freeman, Elisabeth Robson
    source: viblo
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào