เกณฑ์เปรียบเทียบฮีโร่คือชุดเกณฑ์เปรียบเทียบที่ครอบคลุมเส้นทางของผู้ใช้แอประดับสูง เช่น การเริ่มต้นแอปหรือการเลื่อนในแอป Pokedex แบบโอเพนซอร์ส
- เกณฑ์เปรียบเทียบฮีโร่สำหรับการเริ่มต้น: การติดตามเวลาตั้งแต่เปิดแอปจนถึงการแสดงเนื้อหา
- เกณฑ์เปรียบเทียบฮีโร่สำหรับการเลื่อน: การวัดประสิทธิภาพการเลื่อนของตารางกริดแบบ Lazy ที่มีรูปภาพ
การตั้งค่าการทดสอบ
- การเลือกแอป: เราทำการทดสอบเหล่านี้โดยใช้แอป Pokedex แบบโอเพนซอร์ส โดยเปรียบเทียบเวอร์ชันที่ใช้ View กับเวอร์ชันที่ใช้ Compose เราเลือกแอปนี้เพื่อแสดงสถานการณ์ในโลกจริง และทีม Compose ไม่ได้เป็นผู้พัฒนาแอป
- การตั้งค่าฮาร์ดแวร์: เราเรียกใช้เกณฑ์เปรียบเทียบใน Pixel 3a ที่ใช้ Android 12 (API 31) โดยล็อก CPU และ GPU เราใช้อุปกรณ์นี้เป็นเกณฑ์มาตรฐานด้านประสิทธิภาพสำหรับเกณฑ์เปรียบเทียบฮีโร่
- การตั้งค่าบิลด์: เกณฑ์เปรียบเทียบใช้แอปที่สร้างในโหมดเผยแพร่โดยเปิดใช้ R8 enabled เราคอมไพล์แอปไว้ล่วงหน้าอย่างสมบูรณ์เพื่อลดความไม่เสถียรจากการคอมไพล์แบบ Just-In-Time (JIT)
- การเลือกผลลัพธ์: เราไม่รวมค่าผิดปกติสุดขั้วและ สัญญาณรบกวนที่ไม่เป็นตัวแทนออกจากผลลัพธ์เกณฑ์เปรียบเทียบเพื่อให้มั่นใจว่ามีการวิเคราะห์กรณีที่แย่ที่สุด จากนั้นเราได้กำหนดเกณฑ์มาตรฐานโดยเลือกค่ามัธยฐานของข้อมูลประสิทธิภาพขอบเขตบน
เกณฑ์เปรียบเทียบฮีโร่สำหรับการเริ่มต้น
เราใช้ PokedexStartupBenchmark เพื่อวัดการเริ่มต้น PokedexStartupBenchmark จะวัดเวลาที่ใช้เพื่อให้แอป Pokedex แสดงต่อผู้ใช้
การเปิดแอปอาจเกิดขึ้นได้ใน 3 สถานะ ได้แก่ Cold Start, Warm Start, หรือ Hot Start แต่ละสถานะจะส่งผลต่อระยะเวลาที่แอปใช้ในการแสดงต่อผู้ใช้ ใน Cold Start แอปจะเริ่มทำงานตั้งแต่ต้น ในเกณฑ์เปรียบเทียบนี้ เราจะวัดประสิทธิภาพการเปิดแอปในสถานะ Cold Start เราขอแนะนำให้คุณเพิ่มประสิทธิภาพแอปโดยอิงตามสมมติฐานของ Cold Start เสมอ การทำเช่นนี้จะช่วยปรับปรุงประสิทธิภาพของ Warm Start และ Hot Start ด้วย
เมตริกที่เราใช้ในการวัดเวลาเริ่มต้นแอปคือ เวลาที่ใช้ในการแสดงผลครั้งแรก และ เวลาที่ใช้ในการแสดงผลครบถ้วน
เวลาที่ใช้ในการแสดงผลครั้งแรก
เวลาที่ใช้ในการแสดงผลครั้งแรก (TTID) จะวัดเวลาที่แอปใช้ในการสร้างเฟรมแรก ซึ่งรวมถึงการเริ่มต้นกระบวนการระหว่าง Cold Start, การสร้างกิจกรรมระหว่าง Cold Start หรือ Warm Start และการแสดงเฟรมแรก
ใน PokedexStartupBenchmark Compose 1.11 ช้ากว่า View 2.5% สำหรับ TTID ใน Cold Start
เวลาที่ใช้ในการแสดงผลครบถ้วน
เวลาที่ใช้ในการแสดงผลครบถ้วน (TTFD) จะวัดเวลาจนกว่าแอปจะโต้ตอบได้ ซึ่งหมายความว่าระบบได้โหลดและวาดข้อมูลทั้งหมดแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับเวลาที่ใช้ในการแสดงผลครบถ้วนได้ที่เวลาเริ่มต้นแอป
ใน PokedexStartupBenchmark Compose 1.11 ช้ากว่า View 13.0% สำหรับ TTFD ใน Cold Start
เกณฑ์เปรียบเทียบฮีโร่สำหรับการเลื่อน
เราใช้ PokedexScrollBenchmark เพื่อวัดประสิทธิภาพการเลื่อน ซึ่งจะวัดประสิทธิภาพการเลื่อนของหน้าจอแอป Pokedex สำหรับตารางกริดแบบ Lazy ที่มีรูปภาพ ในเกณฑ์เปรียบเทียบนี้ เราจะเลื่อนและปัดทั้งหน้าจอหลายครั้ง รวมถึงโหลดรายการใหม่ เราวัดประสิทธิภาพการเลื่อนด้วยอัตราการกระตุก
อัตราการกระตุก
อุปกรณ์ Android แสดงผลได้สูงสุด 60 หรือ 120 เฟรมต่อวินาที (fps) ซึ่งหมายความว่าระบบมีกำหนดเวลาที่เข้มงวด (เช่น 16.6 มิลลิวินาทีสำหรับ 60 fps) ในการสร้างเฟรม หากแอปใช้เวลานานเกินไปในการทำงาน อาจทำให้เกิดการสะดุดที่มองเห็นได้ ซึ่งเราเรียกว่าการกระตุก
ใน PokedexScrollBenchmark Compose และ View มีประสิทธิภาพเท่ากันที่ 0.21% การกระตุกตั้งแต่ Compose 1.9.0 ในแง่สัมบูรณ์ เฟรม 1 ใน 485 เฟรมกระตุก
เกณฑ์เปรียบเทียบเหล่านี้แสดงให้เห็นว่า Compose 1.9 ขึ้นไปมีประสิทธิภาพเท่ากับ View ในการกระตุกขณะเลื่อน
เรียกใช้เกณฑ์มาตรฐานฮีโร่
วิธีตรวจสอบผลลัพธ์ด้านประสิทธิภาพและเรียกใช้เกณฑ์เปรียบเทียบในเครื่อง
- ทำตามคู่มือ AndroidX เพื่อตรวจสอบซอร์สโค้ด
- ทำตามวิธีการในซอร์สโค้ดเกณฑ์เปรียบเทียบฮีโร่
คุณสามารถเรียกใช้เกณฑ์เปรียบเทียบเหล่านี้ในอุปกรณ์ที่รองรับ เช่น อุปกรณ์เฉพาะที่คุณกำลังเพิ่มประสิทธิภาพแอป อย่างไรก็ตาม ให้ใช้การตั้งค่าฮาร์ดแวร์แบบเดียวกันเพื่อตรวจสอบผลลัพธ์อย่างเป็นทางการ