Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

ich hab diese Woche einen Parktikanten bekommen, und hab ihn ein Programm schreibenlassen, welches Primzahlen berechnet.

Nachher wollte ich ihm den Unterschied zwischen compilieren im Debug Modus und Releasemodus zeigen. Dummerweise ist auf seinem PC der Release ca 20% langsamer als der Debug. Auf meinem Athlon 2000+ ist das in etwa umgekehrt. (Nur die fertig compilierten EXEs kopiert).

Er hat einen Dell Barebone mit PIV 2,4GHz.

Wie kann das sein, dass der Releasecompile langsamer ist als der Debugcompile?

Liegt das am PIV?

Geschrieben

Hallo,

das ist doch schon mal ein interessantes Ergebnis :) Das Du auf zwei unterschiedlichen Architekturen auch unterschiedliche Ergebnisse erhälst ist nicht verwunderlich, da sich die Zykluszeiten der Instruktuionen unterscheiden. Das allerdings die Debug-Version langsamer ist, ist schon etwas seltsam. Dafür kann es verschiedenste Gründe geben (Laufzeit-Bibliotheken in unterschiedlichen Versionen usw.). Poste doch mal den Code, dann ist die Problemsuche einfacher.

Nic

Geschrieben

Ich hab mich nicht gewundert, dass der Code auf unterschiedlichen Architekturen unterschiedlich schnell ist, sondern dass auf einem Athlon die Geschwindgkeiten von Release und Debug passen, und auf dem PIV eben nicht. :confused:


#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include <string.h>
#include <process.h>
#include <time.h>


void main(void)
{
int zahl=0;
int i=0;
int j=1;
int k=0;
int l=0;
char dat[20];
clock_t start, ende;


cout<<"Geben sie eine datei an in der die Werte gespeichert werden sollen: "<<endl;
cin>>dat;
FILE *stream;
stream = fopen( dat, "w" );
if (stream==NULL) {
printf("Datei kann nicht gelesen werden, Programm wird nach Tastendruck geschlossen!\n");
getch();
exit(1);
}
else {
printf( "Die Datei wurde geoeffnet\n");
}



cout<<"Geben sie eine Zahl ein: ";
cin>>zahl;
start= clock();
for (i=0; i<=zahl; i++) {
for (j=2; j<=i/2; j++) {
k = i%j;
if (k==0) {
break;
}
if (j==i/2) {
l++;
if (l%5 == 0) {
fprintf(stream,"%d\n", i);
cerr<<i<<endl;

} else {
fprintf(stream,"%d, ", i);
cerr<<i<<", ";
}
}




}

}
ende= clock();
printf("\nEs wurden zwischen 0 und %d, %d Primzahlen gefunden.\nEs wurden %d ms benoetigt.",zahl,l,ende-start);
fprintf(stream, "\nEs wurden zwischen 0 und %d, %d Primzahlen gefunden.\nEs wurden %d ms benoetigt.",zahl,l,ende-start);
fclose(stream);
getch();
}
[/PHP]

das ist der Code. Den hat mein Praktikant geschrieben. Wenn jemand noch andere Aufgaben einfallen, wäre ich auch dankbar. *gg*

Vielleicht findet ja jemand raus, warum Debug schneller ist. Ich hab jedenfalls überhaupt keine Ahnung wie das sein kann.

Ich hab es einmal bei ihm, und einmal auf meinem PC kompiliert, und beide Compiles auf beiden PCs getestet, und immer das gleiche Ergebnis erhalten.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...