[ 
https://issues.apache.org/jira/browse/IGNITE-24038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17949238#comment-17949238
 ] 

Ivan Bessonov edited comment on IGNITE-24038 at 5/4/25 6:45 AM:
----------------------------------------------------------------

I decided not to implement string introspection optimizations this time, so 
that results are cleaner and the code is less controversial. Results are best 
visible on shorter strings (less fluctuations) and large number of fields.

Before:
{code:java}
Benchmark                                                              
(character)  (dataSize)  (fieldsCount)             (type)  Mode  Cnt   Score    
Error  Units
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250              2  PREDEFINED_STRING  avgt   20   0.464 ±  0.033  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250             10  PREDEFINED_STRING  avgt   20   1.278 ±  0.113  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250            100  PREDEFINED_STRING  avgt   20  13.292 ±  0.445  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000              2  PREDEFINED_STRING  avgt   20  14.046 ±  0.758  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000             10  PREDEFINED_STRING  avgt   20  13.887 ±  0.730  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000            100  PREDEFINED_STRING  avgt   20  25.318 ±  1.105  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000              2  PREDEFINED_STRING  avgt   20  14.998 ±  0.657  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000             10  PREDEFINED_STRING  avgt   20  14.697 ±  0.723  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000            100  PREDEFINED_STRING  avgt   20  25.915 ±  0.363  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250              2  PREDEFINED_STRING  avgt   20   0.668 ±  0.047  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250             10  PREDEFINED_STRING  avgt   20   1.646 ±  0.070  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250            100  PREDEFINED_STRING  avgt   20  13.829 ±  0.822  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000              2  PREDEFINED_STRING  avgt   20  49.791 ±  4.246  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000             10  PREDEFINED_STRING  avgt   20  50.413 ±  2.606  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000            100  PREDEFINED_STRING  avgt   20  54.271 ±  5.362  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000              2  PREDEFINED_STRING  avgt   20  77.892 ± 10.471  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000             10  PREDEFINED_STRING  avgt   20  49.009 ±  4.117  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000            100  PREDEFINED_STRING  avgt   20  56.731 ±  5.773  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250              2  PREDEFINED_STRING  avgt   20   0.773 ±  0.033  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250             10  PREDEFINED_STRING  avgt   20   1.678 ±  0.047  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250            100  PREDEFINED_STRING  avgt   20  10.377 ±  1.100  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000              2  PREDEFINED_STRING  avgt   20  73.660 ±  6.169  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000             10  PREDEFINED_STRING  avgt   20  67.226 ±  5.832  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000            100  PREDEFINED_STRING  avgt   20  78.844 ±  8.444  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000              2  PREDEFINED_STRING  avgt   20  77.861 ±  5.158  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000             10  PREDEFINED_STRING  avgt   20  74.630 ±  2.464  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000            100  PREDEFINED_STRING  avgt   20  79.689 ±  6.930  
us/op {code}
After:
{code:java}
Benchmark                                                              
(character)  (dataSize)  (fieldsCount)             (type)  Mode  Cnt   Score   
Error  Units
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250              2  PREDEFINED_STRING  avgt   20   0.466 ± 0.022  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250             10  PREDEFINED_STRING  avgt   20   1.308 ± 0.075  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250            100  PREDEFINED_STRING  avgt   20  12.809 ± 0.103  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000              2  PREDEFINED_STRING  avgt   20  14.582 ± 0.589  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000             10  PREDEFINED_STRING  avgt   20  14.574 ± 0.539  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000            100  PREDEFINED_STRING  avgt   20  24.999 ± 1.247  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000              2  PREDEFINED_STRING  avgt   20  14.641 ± 0.849  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000             10  PREDEFINED_STRING  avgt   20  14.916 ± 0.953  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000            100  PREDEFINED_STRING  avgt   20  24.170 ± 2.396  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250              2  PREDEFINED_STRING  avgt   20   0.643 ± 0.028  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250             10  PREDEFINED_STRING  avgt   20   1.554 ± 0.093  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250            100  PREDEFINED_STRING  avgt   20  13.936 ± 0.504  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000              2  PREDEFINED_STRING  avgt   20  54.746 ± 2.978  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000             10  PREDEFINED_STRING  avgt   20  51.837 ± 3.074  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000            100  PREDEFINED_STRING  avgt   20  58.439 ± 4.121  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000              2  PREDEFINED_STRING  avgt   20  57.267 ± 3.959  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000             10  PREDEFINED_STRING  avgt   20  74.319 ± 6.647  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000            100  PREDEFINED_STRING  avgt   20  59.012 ± 4.787  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250              2  PREDEFINED_STRING  avgt   20   0.708 ± 0.059  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250             10  PREDEFINED_STRING  avgt   20   1.563 ± 0.107  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250            100  PREDEFINED_STRING  avgt   20  11.057 ± 0.639  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000              2  PREDEFINED_STRING  avgt   20  74.944 ± 5.712  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000             10  PREDEFINED_STRING  avgt   20  65.757 ± 6.540  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000            100  PREDEFINED_STRING  avgt   20  83.319 ± 2.543  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000              2  PREDEFINED_STRING  avgt   20  80.154 ± 5.135  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000             10  PREDEFINED_STRING  avgt   20  65.881 ± 6.538  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000            100  PREDEFINED_STRING  avgt   20  83.470 ± 4.079  
us/op{code}


was (Author: ibessonov):
I decided not to implement string introspection optimizations this time, so 
that results are cleaner and the code is less controversial. Results are best 
visible on shorter strings (less fluctuations) and large number of fields.

