afs commented on PR #1800:
URL: https://github.com/apache/jena/pull/1800#issuecomment-1482907354

   Generally, improvement with ByteBufferLib changes.
   
   Adding RecordBuffer causes some slow down compared to just the ByteBufferLib 
changes.
   This is probably because the optimizer can avoid the bounds checking in 
RecordBuffer `ByteBuffer.get` together with the RecordBuffer operaing on small 
data items, so the allocation costs of the array are significant.
   
   Setup: current Jena development codebase (same as 4.7.0 for TDB2), with 
ByteBufferLib changes and with
   ByteBufferLib and RecordBuffer changes.
   
   Writing to NVMe M2 SSD.
   Reading from data file nt.gz on HDD.
   It is slower to put the data on the same SSD as the output database - the 
parser is faster tan all the figures shown and is not not the limiting factor.
   
   The test is loading BSBM data with tdb2.tdbloader, running each of 3 loaders 
twice in one JVM (6 runs per JVM).
   The results of the second run; no class loading, some JIT optimization would 
have happened.
   
   Data sizes: 1m, 5m, 25m , 50m, and 100m.
   
   "basic" is approximately what a bulk load into a running Fuseki server is 
doing.
   
   <details>
   
     <summary>Time data for bulk loading</summary>
   
   ```
   1 million triples
   main:
   Basic:    7.842 seconds : Triples = 1,000,312 : Rate = 127,558 /s
   Phased:   3.897 seconds : Triples = 1,000,312 : Rate = 256,688 /s
   Parallel: 2.793 seconds : Triples = 1,000,312 : Rate = 358,150 /s
   
   ByteBuffer:
   Basic:    6.292 seconds : Triples = 1,000,312 : Rate = 158,982 /s
   Phased:   3.262 seconds : Triples = 1,000,312 : Rate = 306,656 /s
   Parallel: 2.754 seconds : Triples = 1,000,312 : Rate = 363,221 /s
   
   ByteBuffer and Record Buffer:
   Basic:    6.704 seconds : Triples = 1,000,312 : Rate = 149,211 /s
   Phased:   3.415 seconds : Triples = 1,000,312 : Rate = 292,917 /s
   Parallel: 2.720 seconds : Triples = 1,000,312 : Rate = 367,762 /s
   
   ByteBuffer faster than ByteBuffer+RecordBuffer
   
   Comparing existing and byte buffer changes:
   Basic faster
   Phased faster
   Parallel unaffected
   
   ------------------------
   
   5m
   main:
   Basic:    39.224 seconds : Triples = 5,000,599 : Rate = 127,488 /s
   Phased:   19.032 seconds : Triples = 5,000,599 : Rate = 262,747 /s
   Parallel: 13.148 seconds : Triples = 5,000,599 : Rate = 380,332 /s
   
   ByteBuffer:
   Basic:    33.248 seconds : Triples = 5,000,599 : Rate = 150,403 /s
   Phased:   16.070 seconds : Triples = 5,000,599 : Rate = 311,176 /s
   Parallel: 13.233 seconds : Triples = 5,000,599 : Rate = 377,889 /s
   
   ByteBuffer and Record Buffer:
   Basic:    34.614 seconds : Triples = 5,000,599 : Rate = 144,468 /s
   Phased:   16.635 seconds : Triples = 5,000,599 : Rate = 300,607 /s
   Parallel: 13.307 seconds : Triples = 5,000,599 : Rate = 375,787 /s
   
   ByteBuffer+RecordBuffer slower than just ByteBuffer
   
   Comparing existing and byte buffer changes:
   Basic faster
   Phased faster
   Parallel slightly slower
   
   ------------------------
   
   25m
   main:
   Basic:    141.306 seconds : Triples = 24,997,044 : Rate = 176,900 /s
   Phased:    75.321 seconds : Triples = 24,997,044 : Rate = 331,874 /s
   Parallel:  63.707 seconds : Triples = 24,997,044 : Rate = 392,375 /s
   
   ByteBuffer:
   Basic:    139.969 seconds : Triples = 24,997,044 : Rate = 178,590 /s
   Phased:    75.875 seconds : Triples = 24,997,044 : Rate = 329,450 /s
   Parallel:  64.162 seconds : Triples = 24,997,044 : Rate = 389,593 /s
   
   ByteBuffer and record buffer:
   Basic:    150.354 seconds : Triples = 24,997,044 : Rate = 166,255 /s
   Phased:    79.437 seconds : Triples = 24,997,044 : Rate = 314,678 /s
   Parallel:  65.110 seconds : Triples = 24,997,044 : Rate = 383,920 /s
   
   ByteBuffer+RecordBuffer slowest (could be GC related)
   
   Comparing existing and byte buffer changes:
   Basic faster
   Phased about the same
   Parallel slightly slower
   
   ------------------------
   
   50m
   main:
   Basic:    428.839 seconds : Triples = 50,005,630 : Rate = 116,607 /s
   Phased:   194.982 seconds : Triples = 50,005,630 : Rate = 256,463 /s
   Parallel: 132.348 seconds : Triples = 50,005,630 : Rate = 377,834 /s
   
   ByteBuffer:
   Basic:    357.125 seconds : Triples = 50,005,630 : Rate = 140,023 /s
   Phased:   164.474 seconds : Triples = 50,005,630 : Rate = 304,034 /s
   Parallel: 129.619 seconds : Triples = 50,005,630 : Rate = 385,789 /s
   
   ByteBuffer and record buffer:
   Basic:    379.890 seconds : Triples = 50,005,630 : Rate = 131,632 /s
   Phased:   171.425 seconds : Triples = 50,005,630 : Rate = 291,706 /s
   Parallel: 132.076 seconds : Triples = 50,005,630 : Rate = 378,613 /s
   
   ByteBuffer+RecordBuffer slower than just ByteBuffer
   
   Comparing existing and byte buffer changes:
   Basic faster
   Phased faster
   Parallel faster
   
   ------------------------
   
   100m:
   
   main:
   Basic:     875.759 seconds : Triples = 100,000,748 : Rate = 114,188 /s
   Phased:    390.673 seconds : Triples = 100,000,748 : Rate = 255,970 /s
   Parallel:  268.516 seconds : Triples = 100,000,748 : Rate = 372,420 /s
   
   ByteBuffer:
   Basic:     729.727 seconds : Triples = 100,000,748 : Rate = 137,039 /s
   Phased:    334.163 seconds : Triples = 100,000,748 : Rate = 299,257 /s
   Parallel:  257.353 seconds : Triples = 100,000,748 : Rate = 388,574 /s
   
   ByteBuffer and Record Buffer:
   Basic:     766.970 seconds : Triples = 100,000,748 : Rate = 130,384 /s
   Phased:    345.600 seconds : Triples = 100,000,748 : Rate = 289,354 /s
   Parallel:  258.614 seconds : Triples = 100,000,748 : Rate = 386,680 /s
   
   Record buffer slower than byte buffer
   
   Basic faster
   Phased faster
   Parallel slightly faster
   ```
   
   </details>
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to