Z pewnością wiele osób stroni/unika używania Javy lub innego języka opartego o JVM do uruchamiania skryptów ze względu na bardzo powolny czas startu. Przede wszystkim dotyczy to programistów Clojure, którego rozgrzewka jest, można powiedzieć, baaaaardzo długa jak na wymagania małych skryptów i wręcz przekreśla jakiekolwiek pożyteczne zastosowanie. Jest jednak na to sposób. Trzeba zaprzęgnąć do roboty program o nazwie Drip ( dostępny na: https://github.com/flatland/drip ).
Drip po
pierwszym uruchomieniu, które trwa podobnie długo jak zwykłe
uruchomienie programu przy pomocy polecenia java,
ładuje
świeże środowisko Java do pamięci i do takiego czystego
środowiska zapodaje program, który uruchamia się niemal
natychmiast.
W
moim przypadku instalacja Drip wyglądała tak:
sudo sh -c "
curl -L http://drip.flatland.org > /bin/drip"
sudo
chmod 755 /bin/drip
Przykład
1. Czas wykonania się zwykłego skryptu przy użyciu polecenia java. Prymitywny skrypt przeprowadza mnożenie dwóch liczb.
rs@rs-komp:/tmp$
time java -cp clojure-1.5.1.jar clojure.main -e '(* 10 20)'
200
real 0m1.367s
user 0m1.712s
sys 0m0.064s
Przykład
2. Czas pierwszego wykonania skryptu Clojure z użyciem Drip.:
rs@rs-komp:/tmp$ time drip -cp clojure-1.5.1.jar clojure.main -e '(* 10 20)'
200
real 0m1.921s
user 0m1.760s
sys 0m0.076s
200
real 0m1.921s
user 0m1.760s
sys 0m0.076s
Przykład
3. Czas kolejnego uruchomienia skryptu, tym razem zmieniam treść
skryptu.
rs@rs-komp:/tmp$
time drip -cp clojure-1.5.1.jar clojure.main -e '(* 5 10)'
50
real 0m0.203s
user 0m0.028s
sys 0m0.012s
Całkiem wyraźne przyspieszenie względem standardowej Javy.
Trochę więcej o Drip
Jeżeli
Drip nie doczeka się połączenia w końcu sam się wyłączy. Czas
przetrzymywania JVM w pamięci można wydłużyć tworząc zmienną
środowiskową
DRIP_SHUTDOWN
i
nadając
jej wartość liczbową reprezentującą czas w minutach.
Aby
ubić uruchomione maszyny trzeba użyć polecenia
drip
kill,
lista
uruchomionych maszyn to polecenie
drip
ps
.
Niestety
Drip nie działa na Windows i nie zanosi się na port.
Drip może się integrować z innymi językami. Więcej tu :
https://github.com/flatland/drip/wiki
Brak komentarzy:
Prześlij komentarz