> There is a pretty significant degradation in AddFixed() which may be 
concerning to the Go team

What is the benchmark for this?
I am usually suspicious of sub-nanosecond benchmark times. Generally that 
indicates that the benchmark completely optimized away and all you are 
measuring is an empty loop.
Hard to know for sure without looking at the generated code for 
BenchmarkAddFixed.

On Thursday, April 25, 2024 at 10:54:42 AM UTC-7 Robert Engels wrote:

> There is a pretty significant degradation in AddFixed() which may be 
> concerning to the Go team, because the code 
> <https://github.com/robaho/fixed/blob/158d835fa7fc6facd3194b8de6ba7efa2580579d/fixed.go#L172>
>  of 
> AddFixed is simply:
>
> // Add adds f0 to f producing a Fixed. If either operand is NaN, NaN is 
> returned
> func (f Fixed) Add(f0 Fixed) Fixed {
>     if f.IsNaN() || f0.IsNaN() {
>         return NaN
>     }
>     return Fixed{fp: f.fp + f0.fp}
> }
>
> Here is the combined output:
>
>                  │ go1.12.17.txt │             go1.21.5.txt             │     
>         go1.22.2.txt             │                                            
>                                                                               
>                    
>                  │    sec/op     │    sec/op      vs base               │    
> sec/op      vs base               │                                           
>                                                                               
>                     
> AddFixed-8         0.6000n ±  2%   0.9593n ±  1%  +59.89% (p=0.002 n=6)   
> 0.8012n ± 12%  +33.53% (p=0.002 n=6)                                          
>                                                                               
>                        
> AddDecimal-8       246.00n ±  1%    66.47n ± 14%  -72.98% (p=0.002 n=6)    
> 66.23n ±  1%  -73.08% (p=0.002 n=6)                                           
>                                                                               
>                       
> AddBigInt-8        14.400n ±  1%    9.560n ±  2%  -33.61% (p=0.002 n=6)    
> 9.525n ±  7%  -33.85% (p=0.002 n=6)                                           
>                                                                               
>                       
> AddBigFloat-8       79.90n ±  3%    63.09n ±  0%  -21.03% (p=0.002 n=6)    
> 66.20n ±  1%  -17.15% (p=0.002 n=6)                                           
>                                                                               
>                       
> MulFixed-8          4.950n ±  3%    3.512n ±  0%  -29.04% (p=0.002 n=6)    
> 3.809n ±  2%  -23.06% (p=0.002 n=6)                                           
>                                                                               
>                       
> MulDecimal-8        73.45n ±  3%    65.90n ±  0%  -10.29% (p=0.002 n=6)    
> 67.20n ±  1%   -8.52% (p=0.002 n=6)                                           
>                                                                               
>                       
> MulBigInt-8         17.45n ±  1%    10.38n ±  2%  -40.52% (p=0.002 n=6)    
> 10.43n ±  1%  -40.23% (p=0.002 n=6)                                           
>                                                                               
>                       
> MulBigFloat-8       36.00n ±  2%    23.85n ±  1%  -33.75% (p=0.002 n=6)    
> 24.00n ±  1%  -33.35% (p=0.002 n=6)                                           
>                                                                               
>                       
> DivFixed-8          4.700n ±  1%    3.689n ±  1%  -21.51% (p=0.002 n=6)    
> 3.695n ±  2%  -21.39% (p=0.002 n=6)                                           
>                                                                               
>                       
> DivDecimal-8        767.0n ± 11%    462.9n ±  0%  -39.65% (p=0.002 n=6)    
> 470.4n ±  4%  -38.68% (p=0.002 n=6)                                           
>                                                                               
>                       
> DivBigInt-8         45.25n ±  1%    34.68n ± 10%  -23.36% (p=0.002 n=6)    
> 34.98n ±  1%  -22.70% (p=0.002 n=6)                                           
>                                                                               
>                       
> DivBigFloat-8       108.0n ±  1%    110.8n ±  0%   +2.64% (p=0.002 n=6)    
> 113.6n ±  0%   +5.19% (p=0.002 n=6)                                           
>                                                                               
>                       
> CmpFixed-8         0.3800n ±  3%   0.2500n ±  1%  -34.22% (p=0.002 n=6)   
> 0.2511n ±  1%  -33.92% (p=0.002 n=6)                                          
>                                                                               
>                        
> CmpDecimal-8        7.925n ±  1%    6.942n ±  1%  -12.40% (p=0.002 n=6)    
> 6.503n ±  1%  -17.94% (p=0.002 n=6)                                           
>                                                                               
>                       
> CmpBigInt-8         5.800n ±  0%    4.795n ±  2%  -17.32% (p=0.002 n=6)    
> 4.807n ±  1%  -17.12% (p=0.002 n=6)                                           
>                                                                               
>                       
> CmpBigFloat-8       5.310n ±  2%    4.417n ±  1%  -16.83% (p=0.002 n=6)    
> 4.475n ±  9%  -15.73% (p=0.002 n=6)                                           
>                                                                               
>                       
> StringFixed-8       57.10n ±  9%    50.40n ±  1%  -11.73% (p=0.002 n=6)    
> 50.70n ±  1%  -11.22% (p=0.002 n=6)                                           
>                                                                               
>                       
> StringNFixed-8      55.60n ±  0%    51.41n ± 15%        ~ (p=0.061 n=6)    
> 49.78n ±  1%  -10.48% (p=0.002 n=6)                                           
>                                                                               
>                       
> StringDecimal-8     216.0n ±  2%    215.2n ± 21%        ~ (p=1.000 n=6)    
> 197.2n ±  0%   -8.68% (p=0.002 n=6)                                           
>                                                                               
>                       
> StringBigInt-8     121.00n ±  1%    98.81n ±  1%  -18.33% (p=0.002 n=6)    
> 98.61n ±  4%  -18.50% (p=0.002 n=6)                                           
>                                                                               
>                       
> StringBigFloat-8    413.0n ±  3%    387.6n ±  1%   -6.15% (p=0.002 n=6)    
> 408.4n ±  2%   -1.10% (p=0.026 n=6)                                           
>                                                                               
>                       
> WriteTo-8           37.15n ± 15%    26.14n ± 45%  -29.65% (p=0.041 n=6)    
> 26.40n ± 40%  -28.94% (p=0.015 n=6)                                           
>                                                                               
>                       
> geomean             28.20n          21.86n        -22.49%                  
> 21.79n        -22.76%                                                         
>                                                                               
>                       
>                                                                               
>                                                                               
>                                                                               
>                                     │ go1.12.17.txt  │             
> go1.21.5.txt             │             go1.22.2.txt             │             
>                                                                               
>                                                  
>                  │      B/op      │    B/op      vs base                 │    
> B/op      vs base                 │                                           
>                                                                               
>                    
> AddFixed-8          0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> AddDecimal-8       176.00 ±  0%     80.00 ±  0%  -54.55% (p=0.002 n=6)     
> 80.00 ±  0%  -54.55% (p=0.002 n=6)                                            
>                                                                               
>                       
> AddBigInt-8         0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> AddBigFloat-8       48.00 ±  0%     48.00 ±  0%        ~ (p=1.000 n=6) ¹   
> 48.00 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> MulFixed-8          0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> MulDecimal-8        80.00 ±  0%     80.00 ±  0%        ~ (p=1.000 n=6) ¹   
> 80.00 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> MulBigInt-8         0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> MulBigFloat-8       0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> DivFixed-8          0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> DivDecimal-8        568.0 ±  0%     384.0 ±  0%  -32.39% (p=0.002 n=6)     
> 384.0 ±  0%  -32.39% (p=0.002 n=6)                                            
>                                                                               
>                       
> DivBigInt-8         8.000 ±  0%     8.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 8.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> DivBigFloat-8       24.00 ±  0%     24.00 ±  0%        ~ (p=1.000 n=6) ¹   
> 24.00 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> CmpFixed-8          0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> CmpDecimal-8        0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> CmpBigInt-8         0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> CmpBigFloat-8       0.000 ±  0%     0.000 ±  0%        ~ (p=1.000 n=6) ¹   
> 0.000 ±  0%        ~ (p=1.000 n=6) ¹                                          
>                                                                               
>                       
> StringFixed-8       32.00 ±  0%     24.00 ±  0%  -25.00% (p=0.002 n=6)     
> 24.00 ±  0%  -25.00% (p=0.002 n=6)                                            
>                                                                               
>                       
> StringNFixed-8      32.00 ±  0%     24.00 ±  0%  -25.00% (p=0.002 n=6)     
> 24.00 ±  0%  -25.00% (p=0.002 n=6)                                            
>                                                                               
>                       
> StringDecimal-8     64.00 ±  0%     56.00 ±  0%  -12.50% (p=0.002 n=6)     
> 56.00 ±  0%  -12.50% (p=0.002 n=6)                                            
>                                                                               
>                       
> StringBigInt-8      24.00 ±  0%     16.00 ±  0%  -33.33% (p=0.002 n=6)     
> 16.00 ±  0%  -33.33% (p=0.002 n=6)                                            
>                                                                               
>                       
> StringBigFloat-8    192.0 ±  0%     176.0 ±  0%   -8.33% (p=0.002 n=6)     
> 176.0 ±  0%   -8.33% (p=0.002 n=6)                                            
>                                                                               
>                       
> WriteTo-8           21.00 ± 14%     23.00 ± 13%   +9.52% (p=0.002 n=6)     
> 23.00 ± 13%   +9.52% (p=0.002 n=6)                                            
>                                                                               
>                       
> geomean                         ²                 -9.89%               ²      
>            -9.89%               ²                                             
>                                                                               
>                    
> ¹ all samples are equal                                                       
>                                                                               
>                                                                               
>                    
> ² summaries must be >0 to compute geomean                                     
>                                                                               
>                                                                               
>                    
>                                                                               
>                                                                               
>                                                                               
>                                     │ go1.12.17.txt │            go1.21.5.txt 
>             │            go1.22.2.txt             │                           
>                                                                               
>                                       
>                  │   allocs/op   │ allocs/op   vs base                 │ 
> allocs/op   vs base                 │                                         
>                                                                               
>                         
> AddFixed-8          0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> AddDecimal-8        8.000 ± 0%     2.000 ± 0%  -75.00% (p=0.002 n=6)     
> 2.000 ± 0%  -75.00% (p=0.002 n=6)                                             
>                                                                               
>                         
> AddBigInt-8         0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> AddBigFloat-8       1.000 ± 0%     1.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 1.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> MulFixed-8          0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> MulDecimal-8        2.000 ± 0%     2.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 2.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> MulBigInt-8         0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> MulBigFloat-8       0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> DivFixed-8          0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> DivDecimal-8        21.00 ± 0%     12.00 ± 0%  -42.86% (p=0.002 n=6)     
> 12.00 ± 0%  -42.86% (p=0.002 n=6)                                             
>                                                                               
>                         
> DivBigInt-8         1.000 ± 0%     1.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 1.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> DivBigFloat-8       2.000 ± 0%     2.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 2.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> CmpFixed-8          0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> CmpDecimal-8        0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> CmpBigInt-8         0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> CmpBigFloat-8       0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> StringFixed-8       1.000 ± 0%     1.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 1.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> StringNFixed-8      1.000 ± 0%     1.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 1.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> StringDecimal-8     5.000 ± 0%     4.000 ± 0%  -20.00% (p=0.002 n=6)     
> 4.000 ± 0%  -20.00% (p=0.002 n=6)                                             
>                                                                               
>                         
> StringBigInt-8      2.000 ± 0%     1.000 ± 0%  -50.00% (p=0.002 n=6)     
> 1.000 ± 0%  -50.00% (p=0.002 n=6)                                             
>                                                                               
>                         
> StringBigFloat-8    8.000 ± 0%     7.000 ± 0%  -12.50% (p=0.002 n=6)     
> 7.000 ± 0%  -12.50% (p=0.002 n=6)                                             
>                                                                               
>                         
> WriteTo-8           0.000 ± 0%     0.000 ± 0%        ~ (p=1.000 n=6) ¹   
> 0.000 ± 0%        ~ (p=1.000 n=6) ¹                                           
>                                                                               
>                         
> geomean                        ²               -12.73%               ²        
>        -12.73%               ²                                                
>                                                                               
>                    
> ¹ all samples are equal                                                       
>                                                                               
>                                                                               
>                    
> ² summaries must be >0 to compute geomean  
>
>
> On Apr 25, 2024, at 12:25 PM, Robert Engels <rob...@me.com> wrote:
>
> Thanks. I noticed those but didn’t look into how to address. Appreciate 
> it. I will rerun.
>
> On Apr 25, 2024, at 12:23 PM, Steven Hartland <stevenm...@gmail.com> 
> wrote:
>
> Thanks for these, not sure if you noticed the notes from each run e.g. need 
> >= 4 samples to detect a difference at alpha level 0.05.
>
> Basically run the benchmark with a -count=6 or more and then run the tool, 
> and you get a the comparison values which are typically the interesting bit
>
> On Thu, 25 Apr 2024 at 00:29, Robert Engels <rob...@me.com> wrote:
>
>>                  │ /Users/robertengels/go1.21.5.txt │   
>> /Users/robertengels/go1.22.2.txt    │                                        
>>                                                                              
>>                                                              
>>                  │              sec/op              │    sec/op      vs base 
>>                │                                                             
>>                                                                              
>>                                         
>> AddFixed-8                            0.9603n ± ∞ ¹   0.7931n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> AddDecimal-8                           66.41n ± ∞ ¹    66.27n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> AddBigInt-8                            9.452n ± ∞ ¹   10.650n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> AddBigFloat-8                          63.26n ± ∞ ¹    66.33n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> MulFixed-8                             3.519n ± ∞ ¹    3.939n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> MulDecimal-8                           65.98n ± ∞ ¹    67.07n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> MulBigInt-8                            10.69n ± ∞ ¹    10.49n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> MulBigFloat-8                          23.72n ± ∞ ¹    24.12n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> DivFixed-8                             3.675n ± ∞ ¹    3.661n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> DivDecimal-8                           460.8n ± ∞ ¹    469.6n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> DivBigInt-8                            34.82n ± ∞ ¹    34.90n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> DivBigFloat-8                          110.4n ± ∞ ¹    113.6n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> CmpFixed-8                            0.2529n ± ∞ ¹   0.2784n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> CmpDecimal-8                           6.883n ± ∞ ¹    6.475n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> CmpBigInt-8                            4.779n ± ∞ ¹    4.805n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> CmpBigFloat-8                          4.411n ± ∞ ¹    5.081n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> StringFixed-8                          50.36n ± ∞ ¹    50.64n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> StringNFixed-8                         53.41n ± ∞ ¹    49.66n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> StringDecimal-8                        197.6n ± ∞ ¹    197.0n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> StringBigInt-8                         98.17n ± ∞ ¹    98.00n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> StringBigFloat-8                       386.2n ± ∞ ¹    395.2n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> WriteTo-8                              31.82n ± ∞ ¹    31.71n ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                          
>> geomean                                22.01n          22.28n        +1.26%  
>>                                                                              
>>                                                                              
>>                                         
>> ¹ need >= 6 samples for confidence interval at level 0.95                    
>>                                                                              
>>                                                                              
>>                                         
>> ² need >= 4 samples to detect a difference at alpha level 0.05               
>>                                                                              
>>                                                                              
>>                                         
>>                                                                              
>>                                                                              
>>                                                                              
>>                                                          │ 
>> /Users/robertengels/go1.21.5.txt │  /Users/robertengels/go1.22.2.txt   │     
>>                                                                              
>>                                                                              
>>                      
>>                  │               B/op               │    B/op      vs base   
>>              │                                                               
>>                                                                              
>>                                         
>> AddFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> AddDecimal-8                            80.00 ± ∞ ¹   80.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> AddBigInt-8                             0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> AddBigFloat-8                           48.00 ± ∞ ¹   48.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulDecimal-8                            80.00 ± ∞ ¹   80.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulBigInt-8                             0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulBigFloat-8                           0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivDecimal-8                            384.0 ± ∞ ¹   384.0 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivBigInt-8                             8.000 ± ∞ ¹   8.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivBigFloat-8                           24.00 ± ∞ ¹   24.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpDecimal-8                            0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpBigInt-8                             0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpBigFloat-8                           0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringFixed-8                           24.00 ± ∞ ¹   24.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringNFixed-8                          24.00 ± ∞ ¹   24.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringDecimal-8                         56.00 ± ∞ ¹   56.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringBigInt-8                          16.00 ± ∞ ¹   16.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringBigFloat-8                        176.0 ± ∞ ¹   176.0 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> WriteTo-8                               29.00 ± ∞ ¹   28.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ³                                                              
>>                                                                              
>>                                            
>> geomean                                           ⁴                -0.16%    
>>            ⁴                                                                 
>>                                                                              
>>                                         
>> ¹ need >= 6 samples for confidence interval at level 0.95                    
>>                                                                              
>>                                                                              
>>                                         
>> ² all samples are equal                                                      
>>                                                                              
>>                                                                              
>>                                         
>> ³ need >= 4 samples to detect a difference at alpha level 0.05               
>>                                                                              
>>                                                                              
>>                                         
>> ⁴ summaries must be >0 to compute geomean                                    
>>                                                                              
>>                                                                              
>>                                         
>>                                                                              
>>                                                                              
>>                                                                              
>>                                                          │ 
>> /Users/robertengels/go1.21.5.txt │  /Users/robertengels/go1.22.2.txt   │     
>>                                                                              
>>                                                                              
>>                      
>>                  │            allocs/op             │  allocs/op   vs base   
>>              │                                                               
>>                                                                              
>>                                         
>> AddFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> AddDecimal-8                            2.000 ± ∞ ¹   2.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> AddBigInt-8                             0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> AddBigFloat-8                           1.000 ± ∞ ¹   1.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulDecimal-8                            2.000 ± ∞ ¹   2.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulBigInt-8                             0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> MulBigFloat-8                           0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivDecimal-8                            12.00 ± ∞ ¹   12.00 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivBigInt-8                             1.000 ± ∞ ¹   1.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> DivBigFloat-8                           2.000 ± ∞ ¹   2.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpFixed-8                              0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpDecimal-8                            0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpBigInt-8                             0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> CmpBigFloat-8                           0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringFixed-8                           1.000 ± ∞ ¹   1.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringNFixed-8                          1.000 ± ∞ ¹   1.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringDecimal-8                         4.000 ± ∞ ¹   4.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringBigInt-8                          1.000 ± ∞ ¹   1.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> StringBigFloat-8                        7.000 ± ∞ ¹   7.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> WriteTo-8                               0.000 ± ∞ ¹   0.000 ± ∞ ¹       ~ 
>> (p=1.000 n=1) ²                                                              
>>                                                                              
>>                                            
>> geomean                                           ³                +0.00%    
>>            ³  
>>
>>
>> On Apr 24, 2024, at 6:20 PM, Steven Hartland <stevenm...@gmail.com> 
>> wrote:
>>
>> What’s it look like when your run it through 
>> https://pkg.go.dev/golang.org/x/perf/cmd/benchstat which will provide a 
>> nice side by side comparison?
>>
>> On Wed, 24 Apr 2024 at 19:26, 'Robert Engels' via golang-nuts <
>> golan...@googlegroups.com> wrote:
>>
>>> I have a fairly stable project github.com/robaho/fixed which is almost 
>>> 100% cpu bound. It doesn’t change so it makes a great way to compare the 
>>> performance of different Go versions using the same hardware. I took the 
>>> time to re-run the tests today.
>>>
>>> Using 1.21.17:
>>>
>>> BenchmarkAddFixed-8             2000000000               0.59 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkAddDecimal-8            5000000               243 ns/op            
>>>  176 B/op          8 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkAddBigInt-8            100000000               14.3 ns/op          
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkAddBigFloat-8          20000000                78.8 ns/op          
>>>   48 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulFixed-8             300000000                4.88 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulDecimal-8           20000000                72.0 ns/op          
>>>   80 B/op          2 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulBigInt-8            100000000               17.1 ns/op          
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulBigFloat-8          30000000                35.5 ns/op          
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivFixed-8             300000000                4.71 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivDecimal-8            2000000               779 ns/op            
>>>  568 B/op         21 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivBigInt-8            30000000                46.1 ns/op          
>>>    8 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivBigFloat-8          20000000               108 ns/op            
>>>   24 B/op          2 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpFixed-8             2000000000               0.38 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpDecimal-8           200000000                8.05 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpBigInt-8            300000000                5.87 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpBigFloat-8          300000000                5.46 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringFixed-8          20000000                57.4 ns/op          
>>>   32 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringNFixed-8         20000000                55.6 ns/op          
>>>   32 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringDecimal-8        10000000               218 ns/op            
>>>   64 B/op          5 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringBigInt-8         10000000               122 ns/op            
>>>   24 B/op          2 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringBigFloat-8        3000000               416 ns/op            
>>>  192 B/op          8 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkWriteTo-8              30000000                45.8 ns/op          
>>>   18 B/op          0 allocs/op
>>>
>>>
>>> and version 1.21.5:
>>>
>>> BenchmarkAddFixed-8             1000000000               0.9735 ns/op       
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkAddDecimal-8           14311995                69.99 ns/op         
>>>   80 B/op          2 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkAddBigInt-8            100000000               13.42 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkAddBigFloat-8          17506702                63.84 ns/op         
>>>   48 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulFixed-8             313983104                3.732 ns/op        
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulDecimal-8           18046520                66.59 ns/op         
>>>   80 B/op          2 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulBigInt-8            100000000               10.79 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkMulBigFloat-8          49186024                24.30 ns/op         
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivFixed-8             306888069                3.721 ns/op        
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivDecimal-8            2510688               462.4 ns/op          
>>>  384 B/op         12 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivBigInt-8            33993822                37.02 ns/op         
>>>    8 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkDivBigFloat-8           9415330               111.5 ns/op          
>>>   24 B/op          2 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpFixed-8             1000000000               0.2548 ns/op       
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpDecimal-8           168714549                7.086 ns/op        
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpBigInt-8            234895634                4.952 ns/op        
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkCmpBigFloat-8          260814464                4.503 ns/op        
>>>    0 B/op          0 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringFixed-8          23725470                50.57 ns/op         
>>>   24 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringNFixed-8         23666628                50.67 ns/op         
>>>   24 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringDecimal-8         5665790               200.1 ns/op          
>>>   56 B/op          4 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringBigInt-8         10596398               100.2 ns/op          
>>>   16 B/op          1 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkStringBigFloat-8        2922332               391.2 ns/op          
>>>  176 B/op          7 allocs/op                                              
>>>                                                                             
>>>                                                                             
>>>      
>>> BenchmarkWriteTo-8              45734523                31.53 ns/op         
>>>   23 B/op          0 allocs/op
>>>
>>> which is pretty impressive across the board.
>>>
>>> Only 2 tests show any degradation and most show significant improvement.
>>>
>>> On the two that degrade, AddFixed is a fairly trivial add of 2 longs, so 
>>> that is surprising. Strangely, WriteTo shows a different number of B/op on 
>>> different runs (all of the other tests are stable).
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/A6412E4C-03BD-477B-A725-06510DDD618A%40me.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/A6412E4C-03BD-477B-A725-06510DDD618A%40me.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/834a058c-83de-4fef-8d40-adb4e709d03cn%40googlegroups.com.

Reply via email to