flutter_ohos_list_performance_demo:基于 Flutter HarmonyOS 的长列表性能演示项目

Flutter 3.44.9 鸿蒙长列表性能实测 Demo,对比 1000 条数据全部构建与按需构建的首帧、滚动和内存表现。

分支1Tags0
文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前

Flutter 3.44.9 HarmonyOS List Performance Demo

「任务流水台」用于对比 1000 条数据在两种列表实现下的首帧构建行为:

  • SingleChildScrollView + Column:首帧创建全部 1000 个列表项。
  • ListView.builder:只创建屏幕附近需要显示的列表项。
  • itemExtent:提前提供固定行高,减少滚动时的尺寸计算。
  • scrollCacheExtent: ScrollCacheExtent.pixels(320):使用新类型配置预构建范围,兼顾滚动手感和资源占用。
  • FrameTiming:点击速度表按钮后,统计滚动过程中的总帧数和超过 16 ms 的慢帧。

项目不依赖第三方插件,使用 Flutter 3.44.9+ohos-0.0.1-canary1,已在 HarmonyOS 7.0.0.105 (API 26) 真机验证。

真机效果

按需构建 全部构建
按需构建首帧 全部构建首帧
按需构建滚动测试 全部构建滚动测试
按需构建滚动测试 全部构建滚动测试

运行

export PATH=/Users/von/Developer/flutter-oh-3.44.9/bin:$PATH
flutter pub get
flutter analyze
flutter test
flutter run -d <ohos-device-id>

真机安装需要本机调试签名。请使用 DevEco Studio 打开 ohos 目录, 在 File > Project Structure > Signing Configs 中生成签名,不要提交证书信息。

性能采样

页面会输出 LIST_BENCHMARK 日志,并显示首帧耗时和首帧创建的列表项数量。 点击速度表按钮后还会输出 SCROLL_BENCHMARK。如需从冷启动直接进入某种模式,可使用:

flutter run --profile --dart-define=LIST_MODE=lazy
flutter run --profile --dart-define=LIST_MODE=eager

系统侧内存可以通过 HiDumper 查看:

hdc shell "hidumper --mem $(pidof com.xjcyber.flutter_ohos_list_performance_demo) --show-dmabuf"

首帧耗时会受到调试模式、设备温度和后台负载影响,应多次采样,不把单次数据当成绝对结论。

License

MIT

项目介绍

Flutter 3.44.9 鸿蒙长列表性能实测 Demo,对比 1000 条数据全部构建与按需构建的首帧、滚动和内存表现。

定制我的领域