87 lines
3.1 KiB
C
87 lines
3.1 KiB
C
#ifndef ANDROID_DVR_BENCHMARK_H_
|
|
#define ANDROID_DVR_BENCHMARK_H_
|
|
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
|
|
#include <cutils/trace.h>
|
|
|
|
#include <private/dvr/clock_ns.h>
|
|
|
|
// Set benchmark traces, using Android systrace.
|
|
//
|
|
// The simplest one-parameter version of btrace automatically sets the
|
|
// timestamp with the system clock. The other versions can optionally set the
|
|
// timestamp manually, or pass additional data to be written to the log line.
|
|
//
|
|
// Example:
|
|
// Btrace("Start execution");
|
|
// ... code to benchmark ...
|
|
// Btrace("End execution");
|
|
//
|
|
// Use compute_benchmarks.py
|
|
// with the trace path "Start execution,End execution",
|
|
// to report the elapsed time between the two calls.
|
|
//
|
|
// Btrace will either output to standard atrace, or to a file if specified.
|
|
// The versions BtraceData also allow an int64_t to be included in the trace.
|
|
|
|
// Btrace without data payload.
|
|
static inline void Btrace(const char* name, int64_t nanoseconds_monotonic);
|
|
static inline void Btrace(const char* name);
|
|
static inline void Btrace(FILE* file, const char* name,
|
|
int64_t nanoseconds_monotonic);
|
|
static inline void Btrace(FILE* file, const char* name);
|
|
|
|
// Btrace with data payload.
|
|
static inline void BtraceData(const char* name, int64_t nanoseconds_monotonic,
|
|
int64_t data);
|
|
static inline void BtraceData(const char* name, int64_t data);
|
|
static inline void BtraceData(FILE* file, const char* name,
|
|
int64_t nanoseconds_monotonic, int64_t data);
|
|
static inline void BtraceData(FILE* file, const char* name, int64_t data);
|
|
|
|
static inline void Btrace(const char* name, int64_t nanoseconds_monotonic) {
|
|
const int kLogMessageLength = 256;
|
|
char log_message[kLogMessageLength];
|
|
snprintf(log_message, kLogMessageLength, "#btrace#%s", name);
|
|
atrace_int64(ATRACE_TAG_WEBVIEW, log_message, nanoseconds_monotonic);
|
|
}
|
|
|
|
static inline void Btrace(const char* name) {
|
|
Btrace(name, android::dvr::GetSystemClockNs());
|
|
}
|
|
|
|
static inline void Btrace(FILE* file, const char* name,
|
|
int64_t nanoseconds_monotonic) {
|
|
fprintf(file, "#btrace#%s|%" PRId64 "\n", name, nanoseconds_monotonic);
|
|
}
|
|
|
|
static inline void Btrace(FILE* file, const char* name) {
|
|
Btrace(file, name, android::dvr::GetSystemClockNs());
|
|
}
|
|
|
|
static inline void BtraceData(const char* name, int64_t nanoseconds_monotonic,
|
|
int64_t data) {
|
|
const int kLogMessageLength = 256;
|
|
char log_message[kLogMessageLength];
|
|
snprintf(log_message, kLogMessageLength, "#btrace#%s|%" PRId64, name, data);
|
|
atrace_int64(ATRACE_TAG_WEBVIEW, log_message, nanoseconds_monotonic);
|
|
}
|
|
|
|
static inline void BtraceData(const char* name, int64_t data) {
|
|
BtraceData(name, android::dvr::GetSystemClockNs(), data);
|
|
}
|
|
|
|
static inline void BtraceData(FILE* file, const char* name,
|
|
int64_t nanoseconds_monotonic, int64_t data) {
|
|
fprintf(file, "#btrace#%s|%" PRId64 "|%" PRId64 "\n", name, data,
|
|
nanoseconds_monotonic);
|
|
}
|
|
|
|
static inline void BtraceData(FILE* file, const char* name, int64_t data) {
|
|
BtraceData(file, name, android::dvr::GetSystemClockNs(), data);
|
|
}
|
|
|
|
#endif // ANDROID_DVR_BENCHMARK_H_
|