Оптимизирует ли интерпретатор сценария оболочки if else цепочки?

Вы можете попробовать sspenderhttps://github.com/mountassir/sspender

Это позволяет вам приостанавливать работу вашей машины на основе предварительно -определенного использования ЦП/диска и гарантирует, что машина просыпается в определенное время, когда вам нужно, чтобы она была включена.

0
18.03.2021, 19:09
1 ответ

Как указал Майкл Хорнер, оболочка должна сначала проанализировать всю команду, потому что, если она находится в конвейере или находится в фоновом режиме, это повлияет на выполнение команды. Это верно для любой команды, которую выполняет оболочка, и довольно очевидно, если вы напишете многострочную команду оболочки -в интерактивном приглашении, так как она будет ждать, пока вы завершите команду, прежде чем выполнять ее.

Оболочка правильно выполнит каждое условие и остановится, как только достигнет случая, когда условие истинно. Дальнейшие условия elif выполняться не будут. Поведение оболочек Unix четко определено POSIX.

Наличие в оболочке оптимизаций для ускорения или повышения эффективности — вопрос качества реализации. Маленькая оболочка, такая как busybox, вероятно, предпочтет быть как можно меньше за счет небольшого количества скорости, тогда как другие оболочки могут предпочесть больше оптимизировать вещи.

В целом, сценарии оболочки — не очень эффективный способ написания кода, поскольку в конечном итоге вы разветвляете и выполняете большое количество процессов, поэтому, по моему опыту, оптимизации, которые вы найдете в типичном оптимизирующем компиляторе, имеют тенденцию быть отсутствуют, так как они не улучшают ситуацию так сильно. Как правило, более эффективно предоставлять больше встроенных -команд, которые вообще исключают необходимость порождения внешних процессов и дают вам больше отдачи от затраченных средств.

1
18.03.2021, 22:18

Теги

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