======================================================================
JSON UTILS VERSION COMPARISON
======================================================================

File: d:\OneDrive\DEV\exonware\xwnode\examples\x5\data\database_1gb.jsonl
Size: 1.00 GB (1,075,116,998 bytes)

Comparing:
  V1: Streaming (no index) - Simple, memory-efficient
  V2: Indexed (with cache) - Fast random access, paging

Test Configuration: 10 test runs with operation counts: [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]

======================================================================
RUNNING ALL COMPARISONS - 100 OPERATIONS
======================================================================
Using 100 operations per test

======================================================================
COMPARISON 1: First Access (Cold Start) - 100 Operations
======================================================================

📋 Loading test IDs...
  ✓ Loaded 10,000 IDs from cache: d:\OneDrive\DEV\exonware\xwnode\examples\x5\data\database_1gb.jsonl.ids.json
  Using 100 IDs for testing

  ⚠️  Index already exists. Skipping cold start test.
  💡 Delete the index file to test cold start performance.
  💡 Index file: d:\OneDrive\DEV\exonware\xwnode\examples\x5\data\database_1gb.jsonl.idx.json

📖 V1 (Streaming): Read first user 100 times
  Total time: 199.92 ms
  Avg per op: 2.00 ms
  Memory: 457.77 KB
  Success: 100/100

📖 V2 (Indexed) - RUN 2 (Warm): Use cached index, read 100 times
  Total time: 1.62 s
  Avg per op: 16.25 ms
  Memory: 65.13 MB
  Success: 100/100

  📊 Average per operation:
     V1: 2.00 ms
     V2 Warm: 16.25 ms
  ⚡ V2 Warm is 0.12x slower than V1

======================================================================
COMPARISON 2: Random ID Access - 100 Operations
======================================================================

📋 Loading test IDs...
  ✓ Loaded 10,000 IDs from cache: d:\OneDrive\DEV\exonware\xwnode\examples\x5\data\database_1gb.jsonl.ids.json
  Using 100 IDs for testing

  ⚠️  Index already exists. Skipping cold start test.
  💡 Delete the index file to test cold start performance.

📖 V1 (Streaming): Read 100 records (each scans from start)
  Total time: 194.78 ms
  Avg per op: 1.95 ms
  Memory: 454.28 KB
  Success: 100/100

📖 V2 (Indexed) - RUN 1 (Cold): Build index + 100 random accesses
    Using existing index (index persists across runs)
Traceback (most recent call last):
  File "d:\OneDrive\DEV\exonware\xwnode\examples\x5\compare_versions.py", line 1014, in <module>
    exit(main())
         ^^^^^^
  File "d:\OneDrive\DEV\exonware\xwnode\examples\x5\compare_versions.py", line 958, in main
    compare_subsequent_access(str(file_path), skip_cold_if_indexed=True, num_ops=num_ops)
  File "d:\OneDrive\DEV\exonware\xwnode\examples\x5\compare_versions.py", line 463, in compare_subsequent_access
    v2_cold_result = measure_operation("V2 Cold Start", v2_cold_start)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "d:\OneDrive\DEV\exonware\xwnode\examples\x5\compare_versions.py", line 197, in measure_operation
    elapsed = time.perf_counter() - start_time
              ^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
^C