#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // write N * 512 integers void fillFile(int N, char * name) { FILE * fd = ::fopen(name, "wb"); if (fd == NULL) { cerr << "problem" << endl; return; } int numbers[512]; for(int k = 0; k < 512; ++k) numbers[k] = k; // whatever for(int t = 0; t < N; ++t) { int size = 512; size_t realsize; int err, error; if((realsize = fwrite(&size, sizeof(int),1,fd))!=1) { err = errno; error = ferror(fd); if(error) { cout<< "We written only " << realsize << " bytes" << endl; cout<< "[ERROR] " << strerror(err) < numbers(512); for(int t = 0; t < N; ++t) { int size = 0; if(fread(&size, sizeof(int),1,fd)!=1) { cout<<"Data can't be read???"< numbers(512); for(int t = 0; t < N; ++t) { int size = 0; in.read(reinterpret_cast(&size),sizeof(int)); numbers.resize(size); in.read(reinterpret_cast(&numbers[0]),sizeof(int)*size); answer += doSomeComputation(&numbers[0],numbers.size()); } in.close(); return answer; } int testfreadwithsetbuffer(char * name, int N) { int answer = 0; FILE * fd = ::fopen(name, "rb"); setvbuf (fd , NULL , _IOFBF , 1024*4 ); // large buffer if (fd == NULL) { cerr << "problem" << endl; return -1; } vector numbers(512); for(int t = 0; t < N; ++t) { int size = 0; if(fread(&size, sizeof(int),1,fd)!=1) { cout<<"Data can't be read???"< numbers(512); for(int t = 0; t < N; ++t) { int size = 0; if(fread(&size, sizeof(int),1,fd)!=1) { cout<<"Data can't be read???"<(mmap(NULL, length, PROT_READ, MAP_FILE | (shared?MAP_SHARED:MAP_PRIVATE) | MAP_POPULATE , fd, 0)); #else int * addr = reinterpret_cast(mmap(NULL, length, PROT_READ, MAP_FILE | (shared?MAP_SHARED:MAP_PRIVATE), fd, 0)); #endif int * initaddr = addr; if (addr == MAP_FAILED) { cout<<"Data can't be mapped???"< numbers(512); for(int t = 0; t < N; ++t) { int size = 0; if(read(fd,&size, sizeof(int))!=sizeof(int)) { cout<<"Data can't be read???"<