Skip to content

Latest commit

 

History

History
550 lines (426 loc) · 28.8 KB

README.md

File metadata and controls

550 lines (426 loc) · 28.8 KB

Benchmarks

Made with mitata library

Signing

HS512

HS512

clk: ~3.82 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                            avg (min … max) p75 / p99    (min … top 1%)
---------------------------------------------------- -------------------------------
HS512 - jose (sync)                     3.29 µs/iter   2.75 µs  █                   
                                 (2.54 µs … 2.61 ms)   6.08 µs  █                   
                             (512.00  b …   1.03 mb)   2.97 kb ▅█▃▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

HS512 - jsonwebtoken (sync)           215.65 µs/iter 217.63 µs   ▂█                 
                             (206.17 µs … 493.79 µs) 250.21 µs  ▄██▃█▃              
                             (  5.55 kb … 788.38 kb)   8.87 kb ▁██████▆▃▂▂▂▁▁▁▁▁▁▁▁▁

HS512 - jsonwebtoken (async)          212.88 µs/iter 212.75 µs    █                 
                             (204.54 µs … 338.88 µs) 245.46 µs    █                 
                             (  5.73 kb … 574.96 kb)   6.23 kb ▂▃██▆▄▂▂▁▂▂▂▁▁▁▁▁▁▁▁▁

HS512 - fast-jwt (sync)                 2.31 µs/iter   2.45 µs  █                   
                                 (2.19 µs … 2.47 µs)   2.47 µs  █▇                ▇▂
                             (  1.57 kb …   1.57 kb)   1.57 kb ▃███▁▁▁▁▁▁▁▁▁▁▁▁▁▂███

HS512 - fast-jwt (async)                3.93 µs/iter   3.93 µs  █                   
                                 (3.78 µs … 4.53 µs)   4.35 µs ▃█▃▃                 
                             (700.39  b …   3.52 kb)   1.36 kb ████▅▃▃▁▁▅▁▃▁▃▁▃▃▁▁▃▃

HS512 - @node-rs/jsonwebtoken (sync)    2.80 µs/iter   2.79 µs     █                
                               (2.62 µs … 123.29 µs)   3.29 µs   ▃ █▃               
                             (  1.33 kb …  97.41 kb)   1.38 kb ▁▃█▆██▄▃▁▅▅▂▁▁▁▁▁▁▁▁▁

HS512 - @node-rs/jsonwebtoken (async)  12.04 µs/iter  12.88 µs                █     
                               (8.13 µs … 127.04 µs)  14.46 µs          ▄▂   ▇█▂    
                             (  1.84 kb … 129.84 kb)   2.26 kb ▁▁▂▁▃▃▄▄▃██▄▇▆███▃▁▁▁

summary
  HS512 - fast-jwt (sync)
   1.21x faster than HS512 - @node-rs/jsonwebtoken (sync)
   1.42x faster than HS512 - jose (sync)
   1.7x faster than HS512 - fast-jwt (async)
   5.21x faster than HS512 - @node-rs/jsonwebtoken (async)
   92.19x faster than HS512 - jsonwebtoken (async)
   93.39x faster than HS512 - jsonwebtoken (sync)
ES512

ES512

clk: ~3.77 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                            avg (min … max) p75 / p99    (min … top 1%)
---------------------------------------------------- -------------------------------
ES512 - jose (sync)                     1.09 ms/iter   1.11 ms       █    ▂         
                                 (1.03 ms … 1.20 ms)   1.17 ms      ▃█▄▂▃▅█         
                             (  3.27 kb …   1.29 mb)   8.53 kb ▃▆█▇▇████████▄▄▂▂▃▁▂▁

ES512 - jsonwebtoken (sync)             1.37 ms/iter   1.39 ms     █▄       ▂▇      
                                 (1.34 ms … 1.55 ms)   1.41 ms    ▇███▇     ██▇     
                             (  6.05 kb …  55.27 kb)   7.75 kb ▁▁▅██████▆▄▄▆████▇▅▁▁

ES512 - jsonwebtoken (async)            1.38 ms/iter   1.39 ms        ▅   █▄        
                                 (1.30 ms … 1.48 ms)   1.46 ms        █▅  ██        
                             (  6.52 kb …   2.25 mb)  16.67 kb ▂▂▂▁▂▁▄██▅▃██▆▃▂▂▁▂▂▂

