Jetpack Compose มอบประสิทธิภาพที่ยอดเยี่ยมตั้งแต่แกะกล่อง กำหนดค่าแอปโดยใช้แนวทางปฏิบัติแนะนำเพื่อหลีกเลี่ยงข้อผิดพลาดที่พบบ่อยและเพิ่มประสิทธิภาพของแอปพลิเคชัน Compose
ทักษะ Android
ดูใน GitHubประสิทธิภาพของ Jetpack Compose
android skills add jetpack-compose-performanceการเปรียบเทียบ Jetpack Compose
ในการตรวจสอบประสิทธิภาพของ Jetpack Compose เทียบกับ Views เราใช้การเปรียบเทียบหลัก ซึ่งเป็นการเปรียบเทียบที่มุ่งเน้นเส้นทางของผู้ใช้ที่สำคัญในชีวิตจริง เช่น การเริ่มแอปแบบ Cold Start หรือการเลื่อนรายการหรือตารางกริดที่มีรูปภาพ เราทำการเปรียบเทียบเหล่านี้โดยใช้แอป Pokedex แบบโอเพนซอร์ส โดยเปรียบเทียบการใช้งาน Views และ Compose
การเปรียบเทียบเหล่านี้แสดงให้เห็นว่า Compose 1.9 ขึ้นไปมีประสิทธิภาพเทียบเท่ากับ Views ในเรื่องการกระตุกขณะเลื่อน
ดูเมตริกเพิ่มเติมและดูข้อมูลเกี่ยวกับวิธีการของเราได้ที่การเปรียบเทียบ Hero
แนวคิดสำคัญ
แนวคิดหลักบางส่วนเกี่ยวกับประสิทธิภาพใน Compose มีดังนี้
- ระยะ: การทำความเข้าใจระยะการจัดองค์ประกอบ เลย์เอาต์ และการวาดเป็นสิ่งสำคัญในการเพิ่มประสิทธิภาพวิธีที่ Compose อัปเดต UI
- โปรไฟล์พื้นฐาน: โปรไฟล์เหล่านี้จะคอมไพล์โค้ดที่จำเป็นไว้ล่วงหน้า ซึ่งช่วยให้เปิดแอปได้เร็วขึ้นและโต้ตอบได้ราบรื่นขึ้น
- ความเสถียร: ทำความเข้าใจวิธีที่ Compose เปรียบเทียบพารามิเตอร์ระหว่างการจัดองค์ประกอบใหม่ เพื่อให้คุณข้ามงานที่ไม่จำเป็นได้โดยไม่ต้องทำการตรวจสอบความเท่ากันที่มีค่าใช้จ่ายสูง
กำหนดค่าแอปอย่างถูกต้อง
หากแอปทำงานได้ไม่ดี อาจเป็นเพราะปัญหาการกำหนดค่า ขั้นตอนแรกที่ดีคือการตรวจสอบตัวเลือกการกำหนดค่าต่อไปนี้
- สร้างในโหมด Release ด้วย R8: ลองเรียกใช้แอปในโหมด Release โหมดแก้ไขข้อบกพร่องมีประโยชน์ในการตรวจหาปัญหาหลายอย่าง แต่ก็ทำให้ประสิทธิภาพลดลงและอาจทำให้ตรวจหาปัญหาอื่นๆ ได้ยาก นอกจากนี้ คุณควรเปิดใช้การเพิ่มประสิทธิภาพและการลดขนาดด้วยคอมไพเลอร์ R8 เพื่อให้บิลด์ที่เผยแพร่มีประสิทธิภาพและประสิทธิผล
- ใช้โปรไฟล์พื้นฐาน: โปรไฟล์พื้นฐานช่วยปรับปรุงประสิทธิภาพด้วยการคอมไพล์โค้ดล่วงหน้าสำหรับเส้นทางของผู้ใช้ที่สำคัญ Compose มีโปรไฟล์เริ่มต้น แต่คุณควรสร้างโปรไฟล์เฉพาะแอปด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรไฟล์พื้นฐานในเอกสารประสิทธิภาพทั่วไปของ Android
เครื่องมือ
ทำความคุ้นเคยกับชุดเครื่องมือที่พร้อมช่วยคุณวัดและวิเคราะห์ประสิทธิภาพของแอป Compose
แนวทางปฏิบัติแนะนำ
เมื่อพัฒนาแอปด้วย Compose โปรดคำนึงถึงแนวทางปฏิบัติแนะนำต่อไปนี้
- หลีกเลี่ยงการคำนวณที่ใช้ทรัพยากรมาก: ใช้
rememberเพื่อแคชผลลัพธ์ของการคำนวณที่ใช้ทรัพยากรมาก - ช่วยเลย์เอาต์แบบ Lazy: ระบุพารามิเตอร์
keyและcontentTypeที่เสถียรให้กับเลย์เอาต์แบบ Lazy เพื่อลดการจัดองค์ประกอบใหม่ที่ไม่จำเป็นและเปิดใช้การนำสล็อตมาใช้ซ้ำ - จำกัดการจัดองค์ประกอบใหม่ที่ไม่จำเป็น: ใช้
computedStateOf(ใน Compose 1.13 ขึ้นไป) หรือderivedStateOfเพื่อจำกัดการจัดองค์ประกอบใหม่เมื่ออ่านสถานะที่เปลี่ยนแปลงอย่างรวดเร็ว - เลื่อนการอ่านสถานะ: เลื่อนการอ่านสถานะให้นานที่สุดโดยรวมไว้ในฟังก์ชัน Lambda
- ใช้ตัวแก้ไข Lambda สำหรับสถานะที่เปลี่ยนแปลง: ใช้ตัวแก้ไขที่อิงตาม Lambda เช่น
Modifier.offset { ... }สำหรับตัวแปรสถานะที่เปลี่ยนแปลงบ่อย - หลีกเลี่ยงการเขียนย้อนกลับ: อย่าเขียนไปยังสถานะที่อ่านแล้วใน Composable
ดูรายละเอียดเพิ่มเติมได้ในคู่มือแนวทางปฏิบัติแนะนำ
ยอดดู
หากคุณทำงานกับมุมมองแทน Compose โปรดดูคู่มือปรับปรุงประสิทธิภาพเลย์เอาต์โดยเฉพาะ
แหล่งข้อมูลเพิ่มเติม
- คู่มือประสิทธิภาพของแอป: ดูแนวทางปฏิบัติแนะนำ ไลบรารี และเครื่องมือต่างๆ เพื่อปรับปรุงประสิทธิภาพใน Android
- ตรวจสอบประสิทธิภาพ: ตรวจสอบประสิทธิภาพของแอป
- การเปรียบเทียบ: เปรียบเทียบประสิทธิภาพของแอป
- การเริ่มต้นแอป: เพิ่มประสิทธิภาพการเริ่มต้นแอป
- โปรไฟล์พื้นฐาน: ทำความเข้าใจโปรไฟล์พื้นฐาน