9 คะแนน โดย kuroneko 2023-09-04 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อโปรเจ็กต์ซับซ้อนขึ้นเรื่อย ๆ และทรัพยากรสำหรับการทดสอบประสิทธิภาพก็เพิ่มขึ้นมาก จึงจำเป็นต้องมีระบบทดสอบใหม่
  • ต้องการระบบทดสอบในอุดมคติที่สามารถทดสอบทุกการเปลี่ยนแปลงของโค้ดให้เสร็จภายใน 10 นาที พร้อมวิเคราะห์ผลลัพธ์ได้อย่างละเอียด
  • ประสิทธิภาพของ Figma ได้รับผลกระทบหลักจาก CPU และ GPU จึงออกแบบเป็น 2 ระบบใหญ่โดยพิจารณาข้อดีข้อเสียของหลายแนวทาง
  • ระบบบนคลาวด์
    • ใช้ VM ที่มี GPU สำหรับรัน Headless Chromium เพื่อรันทดสอบแบบขนาน ทำให้การทดสอบเสร็จภายใน 10 นาที
    • เนื่องจากคุณลักษณะของ VM ทำให้ได้รับผลกระทบจากปัจจัยภายนอกได้ง่าย จึงเผื่อระยะไว้ประมาณ 20%
  • ระบบบนฮาร์ดแวร์
    • จัดคิวให้การทดสอบทั้งหมดทำงานแบบลำดับบนระบบที่ประกอบด้วยโน้ตบุ๊กเก่า ๆ เช่น MacBook รุ่นเก่า โน้ตบุ๊ก Windows และ Chromebook
    • แม้การทดสอบจะใช้เวลานาน แต่สามารถติดตามความเปลี่ยนแปลงด้านประสิทธิภาพเล็ก ๆ น้อย ๆ ที่เกิดขึ้นบนอุปกรณ์จริงได้อย่างละเอียด
  • หลังจากสร้างระบบทดสอบทั้งสองแบบแล้ว ก็ได้ผลลัพธ์เชิงบวกจากความพยายามปรับปรุงประสิทธิภาพ
  • การปรับปรุงประสิทธิภาพการเรนเดอร์
    • พยายามปรับปรุงประสิทธิภาพการเรนเดอร์ในสภาพแวดล้อมที่มี GPU แต่ไม่มี CPU รุ่นใหม่
    • จากการตรวจสอบอย่างละเอียดผ่าน stress test พบว่าบางฟีเจอร์ก่อให้เกิด overhead สูงบนฮาร์ดแวร์บางประเภท
    • จึงแบ่งเวลาการเรนเดอร์อย่างละเอียดและนำอัลกอริทึมใหม่ที่ให้ความสำคัญกับงานในเครื่องก่อนมาใช้ เพื่อปรับปรุงประสิทธิภาพบนฮาร์ดแวร์รุ่นเก่าได้อย่างมีประสิทธิผล
  • การปรับปรุงประสิทธิภาพของ FigJam
    • แม้การเขียนเทสต์จะยาก แต่จากเดิมที่ต้องดูคำถามจากลูกค้าหรือดูตัวชี้วัดแล้วค่อยแก้ไข ก็เปลี่ยนมาเป็นดูจากผลทดสอบและแก้ปัญหาได้ล่วงหน้า
    • ปัญหาที่ค้นพบได้ยาก เช่น ความต่างด้านประสิทธิภาพเล็กน้อยของ CSS ก็สามารถค้นพบและแก้ไขได้ด้วยการรันทดสอบซ้ำหลายสิบครั้ง
    • โดยเฉพาะอย่างยิ่ง การติดตามการเปลี่ยนแปลงของโค้ดที่ทำให้ประสิทธิภาพลดลงได้อย่างแม่นยำเป็นประโยชน์มาก
  • การปรับปรุงประสิทธิภาพเป็นงานที่ท้าทาย แต่สิ่งที่คนคิดกับสิ่งที่เกิดขึ้นจริงมักต่างกัน จึงทำให้การทดสอบและการวัดประสิทธิภาพมีความสำคัญอย่างมาก

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

 
kuroneko 2023-09-04