ES512 - fast-jwt (sync)                 1.08 ms/iter   1.10 ms             █        
                                 (1.03 ms … 1.19 ms)   1.15 ms  ▂▅▂█▃▆█▆█▄▇█▂       
                             (  2.13 kb … 964.52 kb)   5.15 kb ▆█████████████▅▃▅▃▃▂▃

ES512 - fast-jwt (async)                1.32 ms/iter   1.34 ms     ▆▇▅█ ▃▃          
                                 (1.27 ms … 1.46 ms)   1.41 ms   ▃ ███████▆         
                             (  5.08 kb …   1.66 mb)  11.63 kb ▄▅██████████▄▂▆█▆▃▁▁▁

ES512 - @node-rs/jsonwebtoken (sync)    2.39 µs/iter   2.39 µs  ▂█                  
                                 (2.37 µs … 2.50 µs)   2.50 µs ▃███                 
                             (  1.27 kb …   1.27 kb)   1.27 kb ████▆▇▅▁▁▂▁▂▁▁▂▁▁▁▁▁▂

ES512 - @node-rs/jsonwebtoken (async)   9.32 µs/iter   9.28 µs ▂ █                  
                                (9.09 µs … 10.31 µs)   9.85 µs █ █▅                 
                             (  1.71 kb …   1.84 kb)   1.74 kb █▇██▁▇▇▁▁▁▇▁▁▁▁▁▁▁▁▁▇

summary
  ES512 - @node-rs/jsonwebtoken (sync)
   3.9x faster than ES512 - @node-rs/jsonwebtoken (async)
   451.18x faster than ES512 - fast-jwt (sync)
   454.82x faster than ES512 - jose (sync)
   554.33x faster than ES512 - fast-jwt (async)
   574.96x faster than ES512 - jsonwebtoken (sync)
   576.72x faster than ES512 - jsonwebtoken (async)
RS512

RS512

clk: ~3.80 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                            avg (min … max) p75 / p99    (min … top 1%)
---------------------------------------------------- -------------------------------
RS512 - jose (sync)                     2.54 ms/iter   2.53 ms █                    
                                 (2.51 ms … 3.14 ms)   3.11 ms █▂                   
                             (  4.80 kb …  14.85 kb)   4.93 kb ██▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂

RS512 - jsonwebtoken (sync)             3.40 ms/iter   3.40 ms  █▆▂                 
                                 (3.36 ms … 3.59 ms)   3.54 ms  ███▄                
                             (  8.89 kb …  57.29 kb)   9.37 kb ▆████▆▃▂▂▂▁▁▁▁▁▁▁▁▁▁▂

RS512 - jsonwebtoken (async)            3.39 ms/iter   3.40 ms    ▆▆█               
                                 (3.37 ms … 3.54 ms)   3.46 ms   ▅███▇ ▂            
                             (  9.28 kb …  57.28 kb)   9.53 kb ▄████████▆▅▄▃▁▂▁▂▁▁▁▂

RS512 - fast-jwt (sync)                 2.54 ms/iter   2.53 ms █                    
                                 (2.51 ms … 3.15 ms)   3.12 ms █▂                   
                             (  4.41 kb …   7.91 kb)   4.45 kb ██▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

RS512 - fast-jwt (async)                3.52 ms/iter   3.55 ms               ▅█     
                                 (3.37 ms … 3.68 ms)   3.60 ms              ▅██▅    
                             (  9.85 kb … 291.22 kb)  11.55 kb ▁▄▂▄▂▁▁▂▁▂▁▂▇████▆▁▁▂

RS512 - @node-rs/jsonwebtoken (sync)    2.54 ms/iter   2.54 ms     █                
                                 (2.49 ms … 2.68 ms)   2.68 ms     █▆               
                             (  2.01 kb …   2.28 kb)   2.03 kb ▁▃▃▃██▆▃▂▂▁▁▁▁▁▁▂▁▁▂▁

RS512 - @node-rs/jsonwebtoken (async)   2.48 ms/iter   2.54 ms  █                   
                                 (2.44 ms … 2.59 ms)   2.58 ms  █                   
                             (  2.63 kb …   2.95 kb)   2.63 kb ███▇▄▂▂▁▂▁▂▂▂▂▂▆▇▄▃▃▂

