2个不稳定版本

0.3.0 2023年3月22日
0.1.0 2023年3月19日

241缓存

每月下载量 38
用于 odilia

GPL-3.0-only

585KB
1K SLoC

odilia-cache

Odilia屏幕阅读器的缓存层。这个crate是主Odilia仓库的一个子目录。

该crate的主要结构是

Arc<DashMap<AccessibleId, Arc<RwLock<CacheItem>>>>

该结构的各个部分有助于该crate提供的不同功能。`Arc<DashMap<_>>` 允许缓存跨线程使用。并且映射的值是 `Arc<RwLock<CacheItem>>`,这使得我们可以直接引用其他缓存项,也可以在哈希表中通过ID查找它们。

开发

如果您想使Odilia成为一个更高效的屏幕阅读器,这里就是您要来的地方。请随时与我们合作实现测试,并提高基准测试。或者,如果您在实现之前想提出想法,请在GitHub上提出建议

如果您需要温和地了解代码库,我们也可以提供帮助。

性能

为Odilia编写了一些基准测试。其中大多数与从缓存中引用各种项目的速度有关。

如果您想进行详细性能基准测试,我们建议使用 flamegraph 包来显示性能瓶颈。还有一个名为 hotspot 的C++程序,可在AUR以及一些主要软件包仓库中找到,它可以以可访问(GUI)的方式显示程序各部分花费的时间。

首先,使用以下命令安装子命令

$ cargo install flamegraph

如果需要,可以从AUR/您的软件包仓库安装Hotspot,以及 perf,后者是生成火焰图的必备工具。

$ paru/yay -S hotspot perf

最后,将以下内容添加到根目录的 Cargo.toml

[profile.bench]
debug = true

现在,您可以使用以下命令生成以下基准测试的火焰图

cargo flamegraph --bench load_test -- --bench [individual_bench_name]

依赖关系

~12-29MB
~395K SLoC