【Iced】span.rs 文件分析
// span.rs 文件分析usecrate::core::window;useserde::{Deserialize,Serialize};/// 性能追踪的跨度Span枚举/// 定义了应用程序中可以被追踪的不同阶段#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]pubenumSpan{/// 启动阶段Boot,/// 更新阶段 - 处理应用逻辑Update{number:usize,// 更新序号message:String,// 处理的消息tasks:usize,// 任务数量subscriptions:usize,// 订阅数量},/// 视图构建阶段View{window:window::Id,// 窗口ID},/// 布局计算阶段Layout{window:window::Id,// 窗口ID},/// 交互处理阶段Interact{window:window::Id,// 窗口ID},/// 绘制阶段Draw{window:window::Id,// 窗口ID},/// 呈现阶段 - 包含更细粒度的子阶段Present{window:window::Id,// 窗口IDprepare:present::Stage,// 准备阶段耗时render:present::Stage,// 渲染阶段耗时layers:usize,// 图层数量},/// 自定义阶段Custom{name:String,// 自定义阶段名称},}/// 扁平化的阶段枚举用于序列化#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]pubenumStage{Boot,// 启动阶段Update,// 更新阶段View(window::Id),// 视图阶段带窗口IDLayout(window::Id),// 布局阶段带窗口IDInteract(window::Id),// 交互阶段带窗口IDDraw(window::Id),// 绘制阶段带窗口IDPresent(window::Id),// 呈现阶段带窗口IDPrepare(present::Primitive),// 准备阶段带图元类型Render(present::Primitive),// 渲染阶段带图元类型Custom(String),// 自定义阶段}/// 为Stage实现Display trait使其可以转换为字符串implstd::fmt::DisplayforStage{fnfmt(self,f:mutstd::fmt::Formatter_)-std::fmt::Result{f.write_str(matchself{Stage::BootBoot,Stage::UpdateUpdate,Stage::View(_)View,Stage::Layout(_)Layout,Stage::Interact(_)Interact,Stage::Draw(_)Draw,Stage::Prepare(_)Prepare,Stage::Render(_)Render,Stage::Present(_)Present,Stage::Custom(name)name,})}}/// 呈现相关的子模块pubmodpresent{usecrate::core::time::Duration;useserde::{Deserialize,Serialize};/// 呈现阶段的性能数据/// 记录各种渲染操作的耗时#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]pubstructStage{pubquads:Duration,// 四边形渲染耗时pubtriangles:Duration,// 三角形渲染耗时pubshaders:Duration,// 着色器执行耗时pubtext:Duration,// 文本渲染耗时pubimages:Duration,// 图片渲染耗时}/// 渲染图元类型枚举/// 定义了基本的渲染元素类型#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]pubenumPrimitive{Quad,// 四边形Triangle,// 三角形Shader,// 着色器Text,// 文本Image,// 图片}}文件说明主要用途这是icedGUI 框架的性能追踪系统的一部分用于收集和分析应用程序各个阶段的性能数据。核心组件Span枚举定义了应用生命周期中的主要阶段包含详细的性能数据字段Stage枚举Span的扁平化版本主要用于序列化和数据交换present模块提供渲染阶段的细粒度性能数据收集特性支持详细的性能分析可序列化通过 Serde便于导出和可视化支持自定义追踪阶段区分不同窗口的独立性能数据这个系统允许开发者追踪从启动到渲染的完整应用生命周期帮助识别性能瓶颈和优化应用性能。