LINUX.ORG.RU

hyperfine 1.17.0

 , , , ,


2

4

После более двух месяцев разработки состоялся выпуск 1.17.0 кроссплатформенной (Linux, MacOS, Windows) консольной утилиты hyperfine, написанной на языке Rust и распространяемой по лицензиям Apache-2.0 и MIT.
Утилита предназначена для сравнения производительности других консольных утилит.

Список изменений:

  • добавлен параметр --sort, используемый для сортировки результатов сравнения относительной скорости и экспорте;
  • неиспользуемые параметры теперь отображаются в круглых скобках;
  • в скрипт scripts/plot_histogram.py вывода результатов в виде гистограмм добавлена опция --log-count;
  • обновлена документация (man);
  • исправлена ошибка вывода промежуточных результатов в stdout при использовании - в качестве имени файла;
  • исправлено падение при экспорте, если время бенчмарка равнялось нулю.

>>> Подробности

★★★★

Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 2)

CommandMean [ms]Min [ms]Max [ms]Relative
ls -R /usr/bin14.3 ± 2.89.922.43.46 ± 1.04
find /usr/bin5.4 ± 1.43.710.11.31 ± 0.45
bfs /usr/bin4.1 ± 1.02.97.81.00
dataman ★★★★
() автор топика
Ответ на: комментарий от dataman

лепота. Хотел сказать bfs быстрая, потому что не понимает regex-ы, но оказывается тоже умеет. Правда в каком-то урезаном варианте. Почти в 2 раза быстрее с таким простым правилом


Benchmark 1: bfs /usr  -regex '.*\.png'
  Time (mean ± σ):     446.6 ms ±   8.9 ms    [User: 227.6 ms, System: 211.9 ms]
  Range (min … max):   436.3 ms … 467.0 ms    10 runs

и

Benchmark 1: find /usr  -regex '.*\.png'
  Time (mean ± σ):     884.8 ms ±   9.8 ms    [User: 596.9 ms, System: 281.3 ms]
  Range (min … max):   873.5 ms … 907.5 ms    10 runs

но зато такое уже не понимает

 sudo bfs /usr -regex  '.*\.\(jpg\|jpeg\|png\|gif\)'

a find умеет все

monkdt
()
Последнее исправление: monkdt (всего исправлений: 2)
Ответ на: комментарий от monkdt

потому что не понимает regex-ы

Автор хочет сделать поддержку нескольких диалектов regex. Я добавил примитивную поддержку Oniguruma, а потом он её существенно улучшил.

Правда в каком-то урезаном варианте.

Вот так работает:

$ bfs -regextype grep -regex '.*\.\(jpg\|jpeg\|png\|gif\)'

Или можно попробовать скомпилировать так:

$ make WITH_ONIGURUMA=

Не пробовал. :)

dataman ★★★★
() автор топика

Полезная штука. Пользуюсь редко, но когда надо, выручает.

CrX ★★★
()
Ответ на: комментарий от dataman

Интересно. Но у меня fd (давно им пользуюсь вместо медленного find) всё равно быстрее отрабатывает.

CommandMean [ms]Min [ms]Max [ms]Relative
bfs . -regex '.*.flac'59.6 ± 0.658.761.11.62 ± 0.08
fd '.*.flac'36.9 ± 1.932.741.91.00
find . -regex '.*.flac'128.7 ± 3.3125.8137.53.49 ± 0.20

Range (min … max): 32.7 ms … 41.9 ms 81 runs

Benchmark 3: find . -regex '.*.flac'
  Time (mean ± σ):     128.7 ms ±   3.3 ms    [User: 93.2 ms, System: 34.7 ms]
  Range (min … max):   125.8 ms … 137.5 ms    23 runs
 
Summary
  'fd '.*.flac'' ran
    1.62 ± 0.08 times faster than 'bfs . -regex '.*.flac''
    3.49 ± 0.20 times faster than 'find . -regex '.*.flac''
CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от CrX

Но у меня fd (давно им пользуюсь вместо медленного find) всё равно быстрее отрабатывает.

А если так?

$ bfs . -iname '*.flac'

$ fd --glob '*.flac'

dataman ★★★★
() автор топика
Ответ на: комментарий от dataman

тот случай когда fd быстрее, но регулярки не умеет

monkdt
()
Ответ на: комментарий от dataman

Так тоже fd быстрее:

CommandMean [ms]Min [ms]Max [ms]Relative
bfs . -iname '*.flac'50.6 ± 0.649.752.61.38 ± 0.07
fd --glob '*.flac'36.7 ± 1.933.041.21.00

Я тут ещё тем временем ещё попробовал с очищенным дисковым кешем (вместо вармапа наоборот -p 'sudo sync; echo 3 | sudo sponge /proc/sys/vm/drop_caches') ради интереса. В таком случае bfs почему-то оказался даже медленнее, чем find:

CommandMean [s]Min [s]Max [s]Relative
bfs . -regex '.*.flac'44.287 ± 19.48824.80878.8171.64 ± 0.72
fd '.*.flac'27.007 ± 1.14825.35929.0421.00
find . -regex '.*.flac'31.709 ± 19.66622.86487.2841.17 ± 0.73
CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от greenman

modern, modular, portable and efficient lossless data compressor

В README.md автор приводит бенчмарки, но я не нашёл, как он компилировал другие компрессоры.
Если вообще компилировал, а не использовал системные.

А kanzi компилируется с -march=native, но так нечестно. :)

dataman ★★★★
() автор топика
Ответ на: комментарий от CrX

C и C++ это такие языки, где программы примерно с одним алгоритмом работы по скорости могут отличаться на порядок, но, да, странно что на C что-то тормозное написали. Но зачем тебе скорость поиска какого-то говна? Я передачу смотрел мол зумеры настолько альтернативно одаренные, что у них у большинства всякий кал тупо на рабочий стол свален, а документы они ищут через поиск. Те в маках, ублюдской винде новой все сделано под поколение z. И вот ты явно не малолетка, но если тебе нужно искать какие-то файлики, те ты их разбрасываешь без систематике на диске… Я не думаю, что все так плохо… А насчет той утилиты bfs, я подозреваю, что скорость ее поиска очень зависит от файловой системы

uwuwuu
()
Ответ на: комментарий от uwuwuu

Но зачем тебе скорость поиска какого-то говна?

Поиск — полезная и нужная вещь. Здесь дело не в свалке, а в том, что юзкейсов у него много. Например, понадобилось (неважно зачем) посчитать количество файлов определённого вида.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

fastwalk. Хорошая штука оказалась.

Хочу эту идею предложить автору bfs. :)

dataman ★★★★
() автор топика
Ответ на: комментарий от CrX

Хруст предотвратил утечку памяти через белое пространство. Всё так.

ratvier ★★
()
Ответ на: комментарий от greenman

В общем, статья будет называться «Превосходен ли kanzi?». Начал писать. :)

dataman ★★★★
() автор топика
Ответ на: комментарий от uwuwuu

ты их разбрасываешь без систематике на диске

А у тебя систематика раскладывания файликов по папочкам? Тебе платят побайтово?) В идеале пользователь вообще не должен знать, что есть какие-то файлики, а работать с метаинформацией. Компутер железный - пусть работает.

Clayman ★★
()
Ответ на: комментарий от CrX

Например, понадобилось (неважно зачем) посчитать количество файлов определённого вида.

plocate c --count ... очень хороша в этом случае. После создания db, конечно.

dataman ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.