summary
  RS512 - @node-rs/jsonwebtoken (async)
   1.02x faster than RS512 - fast-jwt (sync)
   1.02x faster than RS512 - jose (sync)
   1.02x faster than RS512 - @node-rs/jsonwebtoken (sync)
   1.37x faster than RS512 - jsonwebtoken (async)
   1.37x faster than RS512 - jsonwebtoken (sync)
   1.42x faster than RS512 - fast-jwt (async)
PS512

PS512

clk: ~3.81 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                            avg (min … max) p75 / p99    (min … top 1%)
---------------------------------------------------- -------------------------------
PS512 - jose (sync)                     2.62 ms/iter   2.68 ms █                    
                                 (2.52 ms … 3.33 ms)   3.14 ms █                    
                             (  4.91 kb …   6.01 kb)   4.95 kb ██▂▁▇█▅▄▂▁▁▃▁▂▁▁▁▁▁▁▂

PS512 - jsonwebtoken (sync)             3.38 ms/iter   3.39 ms       ▅█             
                                 (3.35 ms … 3.54 ms)   3.43 ms   ▂█▇███▅▂           
                             (  7.88 kb …  56.47 kb)   9.16 kb ▅▇█████████▇▂▆▃▃▂▁▁▁▃

PS512 - jsonwebtoken (async)            3.53 ms/iter   3.55 ms                 █▅   
                                 (3.38 ms … 3.61 ms)   3.58 ms               ▂▆██   
                             (  8.13 kb …  20.29 kb)   9.14 kb ▂▃▂▂▂▁▁▂▁▁▂▂▃▄█████▄▂

PS512 - fast-jwt (sync)                 2.56 ms/iter   2.54 ms █                    
                                 (2.52 ms … 3.13 ms)   3.11 ms █▂                   
                             (  3.75 kb …  38.49 kb)   4.56 kb ██▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂

PS512 - fast-jwt (async)                3.37 ms/iter   3.38 ms    ▅█▂               
                                 (3.35 ms … 3.50 ms)   3.46 ms  ▄▇███▂              
                             (  9.13 kb …   1.16 mb)  15.69 kb ▃██████▇▅▃▃▄▁▁▁▃▂▁▁▁▂

PS512 - @node-rs/jsonwebtoken (sync)    2.44 ms/iter   2.44 ms  █                   
                                 (2.43 ms … 2.72 ms)   2.59 ms  █▃                  
                             (  2.02 kb …   2.28 kb)   2.03 kb ███▅▄▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

PS512 - @node-rs/jsonwebtoken (async)   2.59 ms/iter   2.61 ms       █▄             
                                 (2.45 ms … 2.84 ms)   2.79 ms       ██▅ ▅          
                             (  2.63 kb …   2.95 kb)   2.64 kb ▃▄▂▂▂▁█████▅▂▁▁▁▁▂▂▂▁

summary
  PS512 - @node-rs/jsonwebtoken (sync)
   1.05x faster than PS512 - fast-jwt (sync)
   1.06x faster than PS512 - @node-rs/jsonwebtoken (async)
   1.07x faster than PS512 - jose (sync)
   1.38x faster than PS512 - fast-jwt (async)
   1.38x faster than PS512 - jsonwebtoken (sync)
   1.44x faster than PS512 - jsonwebtoken (async)
EdDSA

EdDSA

clk: ~3.82 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                            avg (min … max) p75 / p99    (min … top 1%)
---------------------------------------------------- -------------------------------
EdDSA - jose (sync)                    25.57 µs/iter  25.59 µs              █       
                               (24.87 µs … 27.14 µs)  25.78 µs              ██ █    
                             (  3.18 kb …   3.18 kb)   3.18 kb █▁▁▁▁█▁▁▁▁▁▁███▁█▁▁▁█

EdDSA - fast-jwt (sync)                25.15 µs/iter  25.42 µs █           █        
                               (24.43 µs … 25.91 µs)  25.87 µs █           █       █
                             (  1.89 kb …   1.89 kb)   1.89 kb █▁▁█▁▁▁█▁▁▁▁█▁█▁▁▁▁▁█

