#white-space #integer #wsc

bin+lib whitespacers

一个空白符 JIT 编译器,用于您的空白符执行速度不够快时

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文本处理

Download history 135/week @ 2024-04-26 4/week @ 2024-05-03 1/week @ 2024-06-28 11/week @ 2024-07-05

每月 522 次下载

MPL-2.0 许可证

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