Tuning Fork kitaplığını entegre etmek için bu konudaki işlevleri kullanın içine girmelisiniz.
include/tuningfork/tuningfork.h
alan adındaki başlık dosyası, temel arayüzü içeriyor
Tuning Fork kütüphanesi için. Şu konumdaki dosya:
include/tuningfork/tuningfork_extra.h
, yardımcı program işlevleri içeriyor.
Bazı işlevler, protokol arabelleklerinin serileştirilmesini alır. DMAIC ve Yalın Altı Sigma yaklaşımı protokol arabelleklerine eklemeniz gerekir. Protokol arabellekleri hakkında.
İşlev parametreleri ve döndürülen değerler başlıklarda açıklanmıştır ve referans API belgelerine bakın.
Android Performance Tuner yaşam döngüsü işlevleri
Tuning Fork'un yaşam döngüsünü kontrol etmek için aşağıdaki işlevleri kullanın örneğidir.
Başlat
TFErrorCode TuningFork_init(const TFSettings* settings, JNIEnv* env, jobject
context);
Bu işlevi başlangıçta bir kez (genellikle yerel koddan) çağırmanız gerekir
uygulamanın onCreate()
yöntemi tarafından yürütülüyor. Teklifin, kampanyanın
Tuning Fork kitaplığı.
assets/tuningfork
içinde tuningfork_settings.bin
dosyanız olmalıdır
(ör. histogram ve ek açıklama ayarlarını içerir) Alıcı:
metin dosyasını ikili sisteme dönüştürmek için, bkz.
Metin ve ikili gösterimler karşılaştırması.
settings
için doldurduğunuz alanlar, kitaplığın kendisini nasıl başlatacağını belirler.
/**
* @brief Initialization settings
* Zero any values that are not being used.
*/
struct TFSettings {
/**
* Cache object to be used for upload data persistence.
* If unset, data is persisted to /data/local/tmp/tuningfork
*/
const TFCache* persistent_cache;
/**
* The address of the Swappy_injectTracers function.
* If this is unset, you need to call TuningFork_tick explicitly.
* If it is set, telemetry for 4 instrument keys is automatically recorded.
*/
SwappyTracerFn swappy_tracer_fn;
/**
* Callback
* If set, this is called with the fidelity parameters that are downloaded.
* If unset, you need to call TuningFork_getFidelityParameters explicitly.
*/
ProtoCallback fidelity_params_callback;
/**
* A serialized protobuf containing the fidelity parameters to be uploaded
* for training.
* Set this to nullptr if you are not using training mode. Note that these
* are used instead of the default parameters loaded from the APK, if they
* are present and there are neither a successful download nor saved parameters.
*/
const CProtobufSerialization* training_fidelity_params;
/**
* A null-terminated UTF-8 string containing the endpoint that Tuning Fork
* will connect to for parameter, upload, and debug requests. This overrides
* the value in base_uri in the settings proto and is intended for debugging
* purposes only.
*/
const char* endpoint_uri_override;
/**
* The version of Swappy that swappy_tracer_fn comes from.
*/
uint32_t swappy_version;
/**
* The number of each metric that is allowed to be allocated at any given
* time. If any element is zero, the default for that metric type is used.
* Memory for all metrics is allocated up-front at initialization. When all
* metrics of a given type are allocated, further requested metrics are not
* added and data is lost.
*/
TuningFork_MetricLimits max_num_metrics;
};
Swappy_injectTracer()
işlevini iletirseniz
(OpenGL,
Vulkan) önce gelir.
sırasında Frame Pacing API'sinden, Tuning Fork kitaplığından
Siz onay işaretini çağırmadan kare süresini otomatik olarak kaydeder
anlamına gelir. Bu işlem demo uygulamasında yapılır:
void InitTf(JNIEnv* env, jobject activity) {
SwappyGL_init(env, activity);
swappy_enabled = SwappyGL_isEnabled();
TFSettings settings {};
if (swappy_enabled) {
settings.swappy_tracer_fn = &SwappyGL_injectTracer;
settings.swappy_version = Swappy_version();
}
...
}
Yok Et
TFErrorCode TuningFork_destroy();
Bu işlevi kapanma sırasında çağırabilirsiniz. Bu işlev, herhangi bir bellek dağıtılmadan önce daha sonra yüklenmek üzere kullanılmak üzere saklanan histogram verileri kitaplığı tarafından kullanılıyor.
Gömme
TFErrorCode TuningFork_flush();
Bu işlev, kaydedilen histogramları temizler (örneğin, oyun arka plana veya ön plana gönderilir). Belirlenen minimum değerde veriler varsayılan olarak bir dakika olan yükleme süresi, önceki yükleme.
Doğruluk parametrelerini ayarla
TFErrorCode TuningFork_setFidelityParameters(const CProtobufSerialization*
params);
Bu işlev, çerçeve verilerinin kullanıldığı mevcut doğruluk parametrelerini geçersiz kılar ilişkilendirilmiş. Bir oyuncu ayarlarını yapabilir.
Ek Açıklamalar
TFErrorCode TuningFork_setCurrentAnnotation(const CProtobufSerialization*
annotation);
Bu işlev, ek açıklamayı sonraki değer çizgileriyle ilişkilendirilecek şekilde ayarlar. Şunu döndürür:
TFERROR_INVALID_ANNOTATION
ek açıklamanın kodu çözülürken hata oluştu ve
Hata yoksa TFERROR_OK
.
Çerçeve başına işlevler
TFErrorCode TuningFork_frameTick(TFInstrumentKey key);
Bu işlev, belirtilen key
değeri ile bir önceki işaret arasındaki süreyi kaydeder
ve key
ile ilişkili olarak histogramdaki geçerli saat ve geçerli saat
ek açıklaması da yer alır.
TFErrorCode TuningFork_frameDeltaTimeNanos(TFInstrumentKey key, TFDuration
dt);
Bu işlev, key
ve
geçerli ek açıklamadır.
TFErrorCode TuningFork_startTrace(TFInstrumentKey key, TraceHandle* handle);
Bu işlev, herkese açık kullanıcı adını belirtilen key
ile ilişkilendirilmiş izleme herkese açık kullanıcı adı olarak ayarlar.
TFErrorCode TuningFork_endTrace(TraceHandle handle);
Bu işlev, ilişkilendirilen
TuningFork_startTrace()
çağrısı, kullanılan key
ve geçerli
ek açıklaması da yer alır.
Uygulama yaşam döngüsü işlevleri
typedef enum TuningFork_LifecycleState {
TUNINGFORK_STATE_UNINITIALIZED = 0,
TUNINGFORK_STATE_ONCREATE = 1,
TUNINGFORK_STATE_ONSTART = 2,
TUNINGFORK_STATE_ONSTOP = 3,
TUNINGFORK_STATE_ONDESTROY = 4,
} TuningFork_LifecycleState;
TFErrorCode TuningFork_reportLifecycleEvent(TuningForkLifecycleState state);
Bu işlevi, oyunun ana Etkinlik, geçme uygun enum'u seçin. Oyunun yaşam döngüsü olaylarını kaydederek APT daha iyidir oyununuzun ne zaman kilitlendiğini veya kullanıcıların ne zaman oyundan çıkabileceğini anlayabilir (örneğin, uzun yükleme etkinlikleri sırasında).
Gelişmiş işlevler
tuningfork_extra.h
uygulamasında aşağıdaki işlevler kullanılabilir.
APK'da dosya bulma ve yükleme
Bu işlev şuradaki assets/tuningfork
dizininden fidelityParams
dosyasını yükler:
belirtilen dosya adına sahip APK'yı seçin. fidelityParams
, bir
FidelityParams
mesaj. Daha fazla bilgi için bkz.
Kalite seviyelerini tanımlayın.
Serileştirmenin sahipliği arayana iletilir. Arayan kişi de çağrıyı yapmalıdır
CProtobufSerialization_Free
.
Doğruluk parametrelerini ayrı bir iş parçacığında indir
Doğruluk parametrelerini almak için bir indirme iş parçacığını etkinleştirir. İleti dizisi, isteği gönderir. İndirilen parametreler yerel olarak depolanır. Uygulama yeniden başlatıldığında, indirilen bu parametreleri kullanır. yerine varsayılan parametreleri kullanın.
Cihazda depolanan doğruluk parametrelerini kaydedin ve silin
Bu işlev yalnızca doğruluk parametrelerinin daha uygun olduğu uzman modunda
bir sunucudan indirilir. Şu anda öğe kaydediyor veya silinir (fidelity_params
null ise) sunucuya erişilemediğinde kullanılan yerel olarak depolanan dosyalardır.
Web istekleri
Kitaplık, sunucu uç noktasına aşağıdaki türde istekler gönderir:
- İlk kullanıma hazırlama sırasında
generateTuningParameters
isteği yapılır. - Oyun sırasında düzenli aralıklarla
uploadTelemetry
isteği gönderilir sunucuya gönderilir. - Hata ayıklama APK'ları
debugInfo
istekleri de gönderebilir. Bu istekler, hata ayıklama sunucusuna bildirilir ayarlarını, varsayılan doğruluk parametrelerini vedev_tuningfork.proto
inceleyeceğiz.
Çevrimdışı oyuncular
İlk kullanıma hazırlama sırasında kullanılabilir bağlantı yoksa istek yeniden denenir artan geri dönüş süresiyle birkaç kez karşılaştırılır.
Yükleme sırasında bağlantı yoksa yükleme önbelleğe alınır. Size
bir
TFCache
nesne hazırlanır. Kendi önbelleğinizi sağlamazsanız, yüklemeler
geçici depolamada dosya olarak depolanır.