代码比较 - 哪个在运行时更好?
Code Comparison - Which is better in terms of runtime?
代码 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
}
代码 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++。
您的探查器告诉您什么?
在现代操作系统上,更快的解决方案(由于开销最少)是将文件映射到内存中,从而完全避免 read/seek 调用。
代码 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
}
代码 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++。
您的探查器告诉您什么?
在现代操作系统上,更快的解决方案(由于开销最少)是将文件映射到内存中,从而完全避免 read/seek 调用。