    // Only write additional vectors if wanted
    if (write_additional_data)
      {
-@@ -1573,8 +1684,20 @@
+@@ -1589,8 +1703,20 @@
  	  }
  
  	  io.data (io_buffer, comment.c_str());

 }
 
 
@@ -665,10 +684,15 @@
   parallel_only();
   std::string comment;
 
+  PerfLog pl("IO Performance",false);
+  pl.push("read_serialized_data");
+  unsigned int total_read_size = 0;
+
   // 10.)
   // Read the global solution vector
   {
-    this->read_serialized_vector(io, *this->solution);
+    total_read_size +=
+      this->read_serialized_vector(io, *this->solution);
 
     // get the comment
     if (libMesh::processor_id() == 0)
@@ -684,7 +708,8 @@
 
       for(; pos != this->_vectors.end(); ++pos)
         {
-	  this->read_serialized_vector(io, *pos->second);
+	  total_read_size +=
+	    this->read_serialized_vector(io, *pos->second);
 
 	  // get the comment
 	  if (libMesh::processor_id() == 0)
@@ -692,160 +717,422 @@
 
 	}
     }
+  
+  const Real 
+    dt   = pl.get_elapsed_time(),
+    rate = total_read_size*sizeof(Number)/dt; 
+
+  std::cout << "Read " << total_read_size << " \"Number\" values\n"
+	    << " Elapsed time = " << dt << '\n'
+	    << " Rate = " << rate/1.e6 << "(MB/sec)\n\n";

+  std::cout << "Write " << total_written_size << " \"Number\" values\n"
+	    << " Elapsed time = " << dt << '\n'
+	    << " Rate = " << rate/1.e6 << "(MB/sec)\n\n";
   
-  // std::cout << "Write " << total_written_size << " \"Number\" values\n"
-  // 	    << " Elapsed time = " << dt << '\n'
-  // 	    << " Rate = " << rate/1.e6 << "(MB/sec)\n\n";
+  pl.pop("write_serialized_data");
+
   
-  // pl.pop("write_serialized_data");
+
+  
+  // // test the new method
