ผลลัพธ์การเพิ่มประสิทธิภาพ Chromium ที่ดำเนินการโดยโครงการ RenderingNG

นักพัฒนา Chromium ได้สรุปผลลัพธ์แรกของโครงการ RenderingNG ที่เปิดตัวเมื่อ 8 ปีที่แล้ว โดยมีเป้าหมายอยู่ที่การทำงานอย่างต่อเนื่องเพื่อเพิ่มประสิทธิภาพ ความน่าเชื่อถือ และความสามารถในการขยายของ Chrome

ตัวอย่างเช่น การเพิ่มประสิทธิภาพที่เพิ่มใน Chrome 94 เทียบกับ Chrome 93 ส่งผลให้เวลาแฝงในการแสดงหน้าเว็บลดลง 8% และอายุการใช้งานแบตเตอรี่เพิ่มขึ้น 0.5% เมื่อพิจารณาจากขนาดฐานผู้ใช้ของ Chrome สิ่งนี้แสดงถึงการประหยัดเวลา CPU ทั่วโลกได้กว่า 1400 ปีในแต่ละวัน เมื่อเปรียบเทียบกับเวอร์ชันก่อนหน้า Chrome สมัยใหม่จะเรนเดอร์กราฟิกเร็วขึ้นกว่า 150% และมีความเสี่ยงน้อยกว่าถึง 6 เท่าที่จะเกิดปัญหาไดรเวอร์ GPU บนฮาร์ดแวร์ที่มีปัญหา

ในบรรดาวิธีการที่นำมาใช้เพื่อให้บรรลุประสิทธิภาพที่เพิ่มขึ้น เราสังเกตเห็นการทำงานแบบแรสเตอร์ไลเซชันของพิกเซลที่แตกต่างกันในฝั่ง GPU และการกระจายตัวประมวลผลที่แอคทีฟมากขึ้นไปยังคอร์ CPU ที่แตกต่างกัน (การรัน JavaScript, การประมวลผลการเลื่อนหน้า, การถอดรหัสวิดีโอและรูปภาพ, การเรนเดอร์เชิงรุกของ เนื้อหา). ปัจจัยจำกัดสำหรับการทำงานแบบขนานที่ใช้งานอยู่คือภาระที่เพิ่มขึ้นบน CPU ซึ่งสะท้อนจากอุณหภูมิที่เพิ่มขึ้นและการใช้พลังงานที่เพิ่มขึ้น ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องบรรลุความสมดุลที่เหมาะสมระหว่างประสิทธิภาพและการใช้พลังงาน ตัวอย่างเช่น เมื่อทำงานโดยใช้พลังงานแบตเตอรี่ คุณสามารถเสียสละความเร็วในการเรนเดอร์ได้ แต่คุณไม่สามารถเสียสละการประมวลผลการเลื่อนในเธรดที่แยกจากกัน เนื่องจากผู้ใช้จะสังเกตเห็นการตอบสนองของอินเทอร์เฟซที่ลดลง

เทคโนโลยีที่นำมาใช้ภายในกรอบของโครงการ RenderingNG เปลี่ยนวิธีการคอมโพสิตโดยสิ้นเชิงและช่วยให้คุณสามารถใช้เทคโนโลยีที่แตกต่างกันเพื่อปรับการคำนวณบน GPU และ CPU ให้เหมาะสมโดยสัมพันธ์กับแต่ละส่วนของหน้า โดยคำนึงถึงคุณสมบัติเช่นความละเอียดหน้าจอและอัตราการรีเฟรช รวมถึงการมีอยู่ในระบบที่รองรับ API กราฟิกขั้นสูง เช่น Vulkan, D3D12 และ Metal ตัวอย่างของการปรับให้เหมาะสม ได้แก่ การใช้งานแคชพื้นผิว GPU และการแสดงผลผลลัพธ์ของส่วนต่างๆ ของหน้าเว็บ รวมถึงการคำนึงถึงเฉพาะพื้นที่ของหน้าที่ผู้ใช้มองเห็นได้เมื่อแสดงผล (ไม่มีประโยชน์ในการแสดงผลบางส่วนของ เพจที่มีเนื้อหาอื่นครอบคลุมอยู่)

องค์ประกอบที่สำคัญของ RenderingNG ก็คือการแยกประสิทธิภาพเมื่อประมวลผลส่วนต่างๆ ของหน้าเว็บ เช่น เพื่อแยกการคำนวณที่เกี่ยวข้องกับการแสดงโฆษณาใน iframe การแสดงภาพเคลื่อนไหว การเล่นเสียงและวิดีโอ การเลื่อนเนื้อหา และการเรียกใช้ JavaScript

