+ lzip-bug@
- all
 
FWIW I have slightly changed method of getting time, it's more accurate and also 64 bit so there is no problem with over flow anymore. I leave it here for anyone wanting to use it.


diff -rup lzip-1.23/main.cc lzip-1.23-dcspeed-2/main.cc
--- lzip-1.23/main.cc	2022-01-22 00:11:01.000000000 +0000
+++ lzip-1.23-dcspeed-2/main.cc	2022-08-06 00:00:13.000000000 +0000
@@ -36,6 +36,7 @@
 #include <vector>
 #include <fcntl.h>
 #include <stdint.h>
+#include <time.h>
 #include <unistd.h>
 #include <utime.h>
 #include <sys/stat.h>
@@ -558,6 +559,14 @@ bool next_filename()
   }
 
 
+static long long clock_ns()
+  {
+  struct timespec time_now;
+  clock_gettime(CLOCK_MONOTONIC, &time_now);
+  return time_now.tv_sec*1e+9 + time_now.tv_nsec;
+  }
+
+
 int compress( const unsigned long long cfile_size,
               const unsigned long long member_size,
               const unsigned long long volume_size, const int infd,
@@ -567,6 +576,8 @@ int compress( const unsigned long long c
   int retval = 0;
   LZ_encoder_base * encoder = 0;		// polymorphic encoder
   if( verbosity >= 1 ) pp();
+  long long time_start = clock_ns();
+  long long time_end;
 
   if( zero )
     encoder = new FLZ_encoder( infd, outfd );
@@ -615,12 +626,18 @@ int compress( const unsigned long long c
     if( in_size == 0 || out_size == 0 )
       std::fputs( " no data compressed.\n", stderr );
     else
+      {
+      time_end = clock_ns();
       std::fprintf( stderr, "%6.3f:1, %5.2f%% ratio, %5.2f%% saved, "
-                            "%llu in, %llu out.\n",
+                            "%llu in, %llu out; in %0.2f[s]: %0.2f[MiB/s].\n",
                     (double)in_size / out_size,
                     ( 100.0 * out_size ) / in_size,
                     100.0 - ( ( 100.0 * out_size ) / in_size ),
-                    in_size, out_size );
+                    in_size,
+                    out_size,
+                    (double)( time_end - time_start ) / 1e+9,
+                    (in_size / ((double)( time_end - time_start ) / 1e+9 )) / (1024*1024) );
+      }
     }
   delete encoder;
   return retval;
@@ -668,6 +685,8 @@ int decompress( const unsigned long long
   unsigned long long partial_file_pos = 0;
   Range_decoder rdec( infd );
   int retval = 0;
+  long long time_start = clock_ns();
+  long long time_end;
 
   for( bool first_member = true; ; first_member = false )
     {
@@ -724,7 +743,14 @@ int decompress( const unsigned long long
       retval = 2; break;
       }
     if( verbosity >= 2 )
-      { std::fputs( testing ? "ok\n" : "done\n", stderr ); pp.reset(); }
+      {
+      time_end = clock_ns();
+      std::fprintf( stderr, "; %0.2f[s]: %0.2f[MiB/s]. %s",
+                    (double)( time_end - time_start ) / 1e+9,
+                    (decoder.data_position() / ((double)( time_end - time_start ) / 1e+9 )) / (1024*1024),
+                    testing ? "ok\n" : "done\n");
+      pp.reset();
+      }
     }
   if( verbosity == 1 && retval == 0 )
     std::fputs( testing ? "ok\n" : "done\n", stderr );

Reply via email to