- vừa được xem lúc

THỜI GIAN THỰC THI CỦA CÁC COMPUTER OPERATIONS ĐIỂN HÌNH

0 0 8

Người đăng: Tờ Mờ Sáng học Lập trình

Theo Viblo Asia

Năm 2010, trong bài chia sẻ về những bài học từ việc xây dựng Software Systems ở Google với sinh viên Đại học Stanford, Tiến sĩ Jeff Dean - Trưởng khoa của Google's School of Infrastructure Wizardry, có vai trò quan trọng trong nhiều hệ thống ở Google như: TensorFlow, ProtocolBuffers, Bigtable, MapReduce, LevelDB, ... - đã tiết lộ thời gian thực thi các computer operations điển hình.

Mặc dù các con số trong đó có thể đã không còn đúng với những máy tính mạnh mẽ ngày nay, nhưng chúng ta vẫn có thể dựa vào những con số đó để dễ dàng hình dung về sự nhanh và chậm khác nhau của các computer operations.

Operation 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
Compress 1K bytes with Zippy 10.000 ns = 10 μs
Send 2K bytes over 1 Gbps network 20.000 ns = 20 μs
Read 1 MB sequentially from memory 250.000 ns = 250 μs
Round trip within same datacenter 500.000 ns = 500 μs
Disk seek 10.000.000 ns = 10 ms
Read 1 MB sequentially from network 10.000.000 ns = 10 ms
Read 1 MB sequentially from disk 30.000.000 ns = 30 ms
Send packet CA->Netherlands->CA 150.000.000 ns = 150 ms

LƯU Ý

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

1 ns = 10⁻⁹ seconds

1 μs= 10⁻⁶ seconds = 1.000 ns

1 ms = 10⁻³ seconds = 1.000 μs = 1.000.000 ns

Sau đó, một software engineer của Google đã xây dựng một công cụ để visualize các số liệu trên của Tiến sĩ Jeff Dean.

THỜI GIAN THỰC THI CÁC COMPUTER OPERATIONS ĐIỂN HÌNH

Bằng cách phân tích các số liệu này, chúng ta có thể dễ dàng hiểu hơn về các lý thuyết mà các thầy cô trên trường hay nhắc đến:

  • Tốc độ đọc dữ liệu từ memory nhanh hơn ổ cứng (disk) nhiều như thế nào.

    • Read 1 MB sequentially from memory (250.000 ns = 250 μs)
    • Read 1 MB sequentially from disk (30.000.000 ns = 30 ms).
  • Hạn chế thực hiện tìm kiếm trên ổ cứng nhất có thể.

    • Disk seek (10.000.000 ns = 10 ms)
  • Các thuật toán nén dữ liệu (compress) cơ bản thực hiện rất nhanh. Hãy thực hiện nén dữ liệu trước khi truyền qua internet nếu có thể.

    • Compress 1K bytes with Zippy (10.000 ns = 10 μs)
  • Các Data Center thường được đặt ở các region khác nhau, vì vậy sẽ có độ trễ giữa thời gian truyền tin giữa chúng.

    • Send packet CA->Netherlands->CA (150.000.000 ns = 150 ms)

LỜI NHẮN

Bạn có thể tham khảo thêm những bài viết trong series "System Design - Thiết kế Hệ thống" của mình trên blog này nhé. Hi vọng kiến thức này hữu ích với bạn.

Follow 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 học tập, chia sẻ những kiến thức công nghệ và lập trình hoàn toàn miễn phí nhé!

Facebook CLB Lập trình - THPT Ngọc Tảo: https://www.facebook.com/clb.it.ngoctao/

Youtube Tờ Mờ Sáng học Lập trình: https://www.youtube.com/@tmsangdev

Hẹn gặp lại 👋


BẠN CÓ THỂ ĐỌ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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Nguyên tắc thứ ba trong SOLID: Liskov Substitution Principle

Năm 1988, Barbara Liskov đã phát biểu những điều sau như một cách để định nghĩa các subtype:. .

0 0 34

- vừa được xem lúc

Nguyên tắc thứ hai trong SOLID: Open-Closed Principle

Đây là bài tiếp theo của Nguyên tắc thứ nhất trong SOLID: Single Responsibility Principle. . Open-Closed Principle (OCP) được đặt ra năm 1988 bởi Bertrand Meyer. Nguyên tắc này nói rằng:.

0 0 46

- vừa được xem lúc

Nguyên tắc thứ nhất trong SOLID: Single Responsibility Principle

Trước tiên cho ai chưa biết SOLID là gì thì đây là bộ gồm 5 nguyên tắc trong thiết kế nói chung (không chỉ trong thiết kế phần mềm đâu nhé) với mỗi chữ cái đầu trong từ S-O-L-I-D thể hiện một nguyên tắc. Không sai, đúng là có một nguyên tắc như vậy.

0 0 30

- vừa được xem lúc

Nguyên tắc thứ tư trong SOLID: Interface Segregation Principle

Câu chuyện về cái tên Interfact Segregation Principle (ISP) có thể kể bắt đầu từ cái đồ thị dưới đây:. .

0 0 35

- vừa được xem lúc

Nguyên tắc thứ năm trong SOLID: The Dependency Inversion Principle

The Dependency Inversion Principle (DIP) nói rằng những hệ thống có tính mềm dẻo là khi source code dependency của nó chỉ trỏ tới các thành phần trừu tượng (abstraction), chứ không phải là các thành p

0 0 91

- vừa được xem lúc

Hexagonal Architecture là gì và ứng dụng của nó

I. Tổng quan về kiến trúc phần mềm. . Application without architecture (nguồn: Internet).

0 0 40