KRISS

ความรู้เป็นของโลก ไม่ใช่ของกู

KRISS header image 2

Response Time-Latency-Responsiveness

July 29th, 2008 · Popularity: 49%

มีคนงงกันเยอะ ตอนเขียนเรื่อง Performance เกี่ยวกับ 3 สหาย Response time, Latency, Responsiveness วันนี้เลยมาขอแก้ตัว อธิบายใหม่แบบมีภาพประกอบซักหน่อย

สมมติเรามีระบบคอมพิวเตอร์ง่าย 1 client ต่อกับ 1 server ทางอินเตอร์เน็ท

Absurdly Simple Computing System

Absurdly Simple Computing System

การทำงานก็มีแค่ User ป้อนโจทย์เลขทาง Client ไปให้ Server คิด แล้ว Server ส่งคำตอบกลับมาแสดงบน Client

ทีนี้เรามาดู Performance 3 ตัวนี้กัน

Response Time

Response Time

Response Time

เวลาตั้งแต่ Server ได้รับคำถาม จนกระทั่งคิดเสร็จได้คำตอบออกมานี่แหละคือ Response Time พูดง่ายๆคือความเร็วของ Algorithm ต่างๆนั่นเอง

Latency

Latency

Latency

จริงๆคิดง่ายๆเนี่ย Latency ก็จะประมาณเวลาตั้งแต่ถามไปจนได้รับคำตอบ ลบ Response Time ออกไปนั่นเอง ซึ่งโดยส่วนใหญ่ก็คือเวลาที่ใช้แถวๆการรับส่งข้อมูลนั่นแหละ

ตัวสุดท้าย

Responsiveness

Responsiveness

Responsiveness

Responsiveness ก็คืออาการที่แสดงให้ user รับรู้ว่า เฮ้ย ระบบมันรับรู้คำสั่งนะ แต่คำตอบยังไม่มา ไม่ใช่กดถามแล้วเงียบไปจนกว่าจะได้คำตอบ อันนั้ันก็จะแย่ เพราะ user จะรู้สึกเหมือนระบบทำงานช้ากว่า (ทั้งๆที่จริงๆไม่ใช่)

ลองดูตัวอย่างตามภาพ
Response time จริงๆแล้วเร็วมาก = ไม่ถึงวินาที
ส่วน Latency นั้นมากพอสมควร (10 วินาที)

ดังนั้นเวลาที่ user รับรู้ทั้งหมดในระบบนี้คือ Latency ล้วนๆ ซึ่งเรามักแก้ไขอะไรไม่ได้ แต่ก็มีวิธีบรรเทาอาการเซ็งของ user ได้ โดยการเพิ่ม Responsiveness เช่นใส่ Progress bar หรือแสดงข้อความต่างๆระหว่างรอ (ไม่ว่าจะรอ Response Time หรือ Latency)

ในระบบอื่นๆ อาจมีปัญหาต่างออกไปจากระบบนี้ เช่น Response Time มาก Latency มาก เราก็ต้องแก้ไขตรงจุดที่แก้ได้ ก็คือ Response Time โดยหาวิธีปรับให้คำนวณเร็วขึ้น หรือเพิ่ม CPU เพิ่ม RAM อะไรก็ว่าไป และอีกอย่างที่ทำได้ก็คือเพิ่ม Responsiveness นั่นเอง

สิ่งที่ต้องชั่งใจอีกนิดนึงก็คือ การเพิ่ม Responsiveness อาจเพิ่ม Response Time ด้วย อันนี้ก็จะต้องลองคิดดูตามแต่ระบบนั้นๆ ว่าเพิ่มลดอย่างไรให้มัน balance ตัวอย่างของปัญหานี้ก็เช่น เราต้องการแสดง Progress Bar แบบมี % กำกับ เราก็จะต้องเพิ่มส่วนของการคิด % ลงไปใน code ด้วย ซึ่งก็คงทำให้ระบบช้าลงไปเหมือนกัน แลกกันกับ responsiveness ที่ user จะเห็น
แต่ในปัจจุบันจะพบว่าระบบส่วนใหญ่จะไม่แสดงเป็น % กันแล้ว เพราะจริงๆ user ก็ไม่ได้แคร์อะไรมากนักกับ % สิ่งที่เขาอยากรู้ก็แค่ระบบมันยังมีชีวิตอยู่ไม่ได้ Hang ซึ่งก็เลยเป็นที่มาของ loading bar แบบ AJAX ทั้งหลาย (ไอ้ดอกไม้หมุนๆนั่นน่ะ) หรือตอน install program ที่ progress bar เป็นแบบเพิ่มจนสุดแล้วไปเริ่มใหม่จนลงโปรแกรมเสร็จ

เผื่อแผ่ชาวบ้าน:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google

อ่านนี่ด้วยดิ:

Tags:

  • แสดงความเห็นเกี่ยวกับเรื่องนี้ได้ด้านล่าง:

แสดงความคิดเห็น

หากต้องการให้มีรูปอวตาร (avatar) ประจำอีเมล กรุณา สมัครที่ Gravatar