EdDSA - fast-jwt (async)              265.45 µs/iter 273.42 µs    ▅█▆               
                             (251.46 µs … 335.13 µs) 289.17 µs    ███▆       ▂      
                             (  3.93 kb … 900.73 kb)   7.22 kb ▁▃█████▇▆▃▄▄▅██▇▅▂▂▂▁

EdDSA - @node-rs/jsonwebtoken (sync)    2.46 µs/iter   2.46 µs   █  ▃█              
                                 (2.44 µs … 2.51 µs)   2.51 µs  ██▆████▆            
                             (  1.27 kb …   1.27 kb)   1.27 kb █████████▄█▄▁▄▁▁▁▆▁▁▄

EdDSA - @node-rs/jsonwebtoken (async)   9.03 µs/iter   9.07 µs     █   █ █          
                                 (8.80 µs … 9.41 µs)   9.35 µs ▅ ▅▅█▅▅ █▅█     ▅   ▅
                             (  1.71 kb …   1.84 kb)   1.74 kb █▁█████▁███▁▁▁▁▁█▁▁▁█

summary
  EdDSA - @node-rs/jsonwebtoken (sync)
   3.68x faster than EdDSA - @node-rs/jsonwebtoken (async)
   10.24x faster than EdDSA - fast-jwt (sync)
   10.41x faster than EdDSA - jose (sync)
   108.07x faster than EdDSA - fast-jwt (async)

Decoding

RS512

RS512

clk: ~3.77 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                      avg (min … max) p75 / p99    (min … top 1%)
---------------------------------------------- -------------------------------
RS512 - fast-jwt                954.83 ns/iter 915.65 ns █                    
                         (875.42 ns … 3.81 µs)   2.16 µs █▅                   
                       (181.47  b … 458.22  b) 456.27  b ██▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

RS512 - fast-jwt (complete)     906.17 ns/iter 912.27 ns    █ ▃               
                       (887.33 ns … 967.28 ns) 942.81 ns   ▅███▃              
                       (366.35  b … 578.23  b) 576.75  b ▃▆█████▇███▆▆▃▃▁▂▃▃▃▃

RS512 - jsonwebtoken              1.60 µs/iter   1.62 µs               ▂█▃    
                           (1.50 µs … 1.64 µs)   1.64 µs               ███ ▃  
                       (857.28  b … 867.15  b) 866.94  b ▂▁█▆▆▄▁▃▂▃▁▁▁▄█████▆▇

RS512 - jsonwebtoken (complete)   1.54 µs/iter   1.54 µs    █ ▂               
                           (1.50 µs … 1.62 µs)   1.61 µs    █▅██              
                       (858.64  b … 891.16  b) 874.72  b ▅▄▅████▇▇▇▃▂▂▂▁▁▁▁▂▁▂

RS512 - jose                    729.27 ns/iter 739.02 ns    ▅█                
                       (697.98 ns … 802.89 ns) 794.22 ns   ▄██▄  ▃            
                       (426.12  b … 440.21  b) 435.68  b ▂██████▇█▆▄▄▇▃▆▅▃▂▂▂▂

RS512 - jose (complete)         755.40 ns/iter 761.68 ns             ▆█       
                       (692.05 ns … 803.89 ns) 792.38 ns           ▅▅██▂      
                       (414.52  b … 446.12  b) 439.48  b ▂▁▁▁▁▁▁▁▁▄██████▅▂▅▃▂

summary
  RS512 - jose
   1.04x faster than RS512 - jose (complete)
   1.24x faster than RS512 - fast-jwt (complete)
   1.31x faster than RS512 - fast-jwt
   2.11x faster than RS512 - jsonwebtoken (complete)
   2.19x faster than RS512 - jsonwebtoken

Note that for decoding the algorithm is irrelevant, so only one was measured.

Verifying

HS512

HS512

clk: ~3.77 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                          avg (min … max) p75 / p99    (min … top 1%)
-------------------------------------------------- -------------------------------
HS512 - fast-jwt (sync)               3.03 µs/iter   3.85 µs █                    
                               (2.59 µs … 4.02 µs)   4.02 µs █                 ▃  
                           (  1.26 kb …   1.26 kb)   1.26 kb █▇▃▁▁▁▁▁▁▂▂▁▁▁▁▁▁▂█▃▂

