2017-06-17 5 views
-2

CODE 1コード比較 - 実行時間の点でどちらが優れていますか? 1は、ランタイムの面で優れている

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(); 

? CODE1では、whileループで不要なループステップを実行できません。一方、CODE2は、whileループが最後に実行されたときに破棄されます(不要なループステップ)。

P.S.-私は、ループの最後のステップを節約するだけで、ランタイムにほとんど差がないことを理解していますが、どちらが優れているのか不思議です。

注:私は学校のためにTurboC++を使用しています。

+3

スピードが気になる場合は、測定する必要があります。 –

+3

インストラクターに教えてください** TurboC++を使用して停止** –

+0

'Object_1'と' Object_2'は同じサイズですか? 'fin ::' std :: istream'の何らかの型ですか? –

答えて

1

プロファイラはあなたに何を伝えますか?

最新のオペレーティングシステムでは、高速オーバーヘッドによる解決策は、ファイルをメモリにマップして、読み取り/書き込み呼び出しを完全に回避することです。