ในปี 2010 Jeff Dean จาก Google ได้กล่าวสุนทรพจน์ที่ยอดเยี่ยมที่ Stanford ซึ่งทำให้เขามีชื่อเสียงมาก ในนั้นเขาได้พูดถึงตัวเลขสองสามตัวที่เกี่ยวข้องกับระบบคอมพิวเตอร์ จากนั้น Peter Norvig ได้เผยแพร่ตัวเลขเหล่านั้นบนอินเทอร์เน็ตเป็นครั้งแรก
เวลาผ่านไปและตัวเลขก็เปลี่ยนไป นี่คือ UI เว็บเชิงโต้ตอบที่ดีมากของตัวเลขเหล่านั้น ซึ่งบอกคร่าวๆ ว่าพวกเขาเปลี่ยนแปลงไปมากน้อยเพียงใดในช่วงเวลาหลายปี
บทความนี้ไม่ได้เป็นเพียงการรวบรวมข้อมูลโดยประมาณของ Jeff Dean แต่ยังรวบรวมตัวเลขดังกล่าวทั้งหมดจากแหล่งต่างๆ สิ่งนี้จะช่วยคุณในฐานะนักออกแบบระบบและสถาปนิก ขณะออกแบบ คุณสามารถใช้ตัวเลขเหล่านี้เพื่อประเมินปริมาณทรัพยากรที่ระบบต้องการได้
การประมาณค่าคร่าวๆ ของข้อมูลเวลาในการตอบสนองสำหรับปี 2019:
- การอ้างอิงแคช L1:1 นาโนวินาที
- การอ้างอิงแคช L2:4 นาโนวินาที
- ล็อค Mutex / ปลดล็อก:17 นาโนวินาที
- อ้างอิงหน่วยความจำหลัก / RAM:100 นาโนวินาที
- บีบอัดขนาด 1 KB ด้วย Zippy (ปัจจุบันเรียกว่า Snappy):2000 นาโนวินาทีหรือ 2 ไมโครวินาที
- สาขา CPU ทำนายผิด:3 นาโนวินาที
- โซลิดสเตตไดรฟ์ (SSD) สุ่มอ่าน:16 ไมโครวินาที
- ดิสก์ (ฮาร์ดไดรฟ์ / ไดรฟ์แม่เหล็ก) ค้นหา:3 มิลลิวินาที
- อ่าน 1,000,000 ไบต์ตามลำดับจากหน่วยความจำหลัก:4 ไมโครวินาที
- อ่าน 1,000,000 ไบต์ตามลำดับจาก SSD:62 ไมโครวินาที
- อ่าน 1,000,000 ไบต์ตามลำดับจากดิสก์:947 ไมโครวินาที
- คำขอเครือข่ายไปกลับในศูนย์ข้อมูลเดียวกัน :500 ไมโครวินาที
- ส่ง 2,000 ไบต์ผ่านเครือข่ายสินค้าโภคภัณฑ์:62 นาโนวินาที
เวลาที่ใช้สำหรับเพย์โหลดเพื่อเดินทางผ่าน TCP:
นี่คือระยะเวลาที่ต้องใช้ในการส่งข้อมูลต่างๆ บนเครือข่ายเซลล์ทั่วไปทั่วโลก โดยที่ข้อมูลจะไม่สูญหาย
RTT — เวลาไปกลับ — เวลาทั้งหมดที่ใช้สำหรับแพ็กเก็ตข้อมูล (กลุ่มไบต์ข้อมูล) เพื่อเดินทางจากผู้ส่งไปยังผู้รับ และผู้รับไปยังผู้ส่งผ่านเครือข่าย เรียกสั้นๆว่าเวลาปิง
- การถ่ายโอนข้อมูล 1 ไบต์ถึง 13,000 ไบต์ (ประมาณ 13 KB) ใช้เวลา 1 รอบการเดินทางหรือ 1 RTT ใช้เวลาคร่าวๆ — สหรัฐอเมริกา:150 มิลลิวินาที อินเดีย:1200 มิลลิวินาที บราซิล:600 มิลลิวินาที
- 13,001 ไบต์ — 39,000 ไบต์ (13 KB ถึง 39 KB) ใช้ 2 RTT ใช้เวลาคร่าวๆ — สหรัฐอเมริกา:300 มิลลิวินาที อินเดีย:2400 มิลลิวินาที บราซิล:1200 มิลลิวินาที
- 39,001 ไบต์ — 91,000 ไบต์ (39 KB ถึง 91KB) ใช้ 3 RTT เวลาคร่าวๆ ที่ใช้ในสหรัฐอเมริกา:450 มิลลิวินาที อินเดีย:3600 มิลลิวินาที บราซิล:1800 มิลลิวินาที
- 91,001 ไบต์ — 195,000 ไบต์ (91 KB ถึง 195 KB) ใช้เวลา 4 RTT ใช้เวลาคร่าวๆ — สหรัฐอเมริกา:600 มิลลิวินาที อินเดีย:4800 มิลลิวินาที บราซิล:2400 มิลลิวินาที
ดังนั้นขนาดการตอบสนองที่มากขึ้นหมายถึงจำนวนไบต์ที่มากขึ้น การเดินทางไปกลับที่ยาวนานขึ้น เวลาแฝงของ API ที่มากขึ้น และแอปที่เป็นมิตรกับผู้ใช้ในท้ายที่สุด
โพสต์นี้จะได้รับการอัปเดตเมื่อพบหมายเลขใหม่หรือหมายเลขที่อัปเดต โปรดแจ้งให้เราทราบหากคุณทราบหมายเลขใหม่
บทความนี้เผยแพร่ครั้งแรกบนกำแพงขนาดกลางของผู้แต่ง ถ้าชอบฝากปรบมือให้ด้วยนะครับ
อ้างอิง:
- https://colin-scott.github.io/blog/2012/12/24/latency-trends/
- https://blog.std.in/2015/05/23/http-response-sizes-and-tcp/
- https://medium.com/@kousiknath/must-know-numbers-for-every-computer-engineer-6338a12c292c