3 คะแนน โดย GN⁺ 2024-04-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • VTE (Virtual TErminal library) คือไลบรารีที่เป็นพื้นฐานของโปรแกรมจำลองเทอร์มินัลใน GNOME ใช้งานในแอปอย่าง GNOME Terminal, Console, Black Box, Tilix, Terminator และ Ptyxis รวมถึงเทอร์มินัลแบบฝังใน Builder และ Workbench ด้วย
  • ระหว่างรอบการพัฒนา GNOME 46 ประสิทธิภาพของ VTE ดีขึ้นอย่างมาก บทความนี้วัดให้เห็นจริงว่าประสิทธิภาพดีขึ้นมากแค่ไหน และผู้ใช้จะรู้สึกถึงความแตกต่างอะไรได้บ้าง

สิ่งที่วัดและวิธีการ

  • มีหลายวิธีในการวัดประสิทธิภาพของโปรแกรมจำลองเทอร์มินัล แต่บทความนี้โฟกัสที่ Input Latency
  • Input Latency หมายถึงเวลาตั้งแต่กดแป้นพิมพ์ไปจนถึงตอนที่สีของพิกเซลบนจอภาพเปลี่ยน แอปที่มี Input Latency ต่ำจะให้ความรู้สึกตอบสนองได้ดี ส่วนแอปที่มีค่า Input Latency สูงอาจให้ความรู้สึกช้า
  • ในการวัด Input Latency ใช้ฮาร์ดแวร์ทดสอบ latency ของอินพุต ซึ่งประกอบด้วยเซ็นเซอร์วัดแสงที่เชื่อมต่อกับบอร์ด Teensy และเชื่อมเข้ากับคอมพิวเตอร์ผ่าน USB

ผลการทดสอบ Input Latency

  • การทดสอบแรก: สร้างช่องรับอินพุตด้วยคำสั่ง cat > /dev/null แล้ววัดเวลาที่ใช้เมื่อกดปุ่ม Space จนบล็อกเคอร์เซอร์เลื่อนไปทางขวาหนึ่งช่อง
    • เทอร์มินัลที่ใช้ VTE บน Fedora 40 ดีขึ้นอย่างมากเมื่อเทียบกับ Fedora 39 และเข้าใกล้ระดับเดียวกับ Alacritty
  • การทดสอบที่สอง: เปิดไฟล์ README ใน neovim แล้ววัดระหว่างการเลื่อน text buffer ด้วย Ctrl+D และ Ctrl+U
    • เช่นกัน เทอร์มินัล VTE ของ GNOME 46 ดีขึ้นมาก และแสดงผลใกล้เคียงกับ Alacritty
  • เมื่อนำเทอร์มินัลทั้งหมดบน Fedora 40 มาเปรียบเทียบพร้อมกัน พบว่าในการทดสอบ neovim ค่า Input Latency สูงกว่าการทดสอบด้วย cat แต่เพิ่มขึ้นในระดับใกล้เคียงกันทุกตัว

ผลการทดสอบ vtebench

  • รันชุดทดสอบ vtebench ของ Alacritty ในสภาพแวดล้อมเดียวกัน
  • เป็นการทดสอบเพื่อวัดประสิทธิภาพการอ่านและพาร์ส PTY และยังมีประโยชน์ในการค้นหา crash ของ VTE ด้วย
  • VTE ใน GNOME 46 แสดงการปรับปรุงใน vtebench เช่นกัน แต่ยังไม่ถึงระดับของ Alacritty

บทสรุป

  • ใน GNOME 46 ประสิทธิภาพของ VTE ดีขึ้นอย่างมาก ทำให้ Input Latency ดีขึ้นจนเกือบเทียบเท่าเทอร์มินัลที่เร็วที่สุด
  • หากที่ผ่านมาเลี่ยงเทอร์มินัลที่ใช้ VTE เพราะการตอบสนองช้าและมี Input Latency สูง ตอนนี้อาจถึงเวลาลองใช้อีกครั้งแล้ว (แนะนำ VTE เวอร์ชัน 0.76 ขึ้นไป)

