SuperAPI AI 工具集

maui-performance

设计与创作

查看项目

更新于 10-15 20:34

技能介绍

该技能提供 .NET MAUI 应用性能优化指导,核心原则是先分析再优化。

性能分析:可用 dotnet-trace 跨平台采集跟踪,命令为 dotnet-trace collect --process-id <PID> --providers Microsoft-DotNETCore-SampleProfiler;Windows 上可用 PerfView 深入分析 WinUI 的分配与 CPU。

编译绑定:在页面/视图上设置 x:DataType 启用编译绑定,比反射绑定快 8–20 倍,也是 NativeAOT 与完整裁剪的前提;应在合理最高作用域设置,DataTemplate 根节点也需设置;静态内容避免使用绑定,改用字面值或 x:Static。

布局优化:避免嵌套单子元素布局;优先用 Grid 而非嵌套 StackLayout,因 Grid 单次完成布局;用 IsVisible="False" 隐藏元素而非动态增删;移除多余包装容器;避免用 AbsoluteLayout 替代 Grid;已知尺寸时设置明确 WidthRequest/HeightRequest。

列表:CollectionView 在项目等高时设 ItemSizingStrategy="MeasureFirstItem";新开发优先 CollectionView 而非 ListView;保持 DataTemplate 视觉树浅。

图片:按显示分辨率加载,设置 AspectFill/AspectFit 和明确尺寸;UriImageSource 默认 CachingEnabled="True" 并设置 CacheValidity;使用平台合适格式;图标优先 SVG 或矢量字体图标。

资源字典:应用级放共享样式、颜色与转换器;页面级放单页资源;避免重复;用 MergedDictionaries 组织大型资源集。

启动优化:减少 App 与 MainPage 构造函数中的工作;推迟非必要服务注册;减少启动时解析的 XAML 页面;移除未用的 Handlers/Effects 注册。

裁剪与 NativeAOT:通过 PublishTrimmed 与 TrimMode 启用 IL 裁剪,用 [DynamicDependency] 等保留反射目标,编译绑定必不可少;NativeAOT 需编译绑定、无不受约束反射且兼容裁剪的代码,使用 [JsonSerializable] 源生成器,发布前用 AOT 验证无警告。