永发信息网

C++文件写入速度

答案:5  悬赏:10  手机版
解决时间 2021-02-01 02:51
在VC++里用fstream类新建一个文件并写入,cout<但是感觉速度很慢,和fortran不能比的。。。
不知道如何提高速度,用fput,fwrite或fprintf会不会快一点?
谢谢

我的程序很简单的
就是:
ofstream f1("xxx.txt",ios_base::app);
for(i=1;i<=N;i++) f1<f1.close();
实际写入时,每次计算完后a[i]和b[i]都会变,所以就继续添加写入文件
一般写入1000*1024个
最佳答案
应该是差不多的,说不定有些情况,C++还要快一些,如fprintf() 要分析字符串来动态确定传入的数据类型。cout 在编译器通过重载已经把类型确定下来了,而且其输出那些运算符重载函数都可以内联 。
全部回答
显然fprintf要快的多,不信你读一百万个数写一百万个数,马上就有质的差别。我见过还有更快的。。只是太复杂了。。
会快很多…… c++iostream的异常处理太占用时间
理论上用户想要做的最快就直接使用Windows的API,因为这些C函数在windows操作系统上归根结底都是调用API的 不过就你这个问题而言,现代cpu以及编译器都已经相当强悍了,不太可能让你感觉很慢,要么是你程序写的不太对头,要么是你的错误 最好把代码贴出来,自己不信服的话可以用测量时间的函数自己看看速度到底如何
//参考代码 #include  #include  using namespace std; int main() {     int a,b;       ifstream infile;       infile.open("myfile.txt");      //注意文件的路径       infile>>a>>b;                   //两行数据可以连续读出到变量里       infile.close()       //如果是个很大的多行存储的文本型文件可以这么读:       char buf[1024];                //临时保存读取出来的文件内容       string message;       ifstream infile;       infile.open("myfile.js");       if(infile.is_open())          //文件打开成功,说明曾经写入过东西       {           while(infile.good() && !infile.eof())           {               memset(buf,0,1024);               infile.getline(buf,1204);               message = buf;               ......                     //这里可能对message做一些操作               cout<
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