Lynx

TraceEvent

TraceEvent 是 Lynx 提供的性能埋点工具类。开发者可以通过 TraceEvent 在客户端代码中灵活埋点,记录关键函数、任务、渲染流程等的执行时序和耗时。

Android

beginSection

标记一个 trace event 的开始。

public static void beginSection(String category, String name)
public static void beginSection(String category, String name, Map<String, String> args)

参数说明

category

trace event 的类别

name

trace event 的名称。

args (可选)

自定义的 trace event 参数。

示例

TraceEvent.beginSection("render", "measure-layout");
// ... your code ...
TraceEvent.endSection("render", "measure-layout");

// 添加自定义参数
Map<String, String> args = new HashMap();
args.put("component", "Image");
args.put("size", "large");
TraceEvent.beginSection("render", "draw-image", args);
// ... your code ...
TraceEvent.endSection("render", "draw-image");

endSection

标记一个 trace event 的结束。

public static void endSection(String category, String name)

参数说明

category

trace event 的类别

name

trace event 的名称。

示例

TraceEvent.beginSection("logic", "parse-data");
// ... your code ...
TraceEvent.endSection("logic", "parse-data");

instant

标记一个即时(没有持续时间) trace event。

public static void instant(String category, String name)
public static void instant(String category, String name, Map<String, String> args)

参数说明

category

trace event 的类别

name

trace event 的名称。

args (可选)

自定义的 trace event 参数。

示例

TraceEvent.instant("network", "request-started");

// 添加自定义参数
Map<String, String> args = new HashMap<>();
args.put("url", "https://example.com");
args.put("method", "GET");
TraceEvent.instant("network", "request-finished", args);

iOS

beginSection

标记一个 trace event 的开始。

+ (void)beginSection:(NSString *)category withName:(NSString *)name
+ (void)beginSection:(NSString *)category withName:(NSString *)name debugInfo:(NSDictionary *)args

参数说明

category

trace event 的类别

name

trace event 的名称。

args (可选)

自定义的 trace event 参数。

示例

[LynxTraceEvent beginSection:@"render" withName:@"measure-layout"];
// ... your code ...
[LynxTraceEvent endSection:@"render" withName:@"measure-layout"];

// 添加自定义参数
[LynxTraceEvent beginSection:@"render" withName:@"draw-image" debugInfo:@{@"component": @"Image", @"size": @"large"}];
// ... your code ...
[LynxTraceEvent endSection:@"render" withName:@"draw-image"];

endSection

标记一个 trace event 的结束。

+ (void)endSection:(NSString *)category withName:(NSString *)name

参数说明

category

trace event 的类别

name

trace event 的名称。

示例

[LynxTraceEvent beginSection:@"logic" withName:@"parse-data"];
// ... your code ...
[LynxTraceEvent endSection:@"logic" withName:@"parse-data"];

instant()

标记一个即时(没有持续时间) trace event。

+ (void)instant:(NSString *)category withName:(NSString *)name
+ (void)instant:(NSString *)category withName:(NSString *)name debugInfo:(NSDictionary *)args

参数说明

category

trace event 的类别

name

trace event 的名称。

args (可选)

自定义的 trace event 参数。

示例

[LynxTraceEvent instant:@"network" withName:@"request-started"];

// 添加自定义参数
[LynxTraceEvent instant:@"network" withName:@"request-finished" debugInfo:@{@"url": @"https://example.com", @"method": @"GET"}];

Harmony

beginSection

标记一个 trace event 的开始。

static void beginSection(traceCategory: TraceCategory, name: string, args?: Record<string, string>)

参数说明

category

trace event 的类别

export enum TraceCategory {
  Lynx = 'lynx',
  Vitals = 'vitals',
  Other = 'other'
}
name

trace event 的名称。

args (可选)

自定义的 trace event 参数。

示例

TraceEvent.beginSection(TraceCategory.Other, "measure-layout");
// ... 你的代码 ...
TraceEvent.endSection(TraceCategory.Other, "measure-layout");

// 带自定义参数
const args: Record<string, string> = {
  "src": "https://example.com",
  "size": "large"
}
TraceEvent.beginSection(TraceCategory.Other, "draw-image", args);
// ... 你的代码 ...
TraceEvent.endSection(TraceCategory.Other, "draw-image");

endSection

标记一个 trace event 的结束。

static void endSection(traceCategory: TraceCategory, name: string)

参数说明

category

trace event 的类别

name

trace event 的名称。

示例

TraceEvent.beginSection(TraceCategory.Other, "parse-data");
// ... 你的代码 ...
TraceEvent.endSection(TraceCategory.Other, "parse-data");

instant

标记一个即时(没有持续时间) trace event。

static instant(traceCategory: TraceCategory, name: string, args?: Record<string, string>)

参数说明

category

trace event 的类别

name

trace event 的名称。

args (可选)

自定义的 trace event 参数。

示例

TraceEvent.instant(TraceCategory.Other, "request-started");

// 带自定义参数
const args: Record<string, string> = {
  "url": "https://example.com",
  "method": "GET"
}
TraceEvent.instant(TraceCategory.Other, "request-finished", args);

Desktop (C API)

Desktop public embedder API 通过 C API 宏暴露 trace 辅助能力。

beginSection

标记 trace section 的开始。需要使用相同的 category 和 name 与 LYNX_CAPI_TRACE_END 成对调用。

LYNX_CAPI_TRACE_BEGIN(category, name);

endSection

标记 trace section 的结束。

LYNX_CAPI_TRACE_END(category, name);

instant

记录即时 trace event。

LYNX_CAPI_TRACE_INSTANT(category, name);

counter

记录 counter trace event。

LYNX_CAPI_TRACE_COUNTER(category, name, value, incremental);

示例

void DecodeImage() {
  LYNX_CAPI_TRACE_BEGIN("image", "DecodeImage");
  // ... 你的代码 ...
  LYNX_CAPI_TRACE_END("image", "DecodeImage");
}

LYNX_CAPI_TRACE_INSTANT("network", "RequestStarted");
LYNX_CAPI_TRACE_COUNTER("cache", "EntryCount", 42, false);

兼容性

LCD tables only load in the browser

除非另有说明,本项目采用知识共享署名 4.0 国际许可协议进行许可,代码示例采用 Apache License 2.0 许可协议进行许可。