Ra mắt dịch vụ hỗ trợ Tối ưu hoá theo hướng dẫn của hồ sơ trong AGDE phiên bản 22.2.71.
Xác định vị trí phần cài đặt PGO
Mở phần cài đặt dự án trên Solution Explorer (Trình khám phá giải pháp).
Hình 1: Cửa sổ Solution Explorer (Trình khám phá giải pháp) trong Visual Studio.
Hãy nhớ đặt Nền tảng của bạn thành một cấu hình Android (ví dụ: Android-arm64-v8a).
Trong bảng điều khiển bên trái, hãy chọn Configuration Properties > General (Thuộc tính cấu hình > Chung). Sau đó, tìm nhóm thuộc tính có tên là PGO.
Hình 2: Hộp thoại Project Properties (Thuộc tính của dự án).
Bật bản dựng PGO-Instrumented (Được đo lường theo PGO) trong dự án
Thêm cấu hình mới có tên là Instrumented (Đo lường) vào dự án của bạn. Cấu hình này dựa trên cấu hình mà bạn sử dụng trong quá trình phát triển để kiểm thử. Đây sẽ là bản dựng được tối ưu hoá theo truyền thống (bạn vẫn có thể bật thêm các tính năng gỡ lỗi, miễn là bạn giữ nguyên chế độ cài đặt tối ưu hoá của trình biên dịch).
Nhấp vào Configuration Manager… (Trình quản lý cấu hình…) trong hộp thoại Property page (Trang thuộc tính).
Hình 3: Hộp thoại Configuration Manager (Trình quản lý cấu hình).
Trong hộp thoại Configuration Manager (Trình quản lý cấu hình), hãy chọn trình đơn thả xuống Active solution configuration (Cấu hình giải pháp đang hoạt động) rồi chọn <New…> (Mới).
Hình 4: Tạo cấu hình bản dựng mới.
… và tạo một cấu hình PGO-Instrumented (Được đo lường theo PGO) mới.
Hình 5: Hộp thoại New Solution Configuration (Cấu hình giải pháp mới).
Nếu muốn cho phép xây dựng ở chế độ PGO-Instrumented (Được đo lường theo PGO) để bạn có thể tạo một hồ sơ cho trò chơi của mình, hãy chọn Instrumented (Được đo lường) trong danh sách các tuỳ chọn cho tuỳ chọn cài đặt Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ).
Hình 6: Hộp thoại Thuộc tính của dự án với các chế độ cài đặt PGO được làm nổi bật.
Đối với chế độ cài đặt Profile Guided Optimization Profiles (Cấu hình tối ưu hoá theo hướng dẫn của hồ sơ), hãy nhập đường dẫn đến thư mục đó để ghi tệp dữ liệu hồ sơ đầu ra thô vào thiết bị Android của bạn.
Thông thường, giá trị này sẽ có dạng /data/data/<package
name>/cache/
– trong đó <package name>
là tên gói đầy đủ của tệp APK, ví dụ: com.google.sample.tunnel.
Để biết thêm thông tin chuyên sâu về cách hoạt động của tính năng này, hãy xem tài liệu về Clang.
Ghi dữ liệu hồ sơ PGO-Instrumented (Được đo lường theo PGO) vào thiết bị của bạn
Hệ thống đo lường bằng PGO thường ghi dữ liệu PGO vào thiết bị khi một quy trình thoát. Trên Android, các ứng dụng không thoát mà luôn bị chấm dứt. Điều này nghĩa là chức năng "ghi vào ổ đĩa" mặc định không bao giờ kích hoạt và ứng dụng của bạn phải ghi dữ liệu PGO theo cách thủ công.
Ứng dụng của bạn phải gọi __llvm_profile_write_file
một cách rõ ràng để ghi dữ liệu hồ sơ. Ký hiệu này chỉ có sẵn khi tạo một bản dựng PGO-Instrumented (Được đo lường theo PGO). Để làm việc này dễ dàng hơn, bạn nên sử dụng mẫu sau đây khi khai báo trước __llvm_profile_write_file
.
#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif
Việc gọi hàm này sẽ ghi dữ liệu hồ sơ vào thư mục mà bạn đã chỉ định trước đó.
Thực hiện một lượt chạy hồ sơ
Để tạo hồ sơ, bạn cần chạy APK bản dựng đã đo lường bằng PGO trên thiết bị mục tiêu. Sau khi bạn thực thi mã theo mong muốn và đã kích hoạt lệnh gọi đến hàm __llvm_profile_write_file
, ứng dụng sẽ ghi dữ liệu hồ sơ vào bộ nhớ.
Tại thời điểm này, hãy sao chép các hồ sơ từ thiết bị để trình biên dịch sử dụng.
Chuẩn bị dữ liệu hồ sơ để trình biên dịch sử dụng
Khi được sử dụng riêng biệt, llvm-profdata
của công cụ dòng lệnh vận chuyển dưới dạng một phần của Clang/LLVM trong Android NDK sẽ được dùng để chuẩn bị tệp dữ liệu hồ sơ mà trình biên dịch sử dụng trong quá trình tối ưu hoá bản dựng theo hướng dẫn của hồ sơ.
AGDE tự động thực hiện bước này cho bạn bằng cách hợp nhất mọi tệp dữ liệu hồ sơ mà bạn đã thêm vào dự án, và sử dụng các tệp đó khi tuỳ chọn cài đặt Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ) trong các trang thuộc tính của dự án được đặt thành Optimized (Tối ưu hoá).
Xây dựng dự án khi bật tính năng Tối ưu hoá theo hướng dẫn của hồ sơ
Sau khi bạn ghi lại (các) hồ sơ của mình và thêm hồ sơ đó vào dự án, trình biên dịch có thể dùng dữ liệu đó để tinh chỉnh tính năng tối ưu hoá bản dựng.
Tạo một cấu hình dự án mới cho Bản dựng PGO-Optimized (Được tối ưu hoá theo PGO) để bạn chỉ xây dựng ở chế độ này khi cần.
Hình 7: Tạo cấu hình Bản dựng PGO-Optimized (Được tối ưu hoá theo PGO) mới.
Đặt tuỳ chọn cài đặt Profile-Guided Optimization Mode (Chế độ tối ưu hoá theo hướng dẫn của hồ sơ) trong các trang thuộc tính của dự án thành Optimized (Tối ưu hoá).
Hình 8: Đặt chế độ Tối ưu hoá PGO thành Optimized (Tối ưu hoá).
Sao chép các tệp từ thiết bị và thêm các tệp đó vào dự án của bạn trong Solution Explorer (Trình khám phá giải pháp). Trình biên dịch chọn các tệp dữ liệu hồ sơ này vào lần tiếp theo bạn dựng cấu hình PGO-Optimized (Được tối ưu hoá theo PGO) và dùng chúng để tinh chỉnh cách tối ưu hoá mã của bạn.
Bạn có thể sao chép các tệp dữ liệu hồ sơ vào dự án từ thiết bị bằng cách dùng ADB hoặc Trình khám phá trên thiết bị Android.
Sử dụng tính năng Tối ưu hoá theo hướng dẫn của hồ sơ bên ngoài AGDE
Nếu đang sử dụng một hệ thống xây dựng không được AGDE hỗ trợ, bạn có thể phải chỉnh sửa trực tiếp bản dựng của mình. Tiếng Clang
tài liệu
bao gồm các nút chuyển cần thiết – -fprofile-generate
và
-fprofile-use
.
Nếu bạn đang sử dụng một công cụ phần mềm trung gian cho trò chơi, hãy tham khảo tài liệu về công cụ đó để xem cách bật PGO (nếu được hỗ trợ).