ความเห็นจาก GN⁺

  • การปรับปรุงประสิทธิภาพของเทอร์มินัลที่ใช้ VTE เป็นเรื่องที่น่ายินดีมาก และน่าจะช่วยยกระดับประสบการณ์ใช้งานได้อย่างมาก
  • การใช้ฮาร์ดแวร์ทดสอบมาวัด Input Latency เป็นจุดที่น่าสนใจ และคำอธิบายรายละเอียดของกระบวนการทดสอบกับการตีความผลลัพธ์ก็มีประโยชน์มาก
  • น่าจะน่าสนใจหากลองเทียบกับ Terminal.app ซึ่งเป็นเทอร์มินัลพื้นฐานของ macOS หรือ Windows Terminal ซึ่งเป็นเทอร์มินัลรุ่นใหม่ของ Windows
  • คาดว่าการปรับปรุงประสิทธิภาพของ VTE จะส่งผลเชิงบวกต่อ ecosystem ของ GNOME โดยรวม แม้ดูเหมือนว่ายังมีบางจุดที่พัฒนาได้อีก เช่น accessibility และ scrollbar
  • สำหรับผู้ใช้ลินุกซ์เดสก์ท็อป นี่เป็นข่าวที่น่ายินดีมาก และหวังว่าโปรแกรมจำลองเทอร์มินัลหลากหลายตัวจะพัฒนาต่อไปได้มากขึ้นบนพื้นฐานของการปรับปรุงใน VTE

1 ความคิดเห็น

 
GN⁺ 2024-04-09

ความคิดเห็นจาก Hacker News

  • ถือเป็นความสำเร็จที่ GNOME Terminal รุ่นล่าสุดมีเวลาแฝงในการรับอินพุตสั้นกว่าคอมพิวเตอร์ Apple //e จากปี 1983 แต่สภาพแวดล้อมการทดสอบแตกต่างจากการใช้งานจริง
    • การทดสอบดำเนินการบน raw Mutter ซึ่งเป็นสภาพแวดล้อมแบบ bare-bones ไม่ใช่ GNOME Shell
    • ไม่ได้รวมเวลาแฝงของคีย์บอร์ด จึงไม่ใช่การวัดเวลาแฝงแบบ end-to-end (เวลาแฝงของคีย์บอร์ดอาจสูงได้ถึง 60ms)
    • คาดว่าเวลาแฝงแบบ end-to-end จริงภายใต้การตั้งค่าเริ่มต้นจะยาวกว่านี้
  • วัดที่กึ่งกลางจอภาพ แต่ที่ด้านบนและด้านล่างของจออาจต่างกันได้ 8ms (เพราะพิกเซลถูกวาดจากบนลงล่างเหมือน CRT)
  • เปรียบเทียบข้ามจอภาพแบบตรง ๆ ได้ยาก อาจมีผลที่เทียบกันไม่ได้จากไดรเวอร์หรือโปรไฟล์
  • เป็นเรื่องน่าขันที่ในยุคที่ทำเรนเดอร์ 3D สมจริงได้แล้ว เรายังต้องมาแก้ปัญหาการแสดงผลข้อความในเทอร์มินัล
  • ประทับใจกับความพยายามของนักพัฒนา VTE ในการเพิ่มประสิทธิภาพ และความพยายามวัดเวลาแฝงด้วยฮาร์ดแวร์
  • มีคำถามว่ามีเทอร์มินัลบนลินุกซ์ตัวไหนที่จำ history และ scrollback แยกตามแท็บได้เหมือน macOS Terminal หรือไม่
  • มีความเห็นว่าใช้ Gnome มานาน แต่พอเปลี่ยนไปใช้ sway+alacritty แล้วไม่รู้สึกถึงความแตกต่าง
  • มีการกล่าวถึงปัญหาที่หน้าต่างเริ่มต้นของ Gnome Terminal มีขนาดเล็ก และไม่จำขนาดหน้าต่าง
  • มีความเห็นว่าใช้ xterm+i3wm ก็ไม่เคยรู้สึกว่าอะไรเร็วกว่า และ alacritty ที่ใช้ GPU ก็เป็น overkill
  • มีความเห็นว่าอยากให้ Ghostty ของ Mitchell Hashimoto ถูกนำมารวมในการเบนช์มาร์กด้วย
  • มีความเห็นว่าการเบนช์มาร์กครั้งนี้ดีเพราะไม่ใช่แค่การทดสอบ cat แบบง่าย ๆ และอยากให้ทดสอบเทอร์มินัลที่หลากหลายกว่านี้ โดยเฉพาะคอนโซลลินุกซ์แบบเนทีฟด้วย