一个 30 M 的int号码值一次性保存。和读取一次,避免保存为char 种类,进行格转变,格转换时间是非常耗时。
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
#define MAXNUM 2560*1920
void savedata(char *filename,int *pdata)
{
ofstream out;
out.open(filename,ios::binary);
if(!out.is_open())
return ;
for (int i=0;i<MAXNUM;i++)
{
pdata[i] = i;
}
out.write((char *)pdata,MAXNUM*sizeof(int));
out.close();
cout<<endl;
} void readdata(char *filename,int *pdata,int length)
{
ifstream ifs(filename,ios::binary);
if (!ifs)
{
cout << "File open error!" << endl; exit(1);
} // 获取文件大小。
ifs.seekg(0, ios::end);
streampos pos = (ifs.tellg());
ifs.seekg(0, ios::beg); // 注意要将文件指针移动到文件头
if (pos > 0)
{
ifs.read((char*)pdata, pos);
for (int i = 0; i < pos/4; i++)
{
cout << pdata[i];
cout << endl;
}
}
ifs.close();
} void main()
{
int *pd = new int[MAXNUM];
memset(pd,'0',MAXNUM);
for (int i=0;i<MAXNUM;i++)
{
pd[i] = i;
}
savedata("datat.img",pd);
int* buff = new int[MAXNUM];
memset(buff,'0',MAXNUM);
double start=clock();
readdata("datat.img",buff,MAXNUM);
double end=clock();
cout<<(end - start)<<endl;
delete[] pd;
delete[] buff;
system("pause"); }
版权声明:本文博客原创文章。博客,未经同意,不得转载。