Описание тега device-migration
Оболочки является эффективным, если вы используете его за то, что он был разработан для (Хотя эффективность редко то, что вы ищете в оболочке).
Оболочка-это интерпретатор командной строки, Она предназначена для запуска команд и их сотрудничество с задачей.
Если вы хотите считать до 1000000000, вы вызываете (одну) команду, чтобы подсчитать, как след
, до н. э.
, как awk
или питон
/Перл
... работает 1000000000 [[...]]
команды и 1000000000 пусть
команды обязан быть ужасно неэффективным, особенно с Баша
, который является самым медленным оболочки все.
В этой связи, снаряд будет намного быстрее:
$ время, Ш-с 'сл 100000000' > /dev/нуль
Ш-с 'сл 100000000' > /dev/нуль пользователя 0.77 с 0,03 с системой 99% процессора 0.805 общая
$ раз Python -C 'на Я=0
> а я <= 100000000: я=я+1'
питон -с-Я=0 при Я <= 100000000: я=я+1' 12.12 пользователей с 0.00 с 99% процессора 12.127 общая
Хотя конечно, большую часть работы выполняют команды, что оболочка вызывает, как это должно быть.
Теперь, конечно, вы можете сделать то же самое с питоном
:
питон -с '
импорт ОС
ОС.dup2(ОС.открыть("/dev/нуль", ОС.O_WRONLY), 1);
ОС.execlp("след", "след", "100000000")'
Но это не совсем как вы могли бы сделать вещи в питоне
, а питон
- это прежде всего язык программирования, а не командной строки интерпретатора.
Обратите внимание, что вы могли бы сделать:
в Python -C 'на импорт ОС; ОС.системы("сл 100000000 > /dev/нуль")'
Но, питон
на самом деле было бы называть оболочку, чтобы интерпретировать, что командная строка!