From a7660b1c6eef10a3262c6a5199cf58557473887e Mon Sep 17 00:00:00 2001 From: Christian Herdtweck Date: Wed, 15 Jun 2016 11:39:41 +0200 Subject: [PATCH] ensure temp file is deleted; add some comments about results --- testing/test_performance.py | 54 +++++++++++++++++++++++++++++------------- 1 files changed, 37 insertions(+), 17 deletions(-) diff --git a/testing/test_performance.py b/testing/test_performance.py index 0a7fbef..39e7a3b 100644 --- a/testing/test_performance.py +++ b/testing/test_performance.py @@ -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 """ -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__': -- 1.7.1