Il blog di uforob
Miscellanea: anime, manga, curiosità, videogiochi, informatica, scienza, tecnologia, notizie, tempo libero, TV...
AREA PERSONALE
TAG
MENU
« Scienza, tecnologia e magia | A cosa serve Mac OS X » |
QUANTO COSTA NON FARE NIENTE
Post n°227 pubblicato il 25 Marzo 2014 da ufo.rob
Non voglio parlare di quelli che per scelta più o meno consapevole non lavorano e del loro costo sulla società, quelli che in giapponese si chiamano hikikomori. Questo articolo indica quante risorse servono con diversi linguaggi per fare un programma che non faccia niente. In realtà il programma testato non fa veramente niente, è un ciclo vuoto infinito. La cosa è leggermente diversa perché con un ciclo vuoto il programma deve ESEGUIRE continuamente un'istruzione di salto, un programma che non facesse niente sarebbe terminato subito e mi sarebbe stato difficile valutare l'occupazione di memoria e CPU. Java public class Loop { Il file jar eseguibile esportato con Eclipse (che quindi include altre classi da JDT) è grande 7986 byte (8KB) e all'avvio occupa tra il 96 e il 100% di CPU e 6,3 MiB di RAM Python while True: Lo script è un file di testo che occupa solo 18 byte. L'esecuzione occupa tra il 94 e il 100% di CPU e 1,7 MiB di RAM. C int main() File di 7280 byte. Occupa tra il 98 e il 100% di CPU e 60 KiB di RAM. C++ Il sorgente è lo stesso di prima compilato con g++ invece di gcc (avrei potuto togliere il return e usare il tipo bool di C++ ma così il confronto è più equo anche se il return è comunque aggiunto dal compilatore, non so invece quanto la compilazione dei bool sia sovrapponibile al metodo spartano del C per cui 0 è falso e tutti gli altri valori sono vero). File di 7282 byte. Il consumo di memoria e di CPU ha oscillato di più (intorno al 98 o 100 % di CPU e ha toccato anche 90, la RAM dopo un po' è scesa da 60 a 56 KiB). Bash while true Tra 96 e 98% e 156 KiB di RAM. Windows Batch :s File di 10 byte. Tra 1 e 5% di CPU e 1460 KB di RAM Questo ha la particolarità che in effetti stampa anche l'istruzione "goto s" sulla linea di comando e quindi è molto meno vicino al "non fare niente". Conclusione I risultati sono un po' falsati perché per Java, Python, Bash e Windows Batch (insomma tutti tranne C e C++ che sono compilati) risulta sul processo la dimensione di tutto l'ambiente comunque direi che il vincitore è Python che bilancia l'occupazione dei sorgenti e delle risorse runtime. Anche C/C++ però bisogna considerare che i sorgenti devono esser compilati invece il file Python da 18 byte è bell'e che pronto a essere dato in pasto all'interprete senza dover fare prima alcun'altra operazione. Windows Batch è simile, anzi usa meno RAM e il file è più piccolo però è fuori gara perché effettua le stampe (l'effetto è diverso da una finestra con una scritta ferma e un cursore lampeggiante). Dettagli Per chi se lo stesse chiedendo tutto questo è nato perché a lavoro dovevo testare uno script che facesse ripartire un programma Java terminato e ho fatto il loop descritto come prova. Il computer utilizzato ha un processore Intel® Core™2 Duo E6750 (2.66GHz) e 2GB di RAM. Tutte le prove sono state effettuate con Ubuntu 12.04.4 LTS "precise pangolin" a 32 bit, tranne il Windows batch che è stato provato su Windows XP Professional Service Pack 3 (32 bit) con lo stesso computer |
Inviato da: Corpo_Di_Rosa
il 23/10/2022 alle 17:39
Inviato da: Elvio Catania
il 13/04/2020 alle 08:58
Inviato da: cassetta2
il 25/04/2019 alle 16:19
Inviato da: ufo.rob
il 05/04/2016 alle 21:36
Inviato da: ufo.rob
il 05/04/2016 alle 21:18