Re: exercice python

Top Page

Reply to this message
Author: Miguel Moquillon
Date:  
To: guilde
Subject: Re: exercice python
On Fri, Feb 11, 2005 at 11:13:32PM +0100, Miguel Moquillon wrote:
> J'ai effectué tests sur 5 échantillons et entre chaque le fichier de
> sortie est supprimé.
> Le fichier en entrée est de 480 lignes.
>
> Ma machine:
> Debian GNU/Linux sarge, Athlon XP 1700+, 1Go RAM, noyau 2.6.10 compilé
> par mes soins à partir des sources de Debian.
>
> Voici les résultats :
>            Perl      Python    Ruby      Eiffel
> real      0m0.009s  0m0.026s  0m0.016s  0m0.002s
> user      0m0.003s  0m0.017s  0m0.010s  0m0.001s
> sys       0m0.003s  0m0.006s  0m0.004s  0m0.002s
> syscalls  132       585       1115      47

>


Bonjour,

c'est encore moi :)
Inspiré par le test fait par Edgar avec le C et par les résultats
ci-dessus, j'ai décidé, comme j'avais un peu de temps à perdre :), de
faire aussi le test avec un programme C++ (pour rester dans l'objet)
(attention, j'ai dis C++ et pas C/C++ !).
Le programme est compilé avec l'option -O2.
(A noter que les résultats sont les même avec l'option -03 ou sans
indicateur d'optimisation.)
La version de gcc est "gcc (GCC) 3.3.5 (Debian 1:3.3.5-8)".
Les tests sont éffectués sur la même machine que ci-dessus.

Voici le résultat :
real      0m0.006s
user      0m0.003s
sys       0m0.002s
syscalls  60


Bien sûr, un résultat à + ou - 0m002s est conforme à ceux ci-dessus ;
c'est à dire que j'estime que la différence est trop minime pour être
considérée comme vraiment pertinente.

Je vous laisse interpréter le résultat ... surtoût face à celui d'Eiffel :)

Note : en pièce jointe le programme C++

--
Miguel Moquillon <miguel.moquillon@???>
jabber://moqui@???
http://miguel.moquillon.free.fr
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main (int argc, char *argv[]) {
stringstream text;

   ifstream file_in (argv[1]);
   if (!file_in) {
      cerr << "Cannot open file " << argv[1] << endl;
      return 1;
   }


   char buffer[1024];
   for (int line = 1; !file_in.eof(); line++) {
      file_in.getline(buffer, 1024);
      text << buffer;
      if (line % 2 == 0) text << '\n';
      else text << ' ';
   }
   file_in.close();


   ofstream file_out (argv[2]);
   if (!file_out) {
      cerr << "Cannot open file " << argv[2] << endl;
      return 1;
   }
   file_out << text.str();
   file_out.close();


return 0;
}