LogoRRR 26.8.0 · 性能实测

文件大小不再受限于
Java heap 容量。

打开数 GiB 的日志,跳到中间或末尾,Java heap 仍保持在固定范围内。本次测试的最大文件为 8 GiB,Java heap 上限仅 256 MiB。

$ open production.log

文件
8 GiB
Java heap 上限
256 MiB
首个窗口
155 ms
保留的 Java heap
3.62 MiB
进程 PSS
159.2 MiB

开头 · 中间 · 末尾均可用

32×文件与 Java heap 之比

8 GiB 文件,256 MiB Java heap

155 ms首个可用窗口

8 GiB 受限内存测试

3.62 MiB保留的 Java heap

访问开头、中间和末尾之后

69×更快获得可用数据

使用 2 GiB 测试文件对比 26.8.0 与 26.2.0

从“整个文件装入内存”转为“按需读取”

在 26.8.0 之前,文件越大,内存中保留的行对象就越多,数量可达数百万。out-of-core 引擎只维持固定大小的工作集,并在需要时读取相应的源文件窗口。

已发布版本24.4 · 25.2 · 26.2
日志文件所有行Java heap

2 GiB 测试文件保留了约 3.21 GiB Java heap。测试 4 GiB 文件时,三个已发布版本都耗尽了 4 GiB Java heap。

LogoRRR26.8.0
日志文件受控窗口视图

访问 8 GiB 文件的开头、中间和末尾后,保留的 Java heap 只有 3.62 MiB;测试时 Java heap 上限为 256 MiB。

四代 LogoRRR 打开同一个 2 GiB 日志

每个值都是三次成功运行的中位数;每次运行前均清除该测试文件的缓存。下方的小字范围表示实测最快值和最慢值。

24.4.0
7.66 s7541–8876 ms
25.2.0
8.41 s8243–8511 ms
26.2.0
9.89 s9863–10607 ms
26.8.0
144 ms143–150 ms
2 GiB 受控对比,Java heap 上限为 4 GiB
版本引擎就绪保留的 Java heapPSS 峰值运行次数
24.4.0全量驻留7.66 s3.08 GiB4.19 GiB3
25.2.0全量驻留8.41 s3.21 GiB4.21 GiB3
26.2.0全量驻留9.89 s3.21 GiB4.21 GiB3
26.8.0out-of-core144 ms3.58 MiB159.2 MiB3

可用数据出现速度提高 69 倍,保留的 Java heap 降至原来的 1/918。 结果来自 2 GiB 测试文件,对比 26.8.0 与本次测试中最新的已发布版本 26.2.0。

已发布版本在 4 GiB 文件处耗尽 Java heap,26.8.0 仍可继续

Java heap 设为 4 GiB 时,所有版本都通过了 2 GiB 文件测试。文件增至 4 GiB 后,所有全量驻留引擎都耗尽了 heap。新引擎通过了 4 GiB 和 8 GiB 两项测试。

按测试文件大小进行受控对比;每个通过项运行三次
文件24.4.025.2.026.2.026.8.0
500 MiB 通过 通过 通过 通过
1 GiB 通过 通过 通过 通过
2 GiB 通过 通过 通过 通过
4 GiB Java heap 已耗尽 Java heap 已耗尽 Java heap 已耗尽 通过
8 GiB 未再次运行 未再次运行 未再次运行 通过

某版本一旦耗尽 Java heap,更大的测试文件便标为“未再次运行”,不再重复相同的失败。

文件增大 8 倍,内存占用基本不变

LogoRRR 26.8.0 的 Java heap 上限设为 256 MiB。文件从 1 GiB 增至 8 GiB 时,保留的 Java heap 始终约为 3.6 MiB,进程总 PSS 约为 159 MiB。

