Çerçeve zamanlama işlevleri ekleyin

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

TFErrorCode TuningFork_findFidelityParamsInApk(JNIEnv* env, jobject context, const char* filename, CProtobufSerialization* fidelityParams);

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

void TuningFork_startFidelityParamDownloadThread(const CProtobufSerialization* defaultParams, ProtoCallback fidelity_params_callback);

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

TFErrorCode TuningFork_saveOrDeleteFidelityParamsFile(JNIEnv* env, jobject context, const CProtobufSerialization* fidelity_params);

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 ve dev_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.