我正在使用C的流来流式传输文件的每一行进行解析.
#include <fstream>#include <string>#include <iostream>int main( int argc,char** argv ) { int linecount = 0 ; std::string line ; std::ifstream infile( argv[ 1 ] ) ; if ( infile ) { while ( getline( infile,line ) ) { linecount++ ; } std::cout << linecount << ": " << line << '\n' ; } infile.close( ) ; return 0 ;}
首先,为什么使用这段代码这么慢?
其次,我如何改进它以使其更快?
你怎么能避免它?使用其他库来实现高性能异步I / O,例如boost asio或 *** 作系统提供的本机功能.
如果你想保持在标准范围内,functionstd :: basic_istream :: read()可以满足你的性能需求.但在这种情况下,你必须自己进行缓冲和计数.这是如何做到的.
#include <algorithm>#include <fstream>#include <iostream>#include <vector>int main( int,char** argv ) { int linecount = 1 ; std::vector<char> buffer; buffer.resize(1000000); // buffer of 1MB size std::ifstream infile( argv[ 1 ] ) ; while (infile) { infile.read( buffer.data(),buffer.size() ); linecount += std::count( buffer.begin(),buffer.begin() + infile.gcount(),'\n' ); } std::cout << "linecount: " << linecount << '\n' ; return 0 ;}
让我知道,如果它更快!
总结以上是内存溢出为你收集整理的逐行改进C的阅读文件?全部内容,希望文章能够帮你解决逐行改进C的阅读文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)