De ce să înveți scripting

Săptămâna trecută am predat tema la Programare Paralelă, temă ce presupunea găsirea numerelor Devlali prime(în engleză self primes) între un interval A, B dat și folosind un număr variabil de threaduri(de la 1 la 8) în limbajele C(pThreads și OpenMP), Java și Prolog.
Scopul final era să calculez speedul și eficiența. Scriu codul, introduc A, B și numarul de threaduri pe care să le folosească din linia de comandă, generez executabilele, afișez timpul și realizez că aș putea să îmi automatizez sarcina de a rula și a nota în fișiere timpi de execuție în funcție de numărul de threaduri folosite.

Dacă tot am hotărât că o să rulez pe un laptop quad-core cu Hyper-threading cu Ubuntu 18.04 aș putea să îmi fac 4 scripturi în Bash, fiecare pentru câte o cerință și la final un script principal care să genereze executabile folosind fișiere sursă iar apoi să pornească pe rând fiecare din cele 4 scripturi.
Cea mai mare utilitate a scriptului am observat-o atunci când a durat aproape 5 ore să îmi genereze raportul pentru codul scris în Java. În prima implementare foloseam BigInteger pentru numere și efortul de a crea obiectele era foarte mare spre deosebire implementarea cu ajutorul primitivei long – pentru intervalul 2 – 400000 și folosind un singur thread pe BigInteger dura aproximativ 45 minute iar pe long 5 minute.

Am ales bash deoarece doream să învăț ceva nou, la fel de bine puteam folosi python pentru asta.

Codul se găsește  aici.

Eu consider că este util să înveți scripting dacă vrei să îți faci viața mai ușoară.

Răspunsuri la „De ce să înveți scripting”

  1. Matei

    Foarte tare! Recomand bash, si sa inveti cat poti de mult.
    Advice:
    Ai fi putut face un for( for i in 1 2 3 4 5 6 7 8) si sa apelezi
    java -cp out Main $a $b i
    in interiorul for-ului. Ca sa nu trebuiasca sa rescrii aceeasi linie de mai multe ori.
    Si e de ajuns sa modifici o singura data permisiunea fisierului(la creare). Ori tu la fiecare rulare a scriptului faci chmod, care nu mai e necesar.

    1. Merci. 😉
      Da stiu ca puteam folosi for dar facusem copy paste si am zis ca las asa, dar o sa corectez in viitor.
      Cat despre chmod i-am dat asa pentru ca am lucrat pe 2 laptopuri si cand am facut clone la repo si i-am dat sa ruleze am luat pe rand eroare ca nu le poate executa.

      1. Matei

        Pai da, ideea era sa le faci chmod inainte sa le impingi pe repo. Din cate stiu daca le schimbi permisiunea si le impingi dupaia, cand le clonezi nu ar mai trebui sa ai probleme.

Răspunde-i lui Andrei Diaconescu Anulează răspunsul

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Tags: