015
23.11.2010, 23:29 Uhr
Hans
Library Walker (Operator)
|
Hi,
hab das Programm von Guybrush mal auf meinem alten K6-300MHz laufen gelassen. Da benötigt es 45 Sekunden. Dann eine kleine Modifikation, um es in eine Datei schreiben zu lassen, wobei ich es aber nur bis 300.000 (dreihundert Tausend) zählen lassen habe. Das dauerte etwa 1 Sekunde und erzeugte eine knapp 2 MB grosse Datei. Bei einem weiteren Durchlauf um bis 3.000.000 zu zählen benötigte es 19 Sekunden, und erzeugte eine knapp 22 MB grosse Datei.
Zum Schluss hab ich es bis 30.000.000 zählen lassen. - Hatte da aber die Befürchtung, das die Ergebnisdatei nicht mehr auf meine Festplatte passt, deshalb hab ich da vorher noch eine Fehlerabfrage eingebaut, damit er mir kontrolliert aussteigt, und ich noch erfahre, wie weit er gekommen ist. Es lief dann 169 Sekunden, und stieg mit der Fehlermeldung "errno: No space left on device" bei i=21 665 415 aus. Die erzeugte Datei war etwa 175 MB gross. Wenn ich das jetzt auf die 16-stellige Zahl hoch rechne, komme ich bei meinem Computer auf eine Laufzeit von 34.341,7 Jahre. - Ich glaube, man kann seine Zeit auch anders verplempern...
Hier mal die modifizierte Programmversion:
C++: |
#include <stdio.h> #include <stdlib.h> #include <time.h>
int main() { int i=0, q; time_t seconds; FILE *output; if ((output = fopen("zahlen.dat", "w")) == NULL) { printf ("Fehler beim öffnen der Datei.\n"); exit(1); } seconds = time (NULL);
for (; i<30000000; ++i) { q = fprintf(output, "%d,", i); if (q<0) // Fehlerbehandlung { printf ("Programmabbruch bei i=%d;\n", i); perror ("errno"); fflush(output); break; } } fclose (output);
seconds = time (NULL) - seconds;
printf ("%i seconds", seconds); return 0; }
|
Achso: @~CNewcomer, also dem Fragesteller: Ich hoffe, Du hast aus diesen Überlegungen und Experimenten etwas über grosse Zahlen und Rechenzeiten gelernt. Und noch etwas: die oben angegebenen Programme sind in C (ohne ++) geschrieben, falls Du auf die Idee kommst, sie einfach mal abzuschreiben.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 23.11.2010 um 23:38 Uhr von Hans editiert. |