[英]Is seekg or ignore more efficient?
我正在使用C ++編寫一個對時間非常敏感的應用程序,因此效率至關重要。
我有一個std::ifstream
,並且我想跳過特定數量的字符(又名字節偏移,我沒有使用wchar_t
)來到達特定行,而不是使用std::getline
來讀取每一行,因為對我來說太低效了
使用seekg
或ignore
跳過指定數量的字符並從那里開始閱讀更好嗎?
size_t n = 100;
std::ifstream f("test");
f.seekg(n, std::ios_base::beg);
// vs.
f.ignore(n);
查看cplusplus.com上的兩個函數,似乎ignore
將使用sbumpc或sgetc跳過請求的字符數。 這意味着它甚至可以在本身不支持跳過的流上工作(ifstream可以做到),但是它也可以處理每個字節。
seekg
另一方面使用pubseekpos或pubseekoff,這是實現定義。 對於文件,這應該直接跳到所需位置,而不處理直到它的字節。
我希望seekg
會更高效,但是正如其他人所說:對大文件進行自己的測試將是您的最佳選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.