ensure temp file is deleted; add some comments about results
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Wed, 15 Jun 2016 09:39:41 +0000 (11:39 +0200)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Wed, 15 Jun 2016 11:18:03 +0000 (13:18 +0200)
testing/test_performance.py

index 0a7fbef..39e7a3b 100644 (file)
@@ -4,10 +4,17 @@
 
 Creates a single big volume with random files added
 
+Results on my devel box:
+~0.055s/MB --> ~1 minute per GB
+compress ratio ~1.15
+adding encryption had no noticeable effect
+switching mode between w|gz or w#gz had no noticeable effect
+switching to bzip2 reduced speed to ~0.174s/MB, compression ratio approx. equal
+
 .. codeauthor:: Intra2net <info@intra2net.com>
 """
 
-from tempfile import NamedTemporaryFile
+from tempfile import mkstemp
 from time import perf_counter
 import os
 
@@ -22,6 +29,7 @@ from deltatar.tarfile import TarFile
 
 from test_multivol_compression_sizes import find_random_files
 
+
 def main():
     """ Main function, called when running file as script
 
@@ -38,18 +46,23 @@ def main():
     open_time = add_time = close_time = 0.0
     n_files_added = 0
 
-    with NamedTemporaryFile(prefix='deltatar_multivol_cmp_tst_',
-                            suffix=suffix, delete=True) as file_obj:
-        file_obj.close()
-        result_file_name = file_obj.name
+    result_file_name = None
+    file_handle = None
+    try:
+        # create temp file
+        file_handle, result_file_name = mkstemp(
+            prefix='deltatar_multivol_cmp_tst_', suffix=suffix)
+        os.close(file_handle)
+        file_handle = None
+
         print('opening temp file ' + result_file_name)
 
         start = perf_counter()
-        tarobj = TarFile.open(result_file_name, mode=mode)
+        tarobj = TarFile.open(result_file_name, mode=mode, password='test1234')
         end = perf_counter()
         open_time = end - start
 
-        for add_file_name in find_random_files():
+        for add_file_name in find_random_files(min_size):
             # check file
             if add_file_name.startswith(result_file_name[:-6]):
                 continue    # do not accidentally add self
@@ -89,16 +102,23 @@ def main():
 
         result_size = os.stat(result_file_name).st_size
 
-    # summarize
-    print('time to open/close the tar file: {:.3f} / {:.3f}ms'
-          .format(open_time*1000., close_time*1000.))
-    print('time to add {} files: {:.3f}s (avg {:.3f}ms per file)'
-          .format(n_files_added, add_time, add_time / n_files_added * 1000.))
-    print('average added file size: {:.3f}KB'
-          .format(size_added/n_files_added/1000.))
-    print('time to add per MB: {:.3f}s'.format(add_time/size_added*1.0e6))
-    print('size of result file: {} --> compression ratio {:.1f}'
-          .format(result_size, size_added/result_size))
+        # summarize
+        print('time to open/close the tar file: {:.3f} / {:.3f}ms'
+              .format(open_time*1000., close_time*1000.))
+        print('time to add {} files: {:.3f}s (avg {:.3f}ms per file)'
+              .format(n_files_added, add_time, add_time / n_files_added * 1000.))
+        print('average added file size: {:.3f}KB'
+              .format(size_added/n_files_added/1000.))
+        print('time to add per MB: {:.3f}s'.format(add_time/size_added*1.0e6))
+        print('size of result file: {} --> compression ratio {:.2f}'
+              .format(result_size, size_added/result_size))
+
+    finally:
+        if file_handle:
+            os.close(file_handle)
+        if result_file_name:
+            # del temp file
+            os.unlink(result_file_name)
 
 
 if __name__ == '__main__':