# -*- coding: utf-8 -*- from loguru import logger as log from pathlib import Path import iscc_sct as sct import argparse import time def benchmark(folder): """ Benchmark Text-Code generation for all text files in `folder`. Per file stats are logged to the console during processing. Comprehensive aggregated statistics are shown after processing all images :param folder: Folder containing text files for benchmarking """ folder = Path(folder) assert folder.is_dir(), f"{folder} is not a directory." total_time = 0 file_count = 0 for txt_path in folder.glob("*.txt"): start_time = time.time() try: iscc_meta = sct.code_text_semantic(txt_path) except Exception as e: log.error(f"Processing {txt_path.name} failed: {e}") continue end_time = time.time() elapsed_time = end_time - start_time total_time += elapsed_time file_count += 1 log.info( f"Processed {txt_path.name} in {elapsed_time:.2f} seconds. ISCC: {iscc_meta['iscc']}" ) if file_count > 0: avg_time = total_time / file_count log.info( f"Processed {file_count} files in {total_time:.2f} seconds. Average time per file: {avg_time:.2f} seconds." ) else: log.warning("No text files found in the provided folder.") def main(): parser = argparse.ArgumentParser(description="Benchmark ISCC Semantic-Code Text generation.") parser.add_argument( "folder", type=str, help="Directory containing text files for benchmarking." ) args = parser.parse_args() benchmark(args.folder) if __name__ == "__main__": main()