Answered step by step
Verified Expert Solution
Link Copied!
Question
1 Approved Answer

Part 2. Reading and writing binary data is much faster than reading and writing text data. Here is a program which does the following: a.

Part 2. Reading and writing binary data is much faster than reading and writing text data.

Here is a program which does the following:

a. creates a char array 64 MB long (like 8-bit pixels, for example). b. initializes it to random values between -128 and 127 c. writes the values to a data file as (text) integer values (like we have done with our PGM images)

Run this program and time how long it takes to run. (If it takes less than a few seconds, double or quadruple the size of the array.) Then, write functions to write out and read back in the same data in binary format. Run your program and time how long it takes to run. Calculate approximately how much faster it is to read and write binary, and what the difference in size is between the ascii file and the binary file. Add a few lines to your binary_input_output_notes.txt file giving the comparisons. Then estimate how long it would take to read a 10 GB ascii PGM, and how long it would take to read the equivalent 2.5 GB binary PGM.

Heres my solution, if you get stuck.

Name your output binary_timing.cpp

HERE IS THE PROGRAM MENTIONED ABOVE:

/* file: binary_timing.cpp lab 10 exercise program to demonstrate to the student how much faster it is to write (and read) a data file in binary than in ascii. */ #include  #include  #include  #include  using namespace std; const int SIZE=64*1048576; // 64 * 1024*1024, 64 MegBytes void initialize_dat(char dat[], int size); void write_ascii_data(const char dat[], int size); void read_ascii_data(char dat[], int size); /* void write_binary_data(const char dat[], int size); void read_binary_data(char dat[], int size); */ int main( ) { char *dat = new char[SIZE]; if (! dat) {cerr << "cannot alloc dat array"<(dat[i]); if (i%16==15) ofs << endl; else ofs << ' '; if(i%(1024*1024)==0) {cout << " " << i/1024/1024<<" MB text written"; cout.flush();} // write something every MB so we know something is happening // cout.flush( ) flushes the output buffer, so the output appears on the screen immediately. } cout << "done writing text"<> val; // read number into an integer dat[i] = static_cast(val); // convert it to a char. if(i%(1024*1024)==0) {cout << " " << i/1024/1024<<" MB text read in"; cout.flush();} // write something every MB so we know something is happening } cout << "done reading text"< 

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image
Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Automating Access Databases With Macros

Authors: Fish Davis

1st Edition

1797816349, 978-1797816340

More Books

Students explore these related Databases questions

Question

Understand the concept of data warehouses.

Answered: 3 weeks ago