ใช้โปรไฟล์พื้นฐาน
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
โปรไฟล์พื้นฐานช่วยปรับปรุงความเร็วในการเรียกใช้โค้ดประมาณ 30% ตั้งแต่การเปิดตัวครั้งแรก
โดยหลีกเลี่ยงขั้นตอนการตีความและการคอมไพล์แบบทันที (JIT) สำหรับเส้นทางโค้ดที่รวมไว้
การจัดส่ง Baseline Profile ในแอปหรือไลบรารีจะช่วยให้ Android Runtime (ART) เพิ่มประสิทธิภาพเส้นทางโค้ดที่รวมไว้ผ่านการคอมไพล์ล่วงหน้า (AOT) ซึ่งจะช่วยเพิ่มประสิทธิภาพสำหรับการติดตั้งแอปใหม่ทุกครั้งและการอัปเดตแอปทุกครั้ง การเพิ่มประสิทธิภาพที่แนะนำโดยโปรไฟล์ (PGO)
ช่วยให้แอปเพิ่มประสิทธิภาพการเริ่มต้น ลดความหน่วงของการโต้ตอบ และปรับปรุงประสิทธิภาพรันไทม์โดยรวม
ตั้งแต่การเปิดตัวครั้งแรกสำหรับผู้ใช้ปลายทาง
เขียนข้อควรพิจารณาด้านประสิทธิภาพ
Compose จะจัดจำหน่ายเป็นไลบรารีแทนที่จะเป็นส่วนหนึ่งของแพลตฟอร์ม Android
แนวทางนี้ช่วยให้ทีม Compose อัปเดต Compose ได้บ่อยครั้งและรองรับ Android เวอร์ชันต่างๆ ได้อย่างกว้างขวาง
อย่างไรก็ตาม การเผยแพร่ Compose เป็นไลบรารีมี
ค่าใช้จ่าย
ระบบได้คอมไพล์และติดตั้งโค้ดแพลตฟอร์ม Android ไว้ในอุปกรณ์แล้ว
อย่างไรก็ตาม ต้องโหลดไลบรารีเมื่อเปิดแอปและตีความ JIT
เมื่อจำเป็น ซึ่งอาจทำให้แอปทำงานช้าลงเมื่อเริ่มต้นและเมื่อใช้ฟีเจอร์คลัง
เป็นครั้งแรก
ประโยชน์ของโปรไฟล์พื้นฐาน
คุณปรับปรุงประสิทธิภาพได้โดยการกําหนดโปรไฟล์พื้นฐาน โปรไฟล์เหล่านี้
กำหนดคลาสและเมธอดที่จำเป็นในเส้นทางของผู้ใช้ที่สำคัญ และจะเผยแพร่
พร้อมกับ APK หรือ AAB ของแอป ในระหว่างการติดตั้งแอป ART จะคอมไพล์โค้ดที่สำคัญนี้
แบบ AOT เพื่อให้พร้อมใช้งานเมื่อแอปเปิดตัว
การกำหนด Baseline Profile ที่ดีอาจไม่ง่ายเสมอไป ด้วยเหตุนี้ Compose จึงมาพร้อมกับ Baseline Profile โดยค่าเริ่มต้น คุณอาจไม่ต้องดำเนินการใดๆ เพื่อ
รับสิทธิประโยชน์นี้ อย่างไรก็ตาม Baseline Profile ที่มาพร้อมกับ Compose จะมีการเพิ่มประสิทธิภาพสำหรับโค้ดภายในไลบรารี Compose เท่านั้น
มาโครเบนช์มาร์ก
หากต้องการได้รับการเพิ่มประสิทธิภาพที่ดีที่สุด ให้สร้างโปรไฟล์พื้นฐาน
สำหรับแอปที่ใช้ Macrobenchmark เพื่อครอบคลุมเส้นทางของผู้ใช้ที่สำคัญ เมื่อ
กำหนดโปรไฟล์ของคุณเอง คุณต้องทดสอบโปรไฟล์เพื่อยืนยันว่าโปรไฟล์
ช่วยได้จริง วิธีที่ดีในการทำเช่นนั้นคือการเขียนการทดสอบ Macrobenchmark สำหรับแอปของคุณ และตรวจสอบผลการทดสอบขณะเขียนและแก้ไข Baseline Profile
ดูตัวอย่างวิธีเขียนการทดสอบ Macrobenchmark สำหรับ UI ของ Compose ได้ที่ตัวอย่าง Macrobenchmark Compose
แหล่งข้อมูลเพิ่มเติม
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Use a baseline profile\n\n[Baseline Profiles](/baseline-profiles) improve code execution speed by about 30% from the first\nlaunch by avoiding interpretation and just-in-time (JIT) compilation steps for\nincluded code paths. By shipping a Baseline Profile in an app or library, you\nenable Android Runtime (ART) to optimize included code paths through\nahead-of-time (AOT) compilation, providing performance enhancements for every\nnew app install and every app update. This profile-guided optimization (PGO)\nlets apps optimize startup, reduce interaction jank, and improve overall runtime\nperformance from the first launch for end users.\n\nCompose performance considerations\n----------------------------------\n\nCompose is distributed as a library instead of as part of the Android platform.\nThis approach lets the Compose team update Compose frequently and support a wide\nrange of Android versions. However, distributing Compose as a library imposes a\ncost.\n\nAndroid platform code is already compiled and installed on the device.\nLibraries, however, need to be loaded when the app launches and interpreted JIT\nwhen needed. This can slow the app on startup and when it uses a library feature\nfor the first time.\n\nBenefits of baseline profiles\n-----------------------------\n\nYou can improve performance by defining [Baseline Profiles](/topic/performance/baselineprofiles/overview). These profiles\ndefine classes and methods needed on critical user journeys and are distributed\nwith your app's APK or AAB. During app installation, ART compiles this critical\ncode AOT so that it's ready for use when the app launches.\n\nA good Baseline Profile definition is not always straightforward, and because\nof this, Compose ships with one by default. You might not have to do any work to\nsee this benefit. However, the Baseline Profile that ships with Compose only\ncontains optimizations for the code within the Compose library.\n\n### Macrobenchmark\n\nTo get the best optimization, [create a Baseline Profile](/topic/performance/baselineprofiles/create-baselineprofile)\nfor your app that uses [Macrobenchmark](/studio/profile/macrobenchmark-overview) to cover critical user journeys. When\nyou define your own profile, you must test the profile to verify that it's\nhelping. A good way to do that is to write [Macrobenchmark](/studio/profile/macrobenchmark-overview) tests for your\napp and check the test results as you write and revise your Baseline Profile.\n\nFor an example of how to write Macrobenchmark tests for your Compose UI, see the\n[Macrobenchmark Compose sample](https://github.com/android/performance-samples/tree/main/MacrobenchmarkSample).\n\nAdditional Resources\n--------------------\n\n- **[App performance guide](/topic/performance/overview)**: Discover best practices, libraries, and tools to improve performance on Android.\n- **[Inspect Performance](/topic/performance/inspecting-overview):** Inspect app performance.\n- **[Benchmarking](/topic/performance/benchmarking/benchmarking-overview):** Benchmark app performance.\n- **[App startup](/topic/performance/appstartup/analysis-optimization):** Optimize app startup.\n- **[Baseline profiles](/baseline-profiles):** Understand baseline profiles."]]