Salut !
Vu que le sujet a abouti pour JavaScript, je tente le coup avec Erlang. En effet, j'aimerais bien pouvoir utiliser ce langage sur le serveur de test.
Squelette de programme pour l'exo 1 du QCM 2012 :
http://pastebin.com/2En582jR
Que l'on peut ensuite au choix soit compiler soit interpréter. On dispose de la fonction timer:tc pour mesurer le temps réel d'exécution d'une fonction particulière, ce qui peut ou non être utile suivant la façon dont vous gérez les tests de performance. Comment le faites-vous ? Comparer le temps d'exécution d'un programme interprété avec celui d'un programme compilé n'a pas beaucoup de sens, par exemple. Et que choisissez-vous dans le cas de langages qui disposent à la fois d'un interpréteur et d'un compilateur ?
Exemple de mesure du temps d'exécution (avec erlc qui compile exo1.erl en exo1.beam) :
1 2 3 4 | $ erlc exo1.erl $ echo "8 12 1992" | erl -noshell -eval '{T,_}=timer:tc(exo1,main,[[]]),io:fwrite("~p us~n",[T])' -s erlang halt 1 8373 us |
Pour lancer le script en stand-alone, c'est au choix :
* interprété ;
* compilé puis lancé, le tout en une commande (-> injuste niveau temps d'exécution) ;
* compilé puis lancé, le tout séparément.
1 2 3 4 5 6 7 | $ echo "8 12 1992" | escript -i exo1.erl 1 $ echo "8 12 1992" | escript -c exo1.erl 1 $ erlc exo1.erl $ echo "8 12 1992" | escript exo1.beam 1 |
Petite subtilité, quand on utilise escript pour analyser un fichier .erl, la première ligne est réservée au shebang et est dans tous les cas ignorée. En revanche erlc lit les fichiers dès la première ligne et indiquera une erreur de syntaxe dans le cas d'un fichier comportant un shebang.
Merci d'avance, je suis à votre disposition pour les informations supplémentaires dont vous avez besoin si vous êtes partants.