Before:
{code:java}
Benchmark                                                              
(character)  (dataSize)  (fieldsCount)             (type)  Mode  Cnt   Score    
Error  Units
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250              2  PREDEFINED_STRING  avgt   20   0.464 ±  0.033  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250             10  PREDEFINED_STRING  avgt   20   1.278 ±  0.113  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250            100  PREDEFINED_STRING  avgt   20  13.292 ±  0.445  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000              2  PREDEFINED_STRING  avgt   20  14.046 ±  0.758  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000             10  PREDEFINED_STRING  avgt   20  13.887 ±  0.730  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000            100  PREDEFINED_STRING  avgt   20  25.318 ±  1.105  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000              2  PREDEFINED_STRING  avgt   20  14.998 ±  0.657  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000             10  PREDEFINED_STRING  avgt   20  14.697 ±  0.723  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000            100  PREDEFINED_STRING  avgt   20  25.915 ±  0.363  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250              2  PREDEFINED_STRING  avgt   20   0.668 ±  0.047  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250             10  PREDEFINED_STRING  avgt   20   1.646 ±  0.070  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250            100  PREDEFINED_STRING  avgt   20  13.829 ±  0.822  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000              2  PREDEFINED_STRING  avgt   20  49.791 ±  4.246  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000             10  PREDEFINED_STRING  avgt   20  50.413 ±  2.606  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000            100  PREDEFINED_STRING  avgt   20  54.271 ±  5.362  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000              2  PREDEFINED_STRING  avgt   20  77.892 ± 10.471  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000             10  PREDEFINED_STRING  avgt   20  49.009 ±  4.117  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000            100  PREDEFINED_STRING  avgt   20  56.731 ±  5.773  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250              2  PREDEFINED_STRING  avgt   20   0.773 ±  0.033  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250             10  PREDEFINED_STRING  avgt   20   1.678 ±  0.047  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250            100  PREDEFINED_STRING  avgt   20  10.377 ±  1.100  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000              2  PREDEFINED_STRING  avgt   20  73.660 ±  6.169  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000             10  PREDEFINED_STRING  avgt   20  67.226 ±  5.832  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000            100  PREDEFINED_STRING  avgt   20  78.844 ±  8.444  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000              2  PREDEFINED_STRING  avgt   20  77.861 ±  5.158  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000             10  PREDEFINED_STRING  avgt   20  74.630 ±  2.464  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000            100  PREDEFINED_STRING  avgt   20  79.689 ±  6.930  
us/op {code}
After:
{code:java}
Benchmark                                                              
(character)  (dataSize)  (fieldsCount)             (type)  Mode  Cnt   Score   
Error  Units
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250              2  PREDEFINED_STRING  avgt   20   0.433 ± 0.029  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250             10  PREDEFINED_STRING  avgt   20   1.261 ± 0.004  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a         250            100  PREDEFINED_STRING  avgt   20  11.384 ± 0.473  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000              2  PREDEFINED_STRING  avgt   20  14.465 ± 0.677  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000             10  PREDEFINED_STRING  avgt   20  14.076 ± 0.835  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       64000            100  PREDEFINED_STRING  avgt   20  22.665 ± 1.435  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000              2  PREDEFINED_STRING  avgt   20  14.263 ± 0.937  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000             10  PREDEFINED_STRING  avgt   20  14.680 ± 0.752  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 a       66000            100  PREDEFINED_STRING  avgt   20  23.411 ± 1.239  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250              2  PREDEFINED_STRING  avgt   20   0.646 ± 0.040  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250             10  PREDEFINED_STRING  avgt   20   1.438 ± 0.083  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж         250            100  PREDEFINED_STRING  avgt   20  12.309 ± 0.704  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000              2  PREDEFINED_STRING  avgt   20  75.921 ± 9.547  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000             10  PREDEFINED_STRING  avgt   20  54.723 ± 4.229  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       64000            100  PREDEFINED_STRING  avgt   20  55.887 ± 5.552  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000              2  PREDEFINED_STRING  avgt   20  60.102 ± 1.936  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000             10  PREDEFINED_STRING  avgt   20  52.014 ± 3.177  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 ж       66000            100  PREDEFINED_STRING  avgt   20  56.229 ± 4.465  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250              2  PREDEFINED_STRING  avgt   20   0.655 ± 0.059  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250             10  PREDEFINED_STRING  avgt   20   1.495 ± 0.063  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我         250            100  PREDEFINED_STRING  avgt   20  10.215 ± 0.575  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000              2  PREDEFINED_STRING  avgt   20  75.472 ± 4.778  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000             10  PREDEFINED_STRING  avgt   20  69.885 ± 2.873  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       64000            100  PREDEFINED_STRING  avgt   20  80.045 ± 5.762  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000              2  PREDEFINED_STRING  avgt   20  80.989 ± 4.208  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000             10  PREDEFINED_STRING  avgt   20  65.969 ± 6.302  
us/op
TupleMarshallerVarlenOnlyBenchmark.measureTupleBuildAndMarshallerCost           
 我       66000            100  PREDEFINED_STRING  avgt   20  75.856 ± 8.841  
us/op {code}

> Optimize marshaling according to TupleMarshallerVarlenOnlyBenchmark
> -------------------------------------------------------------------
>
>                 Key: IGNITE-24038
>                 URL: https://issues.apache.org/jira/browse/IGNITE-24038
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Ivan Bessonov
>            Assignee: Ivan Bessonov
>            Priority: Major
>              Labels: ignite-3
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> There are a few things that could be easily optimized:
>  * Some string manipulations in column names are obviously inefficient
>  * -Adding string to binary tuple always leads to array allocation, it might 
> be avoided-
>  * {{BinaryTupleSchema.createKeySchema}} is called for every tuple, but it's 
> always the same



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to