Чтение копии `/usr/share/dict/words `в 10 раз медленнее, чем сам файл

Вы можете передать массив в Python, добавив его в качестве аргументов, и использовать sys.argv[1:]внутри python для его чтения.

Возвращаться к bashнемного сложно, когда ваши значения могут содержать пробелы или новые строки, но вы можете использовать вывод python, разделенный новой строкой -, вместе с readline.

arr=(0)
readarray -t arr < <(python -c '
import sys
arr=sys.argv[1:]
arr.append(1)
arr.append("a b")
for a in arr:
  print(a)
' "${arr[@]}")
printf '%s\n' "${arr[@]}"

Выход:

0
1
a b
0
21.10.2021, 04:30
1 ответ

Как заметил @Vilinkameni, производительность операций ввода-вывода может различаться в GNU/Linux, если файлы, к которым осуществляется доступ, находятся на другом физическом устройстве или другом типе файловой системы.

В моем случае WSL2 использует виртуальный жесткий диск, но мой рабочий каталог (, который WSL был cdпреобразован в ), фактически находился на моем C:/диске. Таким образом, при доступе к файлу /usr/share/dict/wordsя остаюсь на виртуальном жестком диске WSL2, но если я скопирую файл на свой диск C:/, производительность резко понизится, потому что он должен прочитать файл в другой "файловой системе". ".

Я проверил это, переместив свою программу в /usr/share/dict/, создав там копию файла words, и теперь производительность идентична.

1
21.10.2021, 20:06

Теги

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