Почему curl > /dev/null и curl -o /dev/null имеют большую разницу в производительности?

Если patterns содержит по одному шаблону в строке, вы можете сделать что-то вроде этого:

awk 'NR==FNR{a[$0];next}{for(i in a)if($0!~i)next}1' patterns -

Или это соответствует подстрокам вместо регулярных выражений:

awk 'NR==FNR{a[$0];next}{for(i in a)if(!index($0,i))next}1' patterns -

Чтобы вывести все строки, а не ни одной, в случае, если patterns пуст, замените NR==FNR на FILENAME==ARGV[1], или на ARGIND==1 в gawk.

Эти функции выводят строки STDIN, которые содержат каждую строку, указанную в качестве аргумента, как подстроку. ga означает grep all, а gai игнорирует регистр.

ga(){ awk 'FILENAME==ARGV[1]{a[$0];next}{for(i in a)if(!index($0,i))next}1' <(printf %s\\n "$@") -; }
gai(){ awk 'FILENAME==ARGV[1]{a[tolower($0)];next}{for(i in a)if(!index(tolower($0),i))next}1' <(printf %s\\n "$@") -; }
0
06.02.2019, 18:06
1 ответ

Я не могу это воспроизвести.

Для этого конкретного файла я получил более низкие скорости при некоторых попытках, но это не имело никакого отношения к аргументам curl, это произошло случайно и с обоими вариантами.

Версия curl, которая у меня есть (curl 7.52.1 (x86_64-pc-linux-gnu), из Debian ), также не обрабатывает /dev/nullиначе, чем другие выходные файлы, straceпоказывает open()и write()s для это:

$ strace -etrace=open,write curl -s http://www.google.com/ -o /dev/null
[...]
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4
write(4, "<!doctype html><html itemscope=\""..., 4096) = 4096
write(4, "px 0 4px;margin-left:4px}input{f"..., 4096) = 4096
...
+++ exited with 0 +++

Вот результаты моих последних двух прогонов, существенных различий между > /dev/nullи-o /dev/null:

нет.
$ curl http://dl.google.com/dl/android/aosp/sailfish-pq2a.190205.003-factory-164a7269.zip > /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1344M  100 1344M    0     0  94.5M      0  0:00:14  0:00:14 --:--:-- 91.0M

$ curl http://dl.google.com/dl/android/aosp/sailfish-pq2a.190205.003-factory-164a7269.zip -o /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1344M  100 1344M    0     0  89.3M      0  0:00:15  0:00:15 --:--:-- 92.8M
2
28.01.2020, 02:30

Теги

Похожие вопросы