ผลลัพธ์การเพิ่มประสิทธิภาพ Chromium ที่ดำเนินการโดยโครงการ RenderingNG

เทคนิคการปรับให้เหมาะสมที่นำไปใช้:

  • Chrome 94 นำเสนอกลไก CompositeAfterPaint ซึ่งจัดให้มีการผสมส่วนของหน้าเว็บที่แสดงผลแยกกัน และช่วยให้คุณสามารถปรับขนาดโหลดบน GPU แบบไดนามิกได้ จากข้อมูลการวัดและส่งข้อมูลทางไกลของผู้ใช้ ระบบคอมโพสิตใหม่ลดเวลาแฝงในการเลื่อนลง 8% เพิ่มการตอบสนองประสบการณ์ผู้ใช้ 3% เพิ่มความเร็วในการเรนเดอร์ 3% ลดการใช้หน่วยความจำ GPU ลง 3% และยืดอายุแบตเตอรี่ 0.5%
  • GPU Raster ซึ่งเป็นกลไกการแรสเตอร์ฝั่ง GPU เปิดตัวในทุกแพลตฟอร์มในปี 2020 และได้เร่งการวัดประสิทธิภาพ MotionMark โดยเฉลี่ย 37% และการวัดประสิทธิภาพที่เกี่ยวข้องกับ HTML ขึ้น 150% ในปีนี้ GPU Raster ได้รับการปรับปรุงด้วยความสามารถในการใช้การเร่งความเร็วด้าน GPU เพื่อเรนเดอร์องค์ประกอบ Canvas ส่งผลให้การเรนเดอร์โครงร่างเร็วขึ้น 1000% และการวัดประสิทธิภาพ MotionMark 1.2 ที่เร็วขึ้น 130%
  • LayoutNG คือการออกแบบอัลกอริธึมเค้าโครงองค์ประกอบของหน้าใหม่ทั้งหมดโดยมีเป้าหมายเพื่อเพิ่มความน่าเชื่อถือและความสามารถในการคาดเดาได้ โครงการนี้มีแผนจะเปิดตัวแก่ผู้ใช้ในปีนี้
  • BlinkNG - การปรับโครงสร้างใหม่และการทำความสะอาดเอ็นจิ้น Blink โดยแบ่งการดำเนินการเรนเดอร์ออกเป็นขั้นตอนที่แยกจากกันเพื่อปรับปรุงประสิทธิภาพแคช และลดความซับซ้อนของการเรนเดอร์แบบ Lazy โดยคำนึงถึงการมองเห็นของวัตถุในหน้าต่าง งานมีกำหนดแล้วเสร็จในปีนี้
  • การย้ายตัวจัดการการเลื่อน ภาพเคลื่อนไหว และการถอดรหัสรูปภาพเพื่อแยกเธรด โปรเจ็กต์นี้ได้รับการพัฒนามาตั้งแต่ปี 2011 และในปีนี้ก็สามารถส่งออกการแปลง CSS แบบเคลื่อนไหวและภาพเคลื่อนไหว SVG ไปยังเธรดแยกกันได้
  • VideoNG เป็นเครื่องมือที่มีประสิทธิภาพและเชื่อถือได้สำหรับการเล่นวิดีโอบนหน้าเว็บ ในปีนี้ ความสามารถในการแสดงเนื้อหาที่ได้รับการคุ้มครองด้วยความละเอียด 4K ได้ถูกนำมาใช้แล้ว เพิ่มการรองรับ HDR ก่อนหน้านี้
  • กล่าวคือ - กระบวนการแยกสำหรับการแรสเตอร์ (OOP-R - แรสเตอร์ที่ไม่อยู่ในกระบวนการ) และการเรนเดอร์ (OOP-D - ตัวประกอบการแสดงผลที่ไม่อยู่ในกระบวนการ) แยกการเรนเดอร์อินเทอร์เฟซเบราว์เซอร์ออกจากการเรนเดอร์เนื้อหาของหน้า โปรเจ็กต์นี้ยังกำลังพัฒนากระบวนการ SkiaRenderer ซึ่งใช้ API กราฟิกเฉพาะแพลตฟอร์ม (Vulkan, D3D12, Metal) การเปลี่ยนแปลงทำให้สามารถลดจำนวนข้อขัดข้องเนื่องจากปัญหาในไดรเวอร์กราฟิกได้ 6 เท่า

ที่มา: opennet.ru

เพิ่มความคิดเห็น