Ostrzyciel commented on PR #2906:
URL: https://github.com/apache/jena/pull/2906#issuecomment-2559649975

   I did a quick JMH test to see if this makes anything faster (note: making 
datatype parsing/validation was **not** a goal of this PR, if anything is 
faster, it's just a happy accident). 
   
   Benchmark code:
   
   <details>
   
       package org.apache.jena.datatypes;
       
       import org.apache.jena.datatypes.xsd.XSDDatatype;
       import org.apache.jena.mem.graph.helper.JMHDefaultOptions;
       import org.junit.Assert;
       import org.junit.Test;
       import org.openjdk.jmh.annotations.*;
       import org.openjdk.jmh.infra.BenchmarkParams;
       import org.openjdk.jmh.infra.Blackhole;
       import org.openjdk.jmh.runner.Runner;
       
       import java.util.concurrent.TimeUnit;
       
       @State(Scope.Benchmark)
       public class TestDatatypeLiteralParse {
       
           @Param({
                   "string",
                   "1",
                   "-340415",
                   "0.00003",
                   "PT7M",
                   "pl-PL",
                   "2021-07-01T12:00:00Z",
           })
           public String param0_LiteralValue;
       
           private XSDDatatype datatype;
       
           @Setup(Level.Trial)
           public void setup(BenchmarkParams params) {
               switch (param0_LiteralValue) {
                   case "string":
                       datatype = XSDDatatype.XSDstring;
                       break;
                   case "1":
                       datatype = XSDDatatype.XSDshort;
                       break;
                   case "-340415":
                       datatype = XSDDatatype.XSDinteger;
                       break;
                   case "0.00003":
                       datatype = XSDDatatype.XSDdecimal;
                       break;
                   case "PT7M":
                       datatype = XSDDatatype.XSDduration;
                       break;
                   case "pl-PL":
                       datatype = XSDDatatype.XSDlanguage;
                       break;
                   case "2021-07-01T12:00:00Z":
                       datatype = XSDDatatype.XSDdateTime;
                       break;
               }
           }
       
           @Benchmark
           @OperationsPerInvocation(40_000_000)
           public void parse(Blackhole bh) {
               for (int i = 0; i < 40_000_000; i++)
                   bh.consume(datatype.parse(param0_LiteralValue));
           }
       
           @Test
           public void benchmark() throws Exception {
               var opt = JMHDefaultOptions.getDefaults(this.getClass())
                       .timeUnit(TimeUnit.NANOSECONDS)
                       .warmupIterations(4)
                       .measurementIterations(4)
                       .build();
               var results = new Runner(opt).run();
               Assert.assertNotNull(results);
           }
       }
   </details>
   
   ```
   # JMH version: 1.37
   # VM version: JDK 17.0.13-ea, OpenJDK 64-Bit Server VM, 17.0.13-ea+6-Debian-1
   ```
   
   Code from this PR:
   
   ```
   Benchmark                       (param0_LiteralValue)  Mode  Cnt   Score   
Error  Units
   TestDatatypeLiteralParse.parse                 string  avgt    4   4.688 ± 
0.107  ns/op
   TestDatatypeLiteralParse.parse                      1  avgt    4  13.556 ± 
0.836  ns/op
   TestDatatypeLiteralParse.parse                -340415  avgt    4  25.364 ± 
0.111  ns/op
   TestDatatypeLiteralParse.parse                0.00003  avgt    4  35.203 ± 
0.335  ns/op
   TestDatatypeLiteralParse.parse                   PT7M  avgt    4  16.747 ± 
0.489  ns/op
   TestDatatypeLiteralParse.parse                  pl-PL  avgt    4  98.848 ± 
1.930  ns/op
   TestDatatypeLiteralParse.parse   2021-07-01T12:00:00Z  avgt    4  65.588 ± 
2.347  ns/op
   ```
   
   Baseline (main 308b6e27):
   
   ```
   Benchmark                       (param0_LiteralValue)  Mode  Cnt    Score   
Error  Units
   TestDatatypeLiteralParse.parse                 string  avgt    4    5.695 ± 
0.078  ns/op
   TestDatatypeLiteralParse.parse                      1  avgt    4   16.568 ± 
0.222  ns/op
   TestDatatypeLiteralParse.parse                -340415  avgt    4   26.902 ± 
3.533  ns/op
   TestDatatypeLiteralParse.parse                0.00003  avgt    4   35.531 ± 
4.531  ns/op
   TestDatatypeLiteralParse.parse                   PT7M  avgt    4   17.719 ± 
0.265  ns/op
   TestDatatypeLiteralParse.parse                  pl-PL  avgt    4  108.381 ± 
4.348  ns/op
   TestDatatypeLiteralParse.parse   2021-07-01T12:00:00Z  avgt    4   64.280 ± 
0.884  ns/op
   ```
   
   So the difference is marginal at best... but still something.


-- 
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