1 GiB
开头
152 ms
中间
13 ms
末尾
6 ms
Java heap
3.56 MiB
PSS
157.3 MiB
2 GiB
开头
146 ms
中间
13 ms
末尾
7 ms
Java heap
3.58 MiB
PSS
160.0 MiB
4 GiB
开头
146 ms
中间
14 ms
末尾
9 ms
Java heap
3.59 MiB
PSS
158.9 MiB
8 GiB
开头
155 ms
中间
18 ms
末尾
12 ms
Java heap
3.62 MiB
PSS
159.2 MiB

每个值都是三次运行的中位数。下方方法表列出了各窗口的实测范围。

决定速度的是存储吞吐量,而不是与文件大小成正比的内存

返回首个窗口不再需要读取完整源文件。不过,必须检查每个字节的操作仍受硬盘和文件系统速度影响。

另一项使用 500 MiB 测试文件的精确搜索中,3.38 s 后出现首个匹配;完整扫描耗时 34.8 s,吞吐量为 14.4 MiB/s。

首个匹配3.38 s
完整扫描34.8 s
500 MiB 确定性测试文件 · 三次运行的中位数

可复现,并采用保守边界的测量

测试使用各个构建版本的真实加载器代码和确定生成的非稀疏文件。每次运行都启动独立 JVM,进程内存数据来自操作系统测量。

01

受控输入

使用固定行宽、确定生成的 UTF-8 日志行;非稀疏文件在测量前生成。

02

冷文件策略

每次运行前清除测试文件对应的操作系统缓存,但不清空全局缓存。

03

进程内存

垃圾回收后采样保留的 Java heap。比例集大小峰值(PSS)读取自 /proc/<pid>/smaps_rollup.

04

两组测试

一组使用 4 GiB Java heap,对比每个版本直至其失败点;另一组把 26.8.0 限制在 256 MiB Java heap,测试 1、2、4 和 8 GiB 文件。

LogoRRR 26.8.0,256 MiB Java heap;中位数与实测范围
文件首个窗口中间末尾保留的 Java heapPSS 峰值
1 GiB152 ms 149–15913 ms 12–146 ms 6–73.56 MiB157.3 MiB
2 GiB146 ms 143–14613 ms 12–137 ms 7–73.58 MiB160.0 MiB
4 GiB146 ms 141–15314 ms 13–159 ms 9–103.59 MiB158.9 MiB
8 GiB155 ms 153–15718 ms 15–1812 ms 12–123.62 MiB159.2 MiB

测试环境

Ubuntu 24.04.4 LTS, aarch64, 8 logical CPUs, openjdk version "25.0.2" 2026-01-20.

构建版本

  • 24.4.0发布于 2024-06-06, 构建产物 logorrr_24.4.0_arm64.deb, SHA-256 27a4aea231dc78ba4b3838cc57361728bc714926f9270731bd7637eba8dda065
  • 25.2.0发布于 2025-12-23, 构建产物 logorrr_25.2.0_arm64.deb, SHA-256 f8de52dccb4224a25b0689aaef9d64618e98102d7134e637b249d1830c516fb1
  • 26.2.0发布于 2026-03-03, 构建产物 logorrr_26.2.0_arm64.deb, SHA-256 cfec5dd09753ba90167199aa5d94f388448fc518f7629bf598b7debb01489cca
  • 26.8.0 — 发布收尾阶段的源代码快照 f5e31853, 以 26.8.0 构建并测量

证据标识

对比结果 SHA-256: 7de25d018ba40d51504ccd265f03a5ef8167bd9ae52d543e66880444d5223024

压力测试 SHA-256: 7f480db156fd24d6fa3d6946ea24c003ae8dd54abff5a3621c646aff2b58281e

这些结果只适用于本次测试文件、设备和测试流程,并不代表所有硬盘或工作负载。“受存储限制”表示实测的文件大小上限不再与保留的 Java heap 成正比;需要读取完整源文件的操作仍取决于存储吞吐量。最大测试文件:8 GiB。

打开过去因过大而无法处理的日志

完整文件访问是 LogoRRR Pro 功能。免费预览会保留明确限制,让你先体验工作流程,再解锁大文件处理能力。

获取 LogoRRR