HS512 - fast-jwt (async)              5.39 µs/iter   5.36 µs   █                  
                               (5.08 µs … 6.45 µs)   6.30 µs  ▆█▃▃▃               
                           (823.31  b …   1.64 kb)   1.45 kb ██████▁▄▁▄▁▁▁▁▁▄▁▄▁▁▄

HS512 - fast-jwt (sync with cache)    1.13 µs/iter 953.03 ns █                    
                             (887.26 ns … 1.97 µs)   1.95 µs █                    
                           (723.44  b …   1.16 kb) 890.60  b █▇▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▆▃

HS512 - fast-jwt (async with cache)   1.24 µs/iter   1.47 µs █              ▂     
                               (1.01 µs … 1.73 µs)   1.62 µs █▃             █     
                           (  1.56 kb …   2.07 kb)   1.66 kb ██▇▃▁▃▂▁▁▁▁▂▁▁▂█▆▃▄▃▃

HS512 - jose (sync)                   3.34 µs/iter   3.04 µs   █                  
                               (2.79 µs … 2.89 ms)   4.46 µs  ▂█▄                 
                           (600.00  b … 621.12 kb)   2.32 kb ▁███▆▃▃▂▁▁▁▁▁▁▁▁▁▁▁▁▁

HS512 - jsonwebtoken (sync)         233.62 µs/iter 238.08 µs            ▅█▇       
                           (214.42 µs … 467.25 µs) 250.33 µs            ███▆      
                           (  5.53 kb … 438.59 kb)   6.89 kb ▂▃▅▇█▇▆▃▄▅▅█████▅▃▂▂▁

HS512 - jsonwebtoken (async)        220.80 µs/iter 223.33 µs   ▃█                 
                           (210.38 µs … 353.29 µs) 256.63 µs  ███▂█▇              
                           (  5.80 kb … 947.22 kb)   6.58 kb ▃██████▅▃▂▂▂▃▂▂▂▂▁▁▁▁

summary
  HS512 - fast-jwt (sync with cache)
   1.1x faster than HS512 - fast-jwt (async with cache)
   2.69x faster than HS512 - fast-jwt (sync)
   2.96x faster than HS512 - jose (sync)
   4.78x faster than HS512 - fast-jwt (async)
   195.52x faster than HS512 - jsonwebtoken (async)
   206.87x faster than HS512 - jsonwebtoken (sync)
ES512

ES512

clk: ~3.82 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                          avg (min … max) p75 / p99    (min … top 1%)
-------------------------------------------------- -------------------------------
ES512 - fast-jwt (sync)             840.34 µs/iter 842.92 µs             █        
                           (782.50 µs … 911.83 µs) 874.63 µs             █▄       
                           (  2.09 kb … 555.84 kb)   3.63 kb ▁▁▁▁▁▁▁▁▁▁▁▄██▆▃▂▂▁▁▁

ES512 - fast-jwt (async)            914.88 µs/iter 919.63 µs              █▃      
                           (858.54 µs … 978.96 µs) 944.63 µs              ██      
                           (  4.27 kb … 836.84 kb)   7.44 kb ▁▁▁▁▁▃▃▂▂▁▁▁▃███▄▂▂▁▁

ES512 - fast-jwt (sync with cache)    1.24 µs/iter   1.04 µs    █▇                
                             (916.00 ns … 2.85 ms)   1.58 µs    ██                
                           (912.00  b …  97.09 kb) 976.75  b ▁▃▁██▇▂▁▁▂▁▁▁▁▁▂▁▁▁▁▁

ES512 - fast-jwt (async with cache)   1.27 µs/iter   1.17 µs     █                
                               (1.00 µs … 1.37 ms)   1.62 µs    ▂█▅               
                           (  1.66 kb … 129.66 kb)   1.99 kb ▁▁▁███▁▄▂▂▁▁▁▁▁▁▁▁▁▁▁

ES512 - jose (sync)                 843.36 µs/iter 845.21 µs           █          
                           (786.50 µs … 935.50 µs) 893.42 µs           █          
                           (  2.40 kb … 851.24 kb)   3.66 kb ▁▁▁▁▁▁▁▁▁▂██▄▃▂▂▁▁▁▁▁

ES512 - jsonwebtoken (sync)         934.94 µs/iter 938.50 µs           █          
                             (870.75 µs … 1.12 ms) 994.54 µs           █▇         
                           (  4.48 kb … 707.00 kb)   5.93 kb ▁▁▁▂▁▂▂▁▁▂██▆▂▁▁▁▁▁▁▁

