UNIX SHELL: Pár tipů, jak můžete zvýšit výkon UNIX skriptů

Sed a AWK čtou ve výchozím nastavení celé soubory

Představte si, že máte několik gigabajtových vstupní soubor subor.txt, ve kterém chcete vypsat první 4 řádky. V důsledku toho, že sed čte standardně celé soubory, dostaneme velmi špatnou výkonnost skriptu:

$ sed -n '1,4p' subor.txt

Namísto toho bychom měli ukončit provádění programu sed hned po přečtení prvních dvou řádků. Uvádím řešení i pro sed i pro awk:

$ sed '4q' subor.txt
$ awk 'NR==5{exit;}1' subor.txt

Preferujte interní příkazy

UNIX SHELL je skriptovací jazyk. Je to ale interpretovaný jazyk, proto preferujte vestavěné příkazy. Interní příkazy (např. echo) jsou takové příkazy, které SHELL spouští bez vytváření podprocesu, přičemž při spouštění externích příkazů (např. expr) se vytváří podpůrce SHELLu.

Lepší práce se soubory

UNIX shell skvěle pracuje se soubory. Netřeba toho však zneužívat tím, že budeme zbytečně postupně připisovat údaje do velkého souboru. Např. cyklus

while [podmienka]
do
echo x >> subor.txt
done

lze přepsat na

while [podmienka]
do
echo x
done > subor.txt

čímž ušetříte značné množství prostředků. Namísto toho, aby byl výpis realizován n-krát, bude realizován pouze jednou na konci cyklu while.

Používejte pouze nutné příkazy v cyklech

To znamená, že všechny příkazy, které mohou jít mimo cyklu, nebudou v cyklu nikde použity. Jako příklad si představte, že kontrolujete datum. Výpočet data byste měli realizovat ještě před během skriptu a neměli byste jej počítat v běhu skriptu.

Jak začít programovat?

Úvod do programování pro každého bez předchozích znalostí.

Stáhněte si náš ebook teď výjimečně zdarma!!!

Marián Knězek

 

Súvisiace články: