Δημοσιεύτηκε: 11 Μαρ 2012, 22:13
linuxs έγραψε:Οι τιμές που πέρνω για 100.000.000 εγγραφές είναι:
REAL: 30 s
CPU: 10 s
KERNEL: 5 s
[...] Είναι πιστευτά? :/
Τώρα κατάλαβα.. είναι πρόβλημα φαίνεται με το getitimer(). Έχεις κάπου ολόκληρο τον κώδικα για να το κοιτάξουμε/δοκιμάσουμε;
Εξαρτάται από το CPU φαίνεται και μάλλον ήδη έχει(ς) SSD δίσκο(;). Αυτές τις τιμές τις παίρνεις στον υπολογιστή της υπογραφής σου; Είσαι σίγουρος πως είναι 100 000 000 ;
Δοκίμασε αυτό:
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