ES512 - jsonwebtoken (async)        936.22 µs/iter 937.96 µs   ▃█                 
                             (926.92 µs … 1.01 ms) 966.63 µs  ▃███▅               
                           (  4.67 kb …   1.58 mb)  10.68 kb ▂██████▆▄▄▃▁▂▂▁▁▁▂▁▁▁

summary
  ES512 - fast-jwt (sync with cache)
   1.02x faster than ES512 - fast-jwt (async with cache)
   679.86x faster than ES512 - fast-jwt (sync)
   682.3x faster than ES512 - jose (sync)
   740.16x faster than ES512 - fast-jwt (async)
   756.4x faster than ES512 - jsonwebtoken (sync)
   757.43x faster than ES512 - jsonwebtoken (async)
RS512

RS512

clk: ~3.77 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                          avg (min … max) p75 / p99    (min … top 1%)
-------------------------------------------------- -------------------------------
RS512 - fast-jwt (sync)              45.16 µs/iter  45.24 µs █                  █ 
                             (44.80 µs … 46.25 µs)  45.28 µs █▅ ▅      ▅  ▅  ▅ ▅█▅
                           (  1.80 kb …   1.81 kb)   1.80 kb ██▁█▁▁▁▁▁▁█▁▁█▁▁█▁███

RS512 - fast-jwt (async)            128.43 µs/iter 132.04 µs          █           
                           (119.79 µs … 191.54 µs) 144.88 µs  █▆      ██          
                           (  4.42 kb … 613.58 kb)   5.86 kb ▃███▅▄▂▂▄██▇▅▃▂▂▂▁▁▁▁

RS512 - fast-jwt (sync with cache)    1.51 µs/iter   1.32 µs █                    
                               (1.26 µs … 2.37 µs)   2.34 µs █                    
                           (888.29  b … 898.12  b) 897.84  b ██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▆▄

RS512 - fast-jwt (async with cache)   1.70 µs/iter   2.01 µs  █                ▃  
                               (1.43 µs … 2.10 µs)   2.08 µs ▄█                █  
                           (  1.56 kb …   1.67 kb)   1.65 kb ██▅▃▂▁▁▁▁▁▁▁▁▁▁▁▁▇█▄▂

RS512 - jose (sync)                  42.96 µs/iter  42.83 µs  █                   
                              (41.75 µs … 1.23 ms)  51.63 µs  █                   
                           (  2.29 kb … 304.27 kb)   3.17 kb ▆██▄▂▁▂▃▂▁▁▁▁▁▁▁▁▁▁▁▁

RS512 - jsonwebtoken (sync)         128.81 µs/iter 131.63 µs           █          
                             (120.63 µs … 1.19 ms) 142.13 µs   ▇▆     ██▃         
                           (  7.33 kb … 869.80 kb)   9.95 kb ▂███▆▄▃▂▃███▅▄▂▂▂▂▂▁▁

RS512 - jsonwebtoken (async)        125.93 µs/iter 126.29 µs   █                  
                             (120.50 µs … 2.21 ms) 142.96 µs  ██                  
                           (  1.14 kb … 165.64 kb)   8.58 kb ▂███▃▃▂▁▁▃▆▃▂▂▂▂▂▁▁▁▁

summary
  RS512 - fast-jwt (sync with cache)
   1.12x faster than RS512 - fast-jwt (async with cache)
   28.45x faster than RS512 - jose (sync)
   29.91x faster than RS512 - fast-jwt (sync)
   83.41x faster than RS512 - jsonwebtoken (async)
   85.06x faster than RS512 - fast-jwt (async)
   85.31x faster than RS512 - jsonwebtoken (sync)
PS512

PS512

clk: ~3.76 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                          avg (min … max) p75 / p99    (min … top 1%)
-------------------------------------------------- -------------------------------
PS512 - fast-jwt (sync)              45.97 µs/iter  46.59 µs                  █   
                             (44.13 µs … 46.98 µs)  46.94 µs                  █   
                           (  1.76 kb …   1.77 kb)   1.77 kb █▁█▁▁▁▁█▁▁██▁▁▁▁▁████

