Bonjour.

Je faisais un bench pour comparer les perfs d'un std::ofstream vs un fprintf, m'attendant à un léger mieux avec fprintf et ... fprintf est environ 14 fois plus lent que std::ofstream. Du coup, je me demande ce qui ne va pas.

Ci-dessous un petit extrait du code utilisé (dans un switch, A étant un gros tableau qui me sert à tester les perfs)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        case 0: {
            std::ofstream out(title, std::ios::out | std::ios::trunc);
            if (out) {
                ok = true;
                for (i=0; i<M; i++) {
                    for (j=0; j<N; j++) {
                        out<<A[i][j]<<" ";
                    }
                    out<<"\n";
                }
                out.close();
            } else {
                std::cout<<"Error with file : "<<title<<"\n";
            }
            break;
        }
        case 1: {
            FILE *out = fopen(title.c_str(), "w");
            if (out!=NULL) {
                ok = true;
                for (i=0; i<M; i++) {
                    for (j=0; j<N; j++) {
                        fprintf(out, "%d ", A[i][j]);
                    }
                    fprintf(out, "\n");
                }
                fclose(out);
            } else {
                std::cout<<"Error with file : "<<title<<"\n";
            }
            break;
        }
Je compile avec g++ avec -O3...