005
07.08.2006, 15:35 Uhr
Hans
Library Walker (Operator)
|
Hi,
ist zwar kein Stresstool im eigentlichen Sinne, aber eine Beschäftigungstherapie für die CPU, ob und inwiefern der Speicher mit betroffen ist, kannn ich nicht wirklich sagen. Hier jedenfalls mal das Programm:
C++: |
/* Datei: longcalc.c
Sinn und Zweck: Dient einfach nur dazu, den Computer lange rechnen zu lassen.
V0.8 - nach einer Vorlage von F. Rieg in "Grafikprogrammierung für Windows", ISBN 3-446-40009-5, Seite 70 */
#include <stdio.h> #include <math.h> #include <time.h>
#define MAXSIZE 500000 /* Hier ggf. anpassen; - 500 zum testen, dann 5.000.000 (5 Mio.) für den Einsatz */
double vektor(void); void meldung(); void fortschritt(long); int prozent(long); double x[MAXSIZE], y[MAXSIZE], z[MAXSIZE], s[MAXSIZE];
int main() { double x; time_t first, second;
first = time(NULL); /* Erhält die Systemzeit */
meldung(); x=vektor();
second = time(NULL); /* Erhält noch einmal die Systemzeit */ printf("Die Therapie dauerte: %f Sekunden.\n",difftime(second,first));
return 0; }
/********************************************************** * Die Function vektor sorgt nur fuer langes "Rechnen" * Mit #pragma option sämtliche Optimierungen abstellen; - zumindest * beim Borland Compiler **********************************************************/ #pragma option -Od double vektor(void) { extern double x[], y[], z[], s[]; double pi; long i;
pi = 4*atan(1.);
printf ("Longcalc Meldung: initialisiere x.\n"); for (i= 0; i< MAXSIZE; i++) { x[i]= (double) i; fortschritt(i); } printf ("Longcalc Meldung: Vektor x initialisiert.\n");
printf ("Longcalc Meldung: initialisiere y.\n"); for (i= MAXSIZE-1; i>0; i--) { y[i]= (double) i; fortschritt(i); } printf ("Longcalc Meldung: Vektor y initialisiert.\n");
printf ("Longcalc Meldung: berechne z, das kann etwas länger dauern...\n"); for (i= 0; i< MAXSIZE; i++) { z[i]= sqrt(pow(x[i],2.) + pow(y[i],2.)); fortschritt(i); } printf ("Longcalc Meldung: Vektor z bearbeitet.\n");
printf ("Longcalc Meldung: berechne s, das kann etwas länger dauern...\n"); for (i= 0; i<MAXSIZE; i++) { s[i]= sin((double) i * pi / 180.) + cos(((double) MAXSIZE-i) * pi /180.) ; fortschritt(i); } printf ("Longcalc Meldung: Vektor s bearbeitet.\n");
return(z[MAXSIZE-1]); } /* vektor */ /* Optimierungsoption wieder auf den ursprünglichen Wert zurück setzen */ /* #pragma option -Od. // gibt leider 'ne Fehlermeldung. */
void meldung() { printf ("Prozessorbeschäftigungstherapie \"Longcalc\" am Werk...\n"); }
void fortschritt(long i) { int pz;
if (i%10) return; else pz = prozent(i), // ist wahrscheinlich unsauberer Stil... printf ("%3d%% erledigt...\r", pz); }
int prozent(long pw) { return (pw * 100 / MAXSIZE); }
|
Soweit das; das liefert bei mir folgende Ausgabe:
Code: |
D:\Borland\work>longcalc Prozessorbeschõftigungstherapie "Longcalc" am Werk... Longcalc Meldung: initialisiere x. Longcalc Meldung: Vektor x initialisiert. Longcalc Meldung: initialisiere y. Longcalc Meldung: Vektor y initialisiert. Longcalc Meldung: berechne z, das kann etwas lõnger dauern... Longcalc Meldung: Vektor z bearbeitet. Longcalc Meldung: berechne s, das kann etwas lõnger dauern... Longcalc Meldung: Vektor s bearbeitet. Die Therapie dauerte: 57.000000 Sekunden.
|
Dazu hab ich später noch mal ein paar fragen, die stell ich aber in der Borland-Rubrik, weil sie Borland-spezifisch sind.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 07.08.2006 um 15:39 Uhr von Hans editiert. |