Advertisement
blackkettle

Serialization.cpp

Aug 21st, 2011
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | None | 0 0
  1. #include "Serializer.h"
  2.  
  3. Serializer::Serializer( ){
  4.   cout << "Initializing tests..." << endl;
  5.   rows = 260032;
  6.   cols = 44;
  7.   v1d.resize(rows*cols,3.14159);
  8.   binfile = "test.bin";
  9.   cout << "Total elems: " << rows*cols << endl;
  10.   cout << "Test binfile: " << binfile << endl;
  11. }
  12.  
  13. float Serializer::write_binary( ) {
  14.   start_time = clock();
  15.   ofstream ambin_ofp("test.bin", ofstream::binary);
  16.   ambin_ofp.write((char*)&rows, sizeof(size_t) );
  17.   ambin_ofp.write((char*)&cols, sizeof(size_t) );
  18.   ambin_ofp.write((char*)&v1d[0], rows*cols*sizeof(float));
  19.   ambin_ofp.close();
  20.   end_time = clock();
  21.  
  22.   return (float)(end_time-start_time) / CLOCKS_PER_SEC;
  23. }
  24.  
  25. float Serializer::iter_1d( ){
  26.   start_time = clock();
  27.   float tmp = 0.0;
  28.   for( int i=0; i<rows; i++ ){
  29.     vector<float>::const_iterator v_iter = v1d.begin()+i*cols;
  30.     for( int j=0; j<cols; j++ )
  31.       tmp += *(v_iter++);
  32.   }
  33.   end_time = clock();
  34.  
  35.   return (float)(end_time-start_time)/CLOCKS_PER_SEC;
  36. }
  37.  
  38. float Serializer::read_1d_binary( ){
  39.   start_time = clock();
  40.   ifstream ambin_ifp( binfile, ifstream::binary );
  41.  
  42.   ambin_ifp.read((char*)&rows, sizeof(size_t) );
  43.   ambin_ifp.read((char*)&cols, sizeof(size_t) );
  44.  
  45.   v1d.resize(rows*cols);
  46.   ambin_ifp.read((char*)&v1d[0], rows*cols*sizeof(float) );
  47.   end_time = clock();
  48.   ambin_ifp.close();
  49.  
  50.   return (float)(end_time-start_time) / CLOCKS_PER_SEC;
  51. }
  52.  
  53. float Serializer::iter_2d( ){
  54.   start_time = clock();
  55.   float tmp = 0.0;
  56.   for( int i=0; i<rows; i++ ){
  57.     vector<float>::const_iterator v_iter = v2d[i].begin();
  58.     for( int j=0; j<cols; j++ )
  59.       tmp += *(v_iter++);
  60.   }
  61.   end_time = clock();
  62.  
  63.   return (float)(end_time-start_time)/CLOCKS_PER_SEC;
  64. }
  65.  
  66. float Serializer::read_2d_binary( ){
  67.   v2d.clear();
  68.   start_time = clock();
  69.   ifstream ambin_ifp( binfile, ifstream::binary );
  70.  
  71.   ambin_ifp.read((char*)&rows, sizeof(size_t));
  72.   ambin_ifp.read((char*)&cols, sizeof(size_t));
  73.  
  74.   vector<float> tmp;
  75.   tmp.resize(cols);
  76.   for( int i=0; i<rows; i++ ){
  77.     ambin_ifp.read((char*)&tmp[0], cols*sizeof(float));
  78.     v2d.push_back(tmp);
  79.   }
  80.   end_time = clock();
  81.   ambin_ifp.close();
  82.  
  83.   return (float)(end_time-start_time) / CLOCKS_PER_SEC;
  84. }
  85.  
  86. int Serializer::elems_2d( ){
  87.     int elems = 0;
  88.     for( int i=0; i<v2d.size(); i++ )
  89.         for( int j=0; j<v2d[i].size(); j++ )
  90.             elems++;
  91.     return elems;
  92. }
  93.  
  94. int Serializer::elems_1d( ){
  95.     return v1d.size();
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement