9 个版本 (2 个稳定版)
使用旧 Rust 2015
1.1.0 | 2024 年 4 月 26 日 |
---|---|
1.0.0 | 2020 年 8 月 27 日 |
0.2.0 | 2018 年 4 月 24 日 |
0.1.3 | 2017 年 5 月 31 日 |
0.0.1 | 2016 年 10 月 20 日 |
#310 在 文本处理
每月 522 次下载
200KB
4.5K SLoC
一个空白符 JIT 编译器,用 Rust 编写
特性
- 提供嵌入式库和命令行工具。
- 实现了整个空白符标准,包括任意精度整数。
- 非常快。空白符代码可以编译到接近原生速度。每秒执行超过十亿条空白符指令是常见的。
- 为标准的不明确部分提供解释选项。
- 可以将空白符代码转换为可读的汇编语言。
为什么
- 我需要一个项目来学习 Rust。
- 每种语言都需要一个空白符解释器!
- 我最终做得有点过了。
基准测试
Whitespacers 提供了多种解释方法。这些基准测试显示了这些技术和回退之间的差异。这些基准测试是通过在 wsinterws.ws(一个用空白符编写的空白符解释器)上执行 此 空白符程序来创建的。正确的执行需要执行 3.329.985.013 条空白符指令。执行此程序需要 --unchecked-heap。
提到的时间纯粹是执行时间。其他操作与此相比非常微小,因为第二大时间消耗者是解析,大约为 0.001 秒。
用于基准测试的机器是 2.6 GHz i7-4720HQ。
执行策略 | 时间 [s] | 每秒空白符指令数 |
---|---|---|
回退大数解释器 | 193.514444790 | 17.207.940 |
参考解释器 | 35.265381255 | 94.426.457 |
优化解释 | 12.077388375 | 275.720.620 |
JIT 编译 | 3.311839939 | 1.005.478.849 |
然而,应该注意的是,这个基准是堆密集型代码。在纯栈代码中,已经达到了每秒超过 3.000.000.000 指令的速度。
文档
文档可在 此处 获取。
构建说明
只需运行 cargo run --release
以运行解释器。库也可以直接从 crates.io 下载。
许可证
GPL-2.0,请参阅LICENSE
依赖项
约3MB
~68K SLoC