Bash в windows реализован не так, как в нативном bash, особенно для циклов - PullRequest
0 голосов
/ 10 ноября 2018

Я специально для Mac выполнил следующую команду в магазине Mac:

time for x in {1..5000000}; do if ! (($x % 10000)); then echo $x; fi done

для выполнения очень элементарного теста. Это создает список от 1 до 5000000, проверяет, делится ли он на 10000, и печатает, если это так. И time измеряет время выполнения процесса. Я прибыл примерно на 40 секунд для MacBook Air, 32 для профессионалов, всех процессоров Intel 8-го поколения. Конкретный шаблон, который я заметил, заключается в том, что он долго зависает перед распечаткой чего-либо, вероятно, потому, что он создает список от 1 до 5000000 и помещает его в память.

Тем не менее, мой друг, использующий Windows, сообщал о более быстром времени на процессоре 5-го поколения m с оболочкой bash Windows 10, порядка 15 секунд. Я подозреваю, что это потому, что Windows bash трактует for x in {1..5000000} как генератор. Таким образом, процесс никогда не превращался в память, поскольку все нужно было только хранить в кеше, достигая большей скорости. Может ли кто-нибудь подтвердить, что циклы for для интерпретатора bash одинаковы / различны в разных реализациях Windows и Linux / Mac?

...