6个版本
0.2.2 | 2020年8月10日 |
---|---|
0.2.1 | 2020年8月8日 |
0.1.3 | 2020年8月5日 |
#2544 in 解析实现
23每月下载量
11KB
171 行
chisai
将二进制文件转换为可以静态嵌入的代码。几乎与 strliteral
完全一致,并且肯定不是与 xxd
相反。许多功能仍在开发中。
chisai 0.2.0
Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com>
Transform binaries into embeddable code.
USAGE:
chisai [FLAGS] [OPTIONS] <input-file-name> <language> [ARGS]
FLAGS:
--always-escape Always escape every byte with an octal escape.
-h, --help Prints help information
--no-const Generated variables are mutable.
-V, --version Prints version information
OPTIONS:
--format <format> The format of the values.
--variable-name <output-variable-name> Specify the name of the output variable.
--variable-per-line <variable-per-line> For every N variable, append a newline.
ARGS:
<input-file-name> Input file.
<language> Desired language of the generated code.
<output-file-name> Output file.
<output-length> If specified, the length of the vector will also be generated.
基准测试
通过将程序应用于 target/debug/chisai
本身来使用 hyperfine
。
hbina@hbinalapt:~/git/chisai$ ./profile.sh
Finished release [optimized] target(s) in 0.02s
-rwxrwxr-x 2 hbina hbina 14234544 Aug 7 21:57 target/debug/chisai
Benchmark #1: xxd -i target/debug/chisai
Time (mean ± σ): 1.465 s ± 0.019 s [User: 1.459 s, System: 0.004 s]
Range (min … max): 1.436 s … 1.499 s 10 runs
Benchmark #1: xxd-rs generate target/debug/chisai
Time (mean ± σ): 5.630 s ± 0.231 s [User: 2.358 s, System: 3.266 s]
Range (min … max): 5.381 s … 6.057 s 10 runs
Benchmark #1: ./strliteral target/debug/chisai
Time (mean ± σ): 124.2 ms ± 5.1 ms [User: 120.1 ms, System: 3.9 ms]
Range (min … max): 109.4 ms … 133.0 ms 23 runs
Benchmark #1: target/release/chisai --format=hex target/debug/chisai cpp
Time (mean ± σ): 576.9 ms ± 7.1 ms [User: 3.377 s, System: 0.285 s]
Range (min … max): 565.4 ms … 588.1 ms 10 runs
chisai
比 xxd
快约3倍,比 xxd-rs
快得多。程序仍然比 strliteral
慢得多。我认为如果我们能够为输出预先分配内存缓冲区,我们可以实现性能上的对等。然而,这相当棘手,除非深入挖掘并编写 necromonicons...
依赖项
~2MB
~32K SLoC