🟡 [M24] memory scroll_rss 的 lines_read 记录值不等于实际读取行数 #43

Closed
opened 2026-06-05 11:54:15 +08:00 by dailz · 1 comment
Owner

问题

bench_scroll_rsssample_interval = 100_000 步进读取行,但 extra["lines_read"] 记录为 max_lines.min(total),不是实际读取次数。

影响

quick 模式下可能只读取 1 行,却报告 100000 行;非 quick 模式也会报告 total 而非采样次数,内存 benchmark 的额外指标误导。

位置

  • crates/bench/src/suites/memory.rs:101
  • crates/bench/src/suites/memory.rs:127

建议

lines_read 改为实际读取次数,例如 rss_samples.len() 或单独维护计数器。

## 问题 `bench_scroll_rss` 以 `sample_interval = 100_000` 步进读取行,但 `extra["lines_read"]` 记录为 `max_lines.min(total)`,不是实际读取次数。 ## 影响 quick 模式下可能只读取 1 行,却报告 100000 行;非 quick 模式也会报告 total 而非采样次数,内存 benchmark 的额外指标误导。 ## 位置 - `crates/bench/src/suites/memory.rs:101` - `crates/bench/src/suites/memory.rs:127` ## 建议 把 `lines_read` 改为实际读取次数,例如 `rss_samples.len()` 或单独维护计数器。
dailz closed this issue 2026-06-07 08:50:26 +08:00
Author
Owner

修复方案

Commit: e6e0e2c

改动内容 (crates/bench/src/suites/memory.rs)

  1. 新增 upper = max_lines.min(total) 作为循环上界,正确处理空文件边界
  2. 新增 lines_read 计数器,仅在 get_line(i).is_some() 时递增,语义精确为"成功读取行数"
  3. extra["lines_read"]max_lines.min(total) 改为 lines_read

修复前后对比

场景 修复前 lines_read 修复后 lines_read
quick, total=500_000 100,000 1
非 quick, total=1_000_000 1,000,000 10
空文件 100,000 (quick) 0
## 修复方案 **Commit**: e6e0e2c ### 改动内容 (`crates/bench/src/suites/memory.rs`) 1. 新增 `upper = max_lines.min(total)` 作为循环上界,正确处理空文件边界 2. 新增 `lines_read` 计数器,仅在 `get_line(i).is_some()` 时递增,语义精确为"成功读取行数" 3. `extra["lines_read"]` 从 `max_lines.min(total)` 改为 `lines_read` ### 修复前后对比 | 场景 | 修复前 lines_read | 修复后 lines_read | |---|---|---| | quick, total=500_000 | 100,000 | 1 | | 非 quick, total=1_000_000 | 1,000,000 | 10 | | 空文件 | 100,000 (quick) | 0 |
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dailz/logViewer#43