#xxd #binaries #convert #embed

app chisai

将二进制文件转换为可以嵌入您程序的代码

6个版本

0.2.2 2020年8月10日
0.2.1 2020年8月8日
0.1.3 2020年8月5日

#2544 in 解析实现

23每月下载量

MIT 许可证

11KB
171

chisai

Crate

将二进制文件转换为可以静态嵌入的代码。几乎与 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
 

chisaixxd 快约3倍,比 xxd-rs 快得多。程序仍然比 strliteral 慢得多。我认为如果我们能够为输出预先分配内存缓冲区,我们可以实现性能上的对等。然而,这相当棘手,除非深入挖掘并编写 necromonicons...

依赖项

~2MB
~32K SLoC