Δημοσιεύτηκε: 11 Μαρ 2012, 22:13
από medigeek
linuxs έγραψε:Οι τιμές που πέρνω για 100.000.000 εγγραφές είναι:
REAL: 30 s
CPU: 10 s
KERNEL: 5 s
[...] Είναι πιστευτά? :/

Τώρα κατάλαβα.. είναι πρόβλημα φαίνεται με το getitimer(). Έχεις κάπου ολόκληρο τον κώδικα για να το κοιτάξουμε/δοκιμάσουμε;

Εξαρτάται από το CPU φαίνεται και μάλλον ήδη έχει(ς) SSD δίσκο(;). Αυτές τις τιμές τις παίρνεις στον υπολογιστή της υπογραφής σου; Είσαι σίγουρος πως είναι 100 000 000 ; :P

Δοκίμασε αυτό:
testfputs.c
Μορφοποιημένος Κώδικας: Επιλογή όλων
/* fputs example */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (void)
{
FILE * pFile;
char str[10] = "test";
strcat(str, "\n");
int i = 0;
while (1) {
if (i == 1000000) { return 0; }
pFile = fopen ("mylog.txt","a");
fputs (str, pFile);
fclose (pFile);
i++;
}
return 0;
}

Θα επαναλάβει ένα εκατομμύριο φορές (1.000.000) τη διαδικασία γραφής με το while.

Στο δικό μου υπολογιστή (dual core):
έγραψε:$ time ./testfputs

real 0m18.997s
user 0m2.280s
sys 0m13.565s