การปรับปรุงประสิทธิภาพผ่านการทดสอบนั้นเป็นเรื่องที่ดี แต่... ดูเหมือนว่า Figma ก็ยังช้ามากอยู่ดี
ในคอมเมนต์ HN ก็มีคนบ่นกันเยอะพอสมควรว่าช้ามากเหมือนกันนะ -_-

โดยเฉพาะหลังจากถูก Adobe เข้าซื้อกิจการ ผมรู้สึกว่ามันช้าลงไปมากเลย (ก่อนหน้านั้นมันเร็วกว่าที่คิดนะ...)
คงคิดไปเองมั้ง?

 
kuroneko 2023-09-04

สรุป AI ของเธรด HN

  • skhameneh: ชื่นชม Evan Wallace อดีต CTO ของ Figma สำหรับงานบุกเบิกด้วย WebAssembly และการแบ่งปันกระบวนการสำรวจบน GitHub
  • imslavko: แชร์บล็อกโพสต์ก่อนหน้าของ Evan และ Jamie ซึ่งอธิบายการเปลี่ยนผ่านของ Figma ไปสู่ WebAssembly การทดสอบประสิทธิภาพ และการปรับปรุงตลอดช่วงเวลาอย่างละเอียด
  • fhub: กล่าวถึงว่า Evan Wallace ร่วมก่อตั้ง Figma ในปี 2012 และดำรงตำแหน่ง CTO เป็นเวลา 10 ปี ก่อนลาออกในปี 2021
  • antoineMoPa: แสดงความประหลาดใจที่ Figma ประสบความสำเร็จทั้งเชิงพาณิชย์และความเป็นเลิศทางเทคนิค ทั้งที่มักมีสมมติฐานว่าบริษัทต้องประนีประนอมกับอย่างหลัง
  • tobyjsullivan: อธิบายว่า Figma เป็นข้อยกเว้น เพราะแม้สตาร์ทอัพส่วนใหญ่จะให้ความสำคัญกับฟีเจอร์มากกว่าคุณภาพ แต่มีบางรายที่สามารถสร้างนวัตกรรมทางเทคโนโลยีใหม่และนำไปทำเชิงพาณิชย์ได้
  • tmpz22: วิจารณ์ความคาดหวังต่อซอฟต์แวร์ที่คับแคบซึ่งเกิดจากผลิตภัณฑ์ยุคหลัง ๆ โดยระบุว่ามาตรฐานในปัจจุบันควรเป็นการผ่าน continuous integration
  • yellow_lead: ตั้งคำถามว่าคนอื่นจัดการกับสภาพแวดล้อมการทดสอบประสิทธิภาพที่มีสัญญาณรบกวนอย่างไร เมื่อคำนึงถึงช่วงคลาดเคลื่อน 20% ของ Figma
  • imslavko: อธิบายอย่างละเอียดเกี่ยวกับระบบทดสอบที่อาศัยฮาร์ดแวร์เสริมของ Figma และวิธีคำนวณค่าอ้างอิงเพื่อจัดการกับความแปรปรวนของ virtual machine
  • koenbok: แชร์ว่า Framer เคยเจอความแปรปรวน 15% แม้ใช้ Mac Mini สำหรับทดสอบโดยเฉพาะ และสุดท้ายพบว่าการมอนิเตอร์ผู้ใช้จริงเชื่อถือได้มากที่สุด
  • chrisdbanks: รายงานปัญหาเวลาโหลดและรูปภาพโหลดช้าในยุโรป พร้อมตั้งข้อสงสัยว่า Figma ทดสอบได้เหมาะสมนอกสหรัฐอเมริกาหรือไม่