PS512 - fast-jwt (async)             73.33 µs/iter  75.13 µs  █                   
                              (69.42 µs … 1.71 ms)  93.04 µs  █   ▂               
                           (  4.36 kb … 397.64 kb)   5.39 kb ▇██▄▃█▅▂▂▂▁▁▂▁▁▁▁▁▁▁▁

PS512 - fast-jwt (sync with cache)    1.48 µs/iter   1.28 µs  █                   
                               (1.22 µs … 2.36 µs)   2.34 µs ▅█                   
                           (879.95  b … 889.60  b) 889.41  b ██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂▅▄

PS512 - fast-jwt (async with cache)   1.64 µs/iter   1.94 µs  █                   
                               (1.37 µs … 2.12 µs)   2.08 µs ▅█              ▅    
                           (  1.56 kb …   1.66 kb)   1.65 kb ██▅▂▂▂▂▁▁▁▁▁▁▁▂▇█▅▅▂▂

PS512 - jose (sync)                  47.65 µs/iter  47.67 µs       █              
                              (44.00 µs … 1.16 ms)  54.17 µs       █▆             
                           (360.00  b … 355.05 kb)   3.35 kb ▁▁▁▁▁▇██▆▂▁▂▂▁▁▁▁▁▁▁▁

PS512 - jsonwebtoken (sync)          74.37 µs/iter  75.54 µs  ▅▃     █▃           
                              (69.21 µs … 3.01 ms)  83.58 µs  ██     ██           
                           (  1.30 kb … 546.25 kb)   9.40 kb ▂██▆▂▂▂▆███▄▃▃▂▁▁▁▁▁▁

PS512 - jsonwebtoken (async)         71.80 µs/iter  70.88 µs  ▂█                  
                              (69.25 µs … 2.87 ms)  80.46 µs  ██▅                 
                           (  8.40 kb … 393.91 kb)   8.87 kb ▂███▄▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁

summary
  PS512 - fast-jwt (sync with cache)
   1.11x faster than PS512 - fast-jwt (async with cache)
   31.09x faster than PS512 - fast-jwt (sync)
   32.22x faster than PS512 - jose (sync)
   48.56x faster than PS512 - jsonwebtoken (async)
   49.6x faster than PS512 - fast-jwt (async)
   50.3x faster than PS512 - jsonwebtoken (sync)
EdDSA

EdDSA

clk: ~3.80 GHz
cpu: Apple M3 Pro
runtime: node 22.13.1 (arm64-darwin)

benchmark                          avg (min … max) p75 / p99    (min … top 1%)
-------------------------------------------------- -------------------------------
EdDSA - fast-jwt (sync)              66.87 µs/iter  66.58 µs  █                   
                            (65.83 µs … 101.29 µs)  78.25 µs ▇█                   
                           (  1.72 kb … 367.73 kb)   2.29 kb ██▄▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁

EdDSA - fast-jwt (async)            109.31 µs/iter 109.50 µs  █▆                  
                           (106.54 µs … 204.38 µs) 123.17 µs  ██                  
                           (  3.62 kb … 452.90 kb)   4.30 kb ▃███▅▅▃▂▂▁▃▃▂▁▁▁▁▁▁▁▁

EdDSA - fast-jwt (sync with cache)    1.23 µs/iter   1.78 µs ▃ █                  
                             (944.07 ns … 1.95 µs)   1.94 µs █ █                  
                           (  1.04 kb …   1.04 kb)   1.04 kb █▆█▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▂▇▂

EdDSA - fast-jwt (async with cache)   1.32 µs/iter   1.55 µs  █                   
                               (1.06 µs … 1.74 µs)   1.72 µs ▆█            ▂█     
                           (  1.73 kb …   1.84 kb)   1.83 kb ██▄▅▂▁▁▁▁▁▁▁▁▁██▆▄▄▂▂

EdDSA - jose (sync)                  67.21 µs/iter  67.04 µs  █                   
                            (66.17 µs … 112.92 µs)  78.42 µs  █                   
                           (  2.20 kb … 469.91 kb)   3.05 kb ██▆▂▁▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁

summary
  EdDSA - fast-jwt (sync with cache)
   1.08x faster than EdDSA - fast-jwt (async with cache)
   54.58x faster than EdDSA - fast-jwt (sync)
   54.87x faster than EdDSA - jose (sync)
   89.23x faster than EdDSA - fast-jwt (async)