尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 tools/benchmark.lua 测量 KOReader 逐页 reflow 耗时并导出结果

如何用 tools/benchmark.lua 测量 KOReader 逐页 reflow 耗时并导出结果 如何用 tools/benchmark.lua 测量 KOReader 逐页 reflow 耗时并导出结果【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader如果你需要在 KOReader 的开发环境里量化一本书逐页 reflow重排的耗时——比如排查翻页卡顿、对比排版改动前后的性能差异——仓库自带的 tools/benchmark.lua 就是干这件事的脚本。它会打开一份文档对每一页执行一次 reflow 并计时把每页耗时打到标准输出同时逐行追加写入benchmark.txt。适用环境是 Linux 或 macOS 上的 KOReader 源码开发环境且已完成第三方依赖获取与模拟器构建doc/Building.md 的前置要求。准备条件获取源码并构建运行环境按 doc/Building.md 的说明准备构建环境。以 Debian/Ubuntu 为例前置依赖安装为sudo apt install --no-install-recommends autoconf automake build-essential \ ca-certificates cmake gcc-multilib gettext git libtool libtool-bin meson \ nasm ninja-build patch pkg-config unzip wget然后获取源码并拉取第三方依赖这一步会准备好脚本运行所依赖的common/目录即 koreader-base 子模块内容git clone https://github.com/koreader/koreader.git cd koreader ./kodev fetch-thirdparty最后构建模拟器./kodev build默认即 emulator 目标构建产物包含脚本头注释中引用的./luajit运行时./kodev build其他发行版Alpine、Arch、Fedora、macOS、Nix 等的依赖安装方式见 doc/Building.md 对应小节。构建会安装编译工具链产物需要 root 权限的仅是依赖安装步骤./kodev本身只操作源码目录。运行基准脚本在仓库根目录执行脚本内package.path/package.cpath使用common/、frontend/等相对路径必须从仓库根目录启动./luajit tools/benchmark.lua test/sample.pdf这是脚本自身头注释给出的用法tools/benchmark.lua 第 2 行第一个参数arg[1]是要测量的文档路径文档头注释以test/sample.pdf为例实际使用时替换为你自己的书籍文件路径即可。脚本会遍历文档的全部页面无需额外参数。脚本如何计量 reflow 耗时读一下 tools/benchmark.lua 的源码可以确认它的测量口径通过DocumentRegistry:openDocument(filename)打开文档for i 1, doc:getPageCount()逐页循环每页前后各取一次util.gettime()秒与微秒被计时的操作是doReflow其实现为Koptinterface:getCachedContext(doc, page)即获取该页的 reflow 后上下文耗时dur的计算式为nsecs - secs (nusecs - usecs) / 1000000单位是秒。两点行为细节脚本开头设置einkfb require(ffi/framebuffer)且einkfb.dummy true注释说明目的是不弹出 SDL 窗口所以这是一个纯后台的测量过程不需要图形界面交互脚本通过DEBUG:turnOn()打开了调试输出每页会打印一行duration for page 页码 耗时秒数可以直接在终端逐页观察。结果导出与验证每页计时完成后logDuration以追加模式io.open(filename, a)写入当前目录下的benchmark.txt每行一个记录格式为1 0.0231 2 0.0154第一列是页码第二列是秒数制表符分隔。注意两点文件是追加写入的对同一本书重复运行会把新的逐页记录继续追加到benchmark.txt尾部。做前后对比时建议区分不同次运行的记录例如先备份走上一份或在不同的工作目录下运行不要把两次运行的数据混在同一次结果里分析验证运行成功的依据终端逐页出现duration for page N ...的 DEBUG 输出且benchmark.txt中新增的行数等于文档页数。可选分支测量 AutoBBox 而非 reflow脚本中还保留了一个注释掉的变体tools/benchmark.lua 第 53 行--benchmark(arg[1], doAutoBBox) benchmark(arg[1], doReflow)doAutoBBox的实现是Koptinterface:getAutoBBox(doc, page)。如果你要测量的是自动边框计算而不是 reflow需要自行把这两行的启用状态对调后再运行默认启用的是doReflow本文描述的全部行为都基于这个默认状态。限制说明该脚本只接受一个文档路径参数没有选项参数无法筛选页码范围测量对象是文档的每一页运行前提与./kodev build一致第三方依赖已获取common/目录存在、构建已完成benchmark.txt记录的是开发环境下的耗时脚本本身不做统计汇总平均、最大值等如需汇总由你在导出数据上自行处理。【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表