2017-06-17 4 views
-2

CODE 1Codevergleich - Was ist besser in Bezug auf die Laufzeit?

while(fin.eof()==false) { 
    fin.read((char*)& Object_2, sizeof(Object_2)); //Reads a record for printing 
    class_object.display(); 

    fin.read((char*)& Object_2, sizeof(Object_2)); //Reads the next record space for eof detection 
    if(fin.eof() == true) 
     break; //Break out of the loop on encountering eof 
    else 
     fin.seekg(-signed(sizeof(Object_1)), ios :: cur); //File Pointer Correction 
} 

CODE 2

while(fin.eof()==false) { 
    fin.read((char*)& Object_2, sizeof(Object_2)); //Reads a record for printing 
    if(fin.eof() == true) 
      break; 
    else 
      class_object.display(); 

Welche ist besser in Bezug auf die Laufzeit? Der CODE1 lässt nicht zu, dass ein unnötiger Schleifenschritt in der While-Schleife ausgeführt wird. Auf der anderen Seite bricht der CODE2 nur, wenn die while-Schleife das letzte Mal ausgeführt wird (unnötiger Schleifenschritt).

P.S.- Ich verstehe, dass sparen auf den letzten Schritt der Schleife kaum einen Unterschied in der Laufzeit macht, aber ich bin nur neugierig, welche besser ist.

HINWEIS: Ich benutze TurboC++ wegen meiner Schule.

+3

Wenn Sie sich für Geschwindigkeit interessieren, müssen Sie es messen. –

+3

Sagen Sie Ihrem Lehrer ** STOP NUTZEN TurboC++ ** –

+0

Haben 'Object_1' und' Object_2' die gleiche Größe? ist 'fin' irgendeine Art von' std :: istream'? –

Antwort

1

Was sagt Ihnen Ihr Profiler?

Auf einem modernen Betriebssystem wäre die schnellere Lösung (aufgrund des geringsten Aufwands), die Datei im Speicher abzubilden und somit die Lese-/Suchaufrufe vollständig zu vermeiden.

Verwandte Themen