LINUX.ORG.RU

История изменений

Исправление vertexua, (текущая версия) :

Для того чтобы нормально набросить делаем так

✦ ❯ cargo install cw  --features runtime-dispatch-simd
✦ ❯ cargo install hyperfine

Генерируем hexdump random где-то на 100 МБ (или на сколько хотите)

✦ ❯ head -10 ./file
0000000 4dbc 568f 002e bc8a 4718 9672 a3b7 4741
0000010 ef41 f6cd d93a cb8a bf52 0baf 68bf 74fa
0000020 2103 815a d351 c595 551d eceb 7c38 767a
0000030 aec3 914c 28a0 666a 7578 2e22 5559 7bb8
0000040 2768 91c5 0cac 3e6e e69e be38 d077 469b
0000050 ec00 bed5 c57e c5c0 6654 08d7 ce1e 29ff
0000060 8c10 d756 7153 5157 ef00 1b8a a2de 5c74
0000070 0d3b 7c91 2797 f1a8 2f6d 0154 bcae f3ed
0000080 a16b b35b 7751 0143 cd2f 9e35 f144 300c
0000090 a131 b6aa a450 2eb6 6126 d9a0 f8d9 5cd8
✦ ❯ wc -lw ./file
  2115840  19042560 ./file
✦ ❯ cw -lw ./file
 2115840 19042560 ./file
✦ ❯ hyperfine "cw -lw ./file" "wc -lw ./file"
Benchmark #1: cw -lw ./file
  Time (mean ± σ):     142.2 ms ±  11.8 ms    [User: 127.2 ms, System: 14.7 ms]
  Range (min … max):   130.0 ms … 170.9 ms    22 runs

Benchmark #2: wc -lw ./file
  Time (mean ± σ):     445.8 ms ±  37.1 ms    [User: 427.9 ms, System: 16.9 ms]
  Range (min … max):   375.8 ms … 492.6 ms    10 runs

Summary
  'cw -lw ./file' ran
    3.13 ± 0.37 times faster than 'wc -lw ./file'

Coreutils wc написано на… https://github.com/coreutils/coreutils/blob/master/src/wc.c

Исходная версия vertexua, :

Для того чтобы нормально набросить делаем так

✦ ❯ cargo install cw  --features runtime-dispatch-simd
✦ ❯ cargo install hyperfine

Генерируем hexdump random где-то на 100 МБ (или на сколько хотите)

✦ ❯ head -10 ./file
0000000 4dbc 568f 002e bc8a 4718 9672 a3b7 4741
0000010 ef41 f6cd d93a cb8a bf52 0baf 68bf 74fa
0000020 2103 815a d351 c595 551d eceb 7c38 767a
0000030 aec3 914c 28a0 666a 7578 2e22 5559 7bb8
0000040 2768 91c5 0cac 3e6e e69e be38 d077 469b
0000050 ec00 bed5 c57e c5c0 6654 08d7 ce1e 29ff
0000060 8c10 d756 7153 5157 ef00 1b8a a2de 5c74
0000070 0d3b 7c91 2797 f1a8 2f6d 0154 bcae f3ed
0000080 a16b b35b 7751 0143 cd2f 9e35 f144 300c
0000090 a131 b6aa a450 2eb6 6126 d9a0 f8d9 5cd8
✦ ❯ wc -lw ./file
  2115840  19042560 ./file
✦ ❯ cw -lw ./file
 2115840 19042560 ./file
✦ ❯ hyperfine --warmup=5 "cw --lines ./file" "wc -l ./file"
Benchmark #1: cw --lines ./file
  Time (mean ± σ):      17.8 ms ±   0.5 ms    [User: 2.1 ms, System: 15.5 ms]
  Range (min … max):    17.0 ms …  19.2 ms    168 runs

Benchmark #2: wc -l ./file
  Time (mean ± σ):      30.4 ms ±   1.7 ms    [User: 13.9 ms, System: 16.4 ms]
  Range (min … max):    27.1 ms …  35.4 ms    106 runs

Summary
  'cw --lines ./file' ran
    1.71 ± 0.11 times faster than 'wc -l ./file'

Coreutils wc написано на… https://github.com/coreutils/coreutils/blob/master/src/wc.c