# realm_dart_benchmark **Repository Path**: doule/realm_dart_benchmark ## Basic Information - **Project Name**: realm_dart_benchmark - **Description**: 这是一个用于测试 Realm Dart 数据库性能的 Flutter 基准测试应用程序。该应用程序可以测量在不同数据量下,Realm 数据库的创建、读取关联数据、更新和删除操作的性能表现。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-11 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Realm Dart Benchmark 这是一个用于测试 Realm Dart 数据库性能的 Flutter 基准测试应用程序。该应用程序可以测量在不同数据量下,Realm 数据库的创建、读取关联数据、更新和删除操作的性能表现。 ## 功能特性 - 支持配置不同数据量的基准测试(默认测试 10,000 条记录) - 可自定义测试迭代次数(默认 3 次) - 自动生成 CSV 格式的性能报告 - 保存测试结果到本地文件系统 - 简单直观的用户界面,显示测试结果 - 适配 OpenHarmony 平台的 Realm Dart 实现 ## 基准测试指标 应用程序测量以下数据库操作的性能: - **创建操作**:创建指定数量的 Player 和 Team 对象 - **关联读取**:遍历 Team 对象及其关联的 Player 对象 - **更新操作**:更新所有 Player 对象的属性 - **删除操作**:删除所有测试数据 每个操作的执行时间以毫秒为单位记录,并生成 CSV 格式的报告。 ## 技术栈 - Flutter 框架 - Dart 语言 - Realm Dart 数据库 - 适配 OpenHarmony 平台 ## 数据模型 应用程序使用三个主要的数据模型: - **Player**:表示运动员,包含 ID、姓名和号码属性 - **Team**:表示团队,包含 ID、名称和关联的 Player 列表 - **Game**:表示比赛,包含 ID、日期、主客队信息和比分 ## 项目结构 ``` lib/ ├── main.dart # 应用程序入口和 UI 实现 └── src/ └── realm/ ├── benchmark.dart # 基准测试逻辑实现 └── schemas.dart # Realm 数据模型定义 ``` ## 开始使用 ### 前提条件 - Flutter SDK 已安装 - 支持的开发环境(Android、iOS、OpenHarmony) ### 安装和运行 1. 克隆项目仓库 2. 安装依赖: ``` flutter pub get ``` 3. 运行应用程序: ``` flutter run ``` ### 使用说明 1. 应用程序启动后,会自动尝试加载之前的测试结果(如果存在) 2. 点击 "Run Benchmark" 按钮开始新的基准测试 3. 测试过程中显示加载指示器 4. 测试完成后,结果会显示在界面上并保存到本地文件系统 ## 自定义测试参数 要修改测试的数据量和迭代次数,可以在 `main.dart` 文件中修改 `_runBenchmarkInBackground` 函数中的参数: ```dart // 修改这行代码中的参数 benchmark.run([10000, 10000], 3); ``` - 第一个参数是数据量数组,可以测试多个不同的数据量 - 第二个参数是迭代次数 ## 测试结果 测试结果以 CSV 格式保存在应用程序的文档目录中,文件名为时间戳加上 `_benchmark_results.csv` 后缀。CSV 文件包含以下列: - `operation`:操作类型(create、read_assoc、update、delete) - `data_volume`:测试的数据量 - `iteration`:迭代次数 - `time_ms`:执行时间(毫秒) ### 实际测试数据 以下是测试的实际运行结果(数据量:10,000 条记录,迭代次数:3 次): | 操作类型 | 数据量 | 迭代次数 | 执行时间(毫秒) | |---------|-------|---------|--------------| | create | 10000 | 1 | 2729 | | read_associated | 10000 | 1 | 33 | | update | 10000 | 1 | 69 | | delete | 10000 | 1 | 7 | | create | 10000 | 2 | 2442 | | read_associated | 10000 | 2 | 13 | | update | 10000 | 2 | 64 | | delete | 10000 | 2 | 8 | | create | 10000 | 3 | 2467 | | read_associated | 10000 | 3 | 2 | | update | 10000 | 3 | 43 | | delete | 10000 | 3 | 3 | ### 测试结果分析 根据测试数据,我们可以得出以下结论: 1. **创建操作**:创建 10,000 条记录和相应的团队关系平均需要约 2,500 毫秒。第一次迭代略慢(2,729 毫秒),后续迭代性能有所提升。 2. **关联读取**:遍历所有团队及其关联的球员数据非常高效,平均只需约 10 毫秒。随着迭代次数增加,性能进一步优化,第三次迭代仅需 2 毫秒。 3. **更新操作**:更新所有球员记录的属性平均需要约 55 毫秒,性能稳定。 4. **删除操作**:删除所有测试数据非常迅速,平均只需约 5 毫秒。 总体而言,Realm Dart 在处理中等规模数据集时表现出良好的性能特性,特别是在读取关联数据和删除操作方面效率很高。随着系统缓存的优化,重复操作的性能会进一步提升。 ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.