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;
}