internment icon indicating copy to clipboard operation
internment copied to clipboard

sparkle some #[inline]

Open GrigorenkoPV opened this issue 1 year ago • 4 comments

GrigorenkoPV avatar Jul 07 '24 21:07 GrigorenkoPV

Actually I see the tests are failing, since there were some inlines applied to types which don't make sense, so this needs to be fixed.

droundy avatar Jul 19 '24 18:07 droundy

Fixed the typo and rebased on top of master (also I think CI does not check formatting, because there's currently an extra newline that rustfmt does not like on master).

I will provide benchmarks later.

GrigorenkoPV avatar Jul 19 '24 20:07 GrigorenkoPV

It may not be obvious that you can run the existing benchmark with cargo bench --features=bench.

droundy avatar Jul 21 '24 22:07 droundy

Ok, here we go

benches/bench.rs

Before

  Contended &'static str Intern 3.470053539s (R²=0.921, 10 iterations in 4 samples)
Uncontended &'static str Intern 119.988105ms (R²=1.000, 6 iterations in 3 samples)
  Contended &'stati.. NewIntern 2.715266643s (R²=0.000, 4 iterations in 3 samples)
Uncontended &'stati.. NewIntern 125.482971ms (R²=0.999, 6 iterations in 3 samples)
  Contended &'stat... ArcIntern 887.985919ms (R²=1.000, 6 iterations in 3 samples)
Uncontended &'stat... ArcIntern 380.820361ms (R²=1.000, 6 iterations in 3 samples)
Uncontended &'st... ArenaIntern 164.269351ms (R²=1.000, 6 iterations in 3 samples)


  Contended few Strings Intern 2.582528797s (R²=0.000, 4 iterations in 3 samples)
Uncontended few Strings Intern 186.651849ms (R²=1.000, 6 iterations in 3 samples)
  Contended few S... NewIntern  2.9345888s (R²=0.000, 4 iterations in 3 samples)
Uncontended few S... NewIntern 186.575032ms (R²=1.000, 6 iterations in 3 samples)
  Contended few S... ArcIntern 868.53773ms (R²=0.999, 6 iterations in 3 samples)
Uncontended few S... ArcIntern 216.561047ms (R²=1.000, 6 iterations in 3 samples)
Uncontended few S..ArenaIntern 158.027995ms (R²=1.000, 6 iterations in 3 samples)
  Contended few Strings Intern::from 2.008508227s (R²=1.000, 6 iterations in 3 samples)
Uncontended few Strings Intern::from  93.49282ms (R²=1.000, 6 iterations in 3 samples)
  Contended few S... ArcIntern::from 844.27767ms (R²=1.000, 6 iterations in 3 samples)
Uncontended few S... ArcIntern::from 211.63708ms (R²=1.000, 6 iterations in 3 samples)
  Contended few str. Intern::from 2.327903806s (R²=1.000, 6 iterations in 3 samples)
Uncontended few str. Intern::from 100.563083ms (R²=1.000, 6 iterations in 3 samples)
  Contended few str. NewIntern::from 2.155720709s (R²=1.000, 6 iterations in 3 samples)
Uncontended few str. NewIntern::from 89.760435ms (R²=0.999, 6 iterations in 3 samples)


  Contended unique Strings Intern 7.086988004s (R²=0.000, 2 iterations in 2 samples)
Uncontended unique Strings Intern 882.737256ms (R²=1.000, 6 iterations in 3 samples)
  Contended unique S... NewIntern 7.071832727s (R²=0.000, 2 iterations in 2 samples)
Uncontended unique S... NewIntern 869.983007ms (R²=1.000, 6 iterations in 3 samples)
  Contended unique S... ArcIntern 1.280252649s (R²=1.000, 6 iterations in 3 samples)
Uncontended unique S... ArcIntern 2.451821053s (R²=1.000, 6 iterations in 3 samples)
Uncontended unique S..ArenaIntern 1.039732958s (R²=0.998, 6 iterations in 3 samples)


  Contended four types Intern 1.890321792s (R²=1.000, 6 iterations in 3 samples)
Uncontended four types Intern 657.014643ms (R²=1.000, 6 iterations in 3 samples)
  Contended four ...NewIntern 1.736759376s (R²=1.000, 6 iterations in 3 samples)
Uncontended four ...NewIntern 650.628263ms (R²=1.000, 6 iterations in 3 samples)
  Contended four ...ArcIntern 1.245849742s (R²=1.000, 6 iterations in 3 samples)
Uncontended four ...ArcIntern 1.887004673s (R²=1.000, 6 iterations in 3 samples)


Contended arrays Intern 926.45528ms (R²=1.000, 6 iterations in 3 samples)
Uncontended  ... Intern 286.146342ms (R²=1.000, 6 iterations in 3 samples)
Contended ... NewIntern 806.958797ms (R²=1.000, 6 iterations in 3 samples)
Uncontended . NewIntern 301.572902ms (R²=1.000, 6 iterations in 3 samples)
Contended ... ArcIntern 9.467367368s (R²=0.000, 2 iterations in 2 samples)
Uncontended . ArcIntern 1.503260484s (R²=0.970, 6 iterations in 3 samples)


Contended different arrays Intern 2.29115075s (R²=1.000, 6 iterations in 3 samples)
Contended different arrays Intern 1.243822669s (R²=1.000, 6 iterations in 3 samples)
Contended different ... NewIntern 1.931904743s (R²=0.998, 6 iterations in 3 samples)
Contended different ... NewIntern 1.212583633s (R²=1.000, 6 iterations in 3 samples)
Contended different ... ArcIntern 838.574041ms (R²=1.000, 6 iterations in 3 samples)
Contended different ... ArcIntern 1.667524733s (R²=1.000, 6 iterations in 3 samples)


String::new short   206.641µs (R²=1.000, 6 iterations in 3 samples)
String::new   960.385µs (R²=0.991, 276 iterations in 23 samples)
String::compare/hash   127.172µs (R²=1.000, 6 iterations in 3 samples)
String sort   591.873µs (R²=1.000, 6 iterations in 3 samples)
Box<String> sort    632.36µs (R²=0.999, 6 iterations in 3 samples)
String any eq     1.633µs (R²=0.992, 6 iterations in 3 samples)
Box<String> any eq     4.623µs (R²=0.999, 6 iterations in 3 samples)

Intern<i64>::new       215ns (R²=0.538, 58922891 iterations in 151 samples)
Intern<u8>::new        14ns (R²=1.000, 60881 iterations in 79 samples)
Intern<String>::new short    211.78µs (R²=0.992, 21 iterations in 6 samples)
Intern<String>::new short   226.222µs (R²=1.000, 6 iterations in 3 samples)
Intern<String>::from short   237.447µs (R²=1.000, 6 iterations in 3 samples)
Intern<String>::new   364.987µs (R²=0.998, 6 iterations in 3 samples)
Intern<String>::from   326.538µs (R²=0.997, 6 iterations in 3 samples)
Intern<String>::compare/hash     9.478µs (R²=0.999, 91 iterations in 13 samples)
Intern<str>::compare/hash    13.507µs (R²=0.998, 66 iterations in 11 samples)
Intern<String> sort   674.743µs (R²=1.000, 6 iterations in 3 samples)
Intern<str> sort   509.163µs (R²=1.000, 6 iterations in 3 samples)
Intern<String> any eq str      1.31µs (R²=1.000, 276 iterations in 23 samples)
Intern<String> any eq       743ns (R²=1.000, 325 iterations in 25 samples)
Intern<i64>::clone         0ns (R²=0.996, 7877635 iterations in 130 samples)

ArcIntern<i64>::new       131ns (R²=1.000, 7235 iterations in 57 samples)
ArcIntern<u8>::new       124ns (R²=0.991, 8645 iterations in 59 samples)
ArcIntern<String>::new short   908.337µs (R²=1.000, 6 iterations in 3 samples)
ArcIntern<String>::new  2.143663ms (R²=1.000, 6 iterations in 3 samples)
ArcIntern<String>::from   1.86587ms (R²=0.991, 190 iterations in 19 samples)
ArcIntern<String>::compare/hash     9.716µs (R²=1.000, 21 iterations in 6 samples)
ArcIntern<String> sort    784.47µs (R²=0.999, 6 iterations in 3 samples)
ArcIntern<String> any eq       779ns (R²=1.000, 36 iterations in 8 samples)
ArcIntern<i64>::clone        12ns (R²=1.000, 80887 iterations in 82 samples)

arc_interner::ArcIntern<i64>::new       100ns (R²=1.000, 9465 iterations in 60 samples)
arc_interner::ArcIntern<u8>::new        99ns (R²=1.000, 10376 iterations in 61 samples)
arc_interner::ArcIntern<String>::new short   986.312µs (R²=1.000, 6 iterations in 3 samples)
arc_interner::ArcIntern<String>::new  2.182568ms (R²=1.000, 6 iterations in 3 samples)
arc_interner::ArcIntern<String>::compare/hash   130.061µs (R²=1.000, 6 iterations in 3 samples)
arc_interner::ArcIntern<String> sort   793.701µs (R²=1.000, 6 iterations in 3 samples)
arc_interner::ArcIntern<i64>::clone        37ns (R²=1.000, 27626 iterations in 71 samples)

After

  Contended &'static str Intern 2.543669473s (R²=1.000, 6 iterations in 3 samples)
Uncontended &'static str Intern 129.238952ms (R²=1.000, 6 iterations in 3 samples)
  Contended &'stati.. NewIntern 2.876520802s (R²=0.000, 4 iterations in 3 samples)
Uncontended &'stati.. NewIntern 123.095285ms (R²=1.000, 6 iterations in 3 samples)
  Contended &'stat... ArcIntern 978.716627ms (R²=1.000, 6 iterations in 3 samples)
Uncontended &'stat... ArcIntern 335.857887ms (R²=1.000, 6 iterations in 3 samples)
Uncontended &'st... ArenaIntern  170.1385ms (R²=1.000, 6 iterations in 3 samples)


  Contended few Strings Intern 2.537284238s (R²=0.000, 4 iterations in 3 samples)
Uncontended few Strings Intern 211.154104ms (R²=0.993, 6 iterations in 3 samples)
  Contended few S... NewIntern 2.880762934s (R²=0.000, 4 iterations in 3 samples)
Uncontended few S... NewIntern 180.160525ms (R²=1.000, 6 iterations in 3 samples)
  Contended few S... ArcIntern 857.621069ms (R²=1.000, 6 iterations in 3 samples)
Uncontended few S... ArcIntern 319.532064ms (R²=0.950, 36 iterations in 8 samples)
Uncontended few S..ArenaIntern 153.498924ms (R²=1.000, 6 iterations in 3 samples)
  Contended few Strings Intern::from 2.089621205s (R²=1.000, 6 iterations in 3 samples)
Uncontended few Strings Intern::from 88.866164ms (R²=0.999, 6 iterations in 3 samples)
  Contended few S... ArcIntern::from 876.690047ms (R²=0.995, 6 iterations in 3 samples)
Uncontended few S... ArcIntern::from 214.015566ms (R²=0.999, 6 iterations in 3 samples)
  Contended few str. Intern::from 2.079382502s (R²=1.000, 6 iterations in 3 samples)
Uncontended few str. Intern::from 95.668417ms (R²=0.997, 6 iterations in 3 samples)
  Contended few str. NewIntern::from 2.039205345s (R²=1.000, 6 iterations in 3 samples)
Uncontended few str. NewIntern::from 82.750759ms (R²=1.000, 6 iterations in 3 samples)


  Contended unique Strings Intern 6.952386744s (R²=0.000, 2 iterations in 2 samples)
Uncontended unique Strings Intern 971.452688ms (R²=0.997, 6 iterations in 3 samples)
  Contended unique S... NewIntern 7.615081847s (R²=0.000, 2 iterations in 2 samples)
Uncontended unique S... NewIntern 918.167722ms (R²=1.000, 6 iterations in 3 samples)
  Contended unique S... ArcIntern 1.192980505s (R²=1.000, 6 iterations in 3 samples)
Uncontended unique S... ArcIntern 2.264558945s (R²=0.999, 6 iterations in 3 samples)
Uncontended unique S..ArenaIntern 961.309716ms (R²=1.000, 6 iterations in 3 samples)


  Contended four types Intern 1.793752064s (R²=1.000, 6 iterations in 3 samples)
Uncontended four types Intern 661.168236ms (R²=1.000, 6 iterations in 3 samples)
  Contended four ...NewIntern 1.899652978s (R²=1.000, 6 iterations in 3 samples)
Uncontended four ...NewIntern 653.447642ms (R²=1.000, 6 iterations in 3 samples)
  Contended four ...ArcIntern 1.218470161s (R²=0.999, 6 iterations in 3 samples)
Uncontended four ...ArcIntern 2.10128296s (R²=0.989, 6 iterations in 3 samples)


Contended arrays Intern 949.927147ms (R²=0.999, 6 iterations in 3 samples)
Uncontended  ... Intern 293.969547ms (R²=1.000, 6 iterations in 3 samples)
Contended ... NewIntern 936.479941ms (R²=1.000, 6 iterations in 3 samples)
Uncontended . NewIntern 310.670937ms (R²=1.000, 6 iterations in 3 samples)
Contended ... ArcIntern 9.904778654s (R²=0.000, 2 iterations in 2 samples)
Uncontended . ArcIntern 1.622988501s (R²=1.000, 6 iterations in 3 samples)


Contended different arrays Intern 2.164186328s (R²=1.000, 6 iterations in 3 samples)
Contended different arrays Intern 1.243485186s (R²=1.000, 6 iterations in 3 samples)
Contended different ... NewIntern 1.817633227s (R²=1.000, 6 iterations in 3 samples)
Contended different ... NewIntern 1.258292825s (R²=1.000, 6 iterations in 3 samples)
Contended different ... ArcIntern 796.176939ms (R²=1.000, 6 iterations in 3 samples)
Contended different ... ArcIntern 1.662553458s (R²=1.000, 6 iterations in 3 samples)


String::new short   206.734µs (R²=1.000, 6 iterations in 3 samples)
String::new  1.213898ms (R²=0.995, 10 iterations in 4 samples)
String::compare/hash   122.871µs (R²=1.000, 6 iterations in 3 samples)
String sort   606.355µs (R²=1.000, 6 iterations in 3 samples)
Box<String> sort    716.02µs (R²=0.990, 6 iterations in 3 samples)
String any eq     3.894µs (R²=0.990, 1105 iterations in 38 samples)
Box<String> any eq    13.255µs (R²=0.992, 715 iterations in 34 samples)

Intern<i64>::new       167ns (R²=0.616, 64825439 iterations in 152 samples)
Intern<u8>::new        13ns (R²=0.999, 60881 iterations in 79 samples)
Intern<String>::new short   177.474µs (R²=1.000, 6 iterations in 3 samples)
Intern<String>::new short   216.208µs (R²=0.999, 6 iterations in 3 samples)
Intern<String>::from short    214.07µs (R²=1.000, 6 iterations in 3 samples)
Intern<String>::new   326.975µs (R²=0.998, 6 iterations in 3 samples)
Intern<String>::from   282.821µs (R²=1.000, 6 iterations in 3 samples)
Intern<String>::compare/hash     9.247µs (R²=0.998, 91 iterations in 13 samples)
Intern<str>::compare/hash    11.776µs (R²=0.999, 78 iterations in 12 samples)
Intern<String> sort   597.205µs (R²=1.000, 6 iterations in 3 samples)
Intern<str> sort   518.671µs (R²=1.000, 6 iterations in 3 samples)
Intern<String> any eq str     1.216µs (R²=0.995, 300 iterations in 24 samples)
Intern<String> any eq       687ns (R²=0.997, 379 iterations in 27 samples)
Intern<i64>::clone         0ns (R²=0.999, 7154295 iterations in 129 samples)

ArcIntern<i64>::new       123ns (R²=0.997, 7905 iterations in 58 samples)
ArcIntern<u8>::new       117ns (R²=0.999, 8645 iterations in 59 samples)
ArcIntern<String>::new short   750.697µs (R²=0.999, 6 iterations in 3 samples)
ArcIntern<String>::new  2.488695ms (R²=0.994, 6 iterations in 3 samples)
ArcIntern<String>::from  1.347961ms (R²=0.999, 6 iterations in 3 samples)
ArcIntern<String>::compare/hash     9.393µs (R²=0.999, 21 iterations in 6 samples)
ArcIntern<String> sort    750.57µs (R²=1.000, 6 iterations in 3 samples)
ArcIntern<String> any eq       762ns (R²=1.000, 36 iterations in 8 samples)
ArcIntern<i64>::clone        11ns (R²=0.999, 88817 iterations in 83 samples)

arc_interner::ArcIntern<i64>::new        97ns (R²=1.000, 10376 iterations in 61 samples)
arc_interner::ArcIntern<u8>::new        96ns (R²=0.994, 10376 iterations in 61 samples)
arc_interner::ArcIntern<String>::new short  1.027959ms (R²=1.000, 6 iterations in 3 samples)
arc_interner::ArcIntern<String>::new  2.332802ms (R²=0.992, 6 iterations in 3 samples)
arc_interner::ArcIntern<String>::compare/hash   120.573µs (R²=1.000, 6 iterations in 3 samples)
arc_interner::ArcIntern<String> sort   662.147µs (R²=1.000, 6 iterations in 3 samples)
arc_interner::ArcIntern<i64>::clone        34ns (R²=0.998, 30550 iterations in 72 samples)

benches/get_container.rs

Before

cached/String/short     time:   [19.687 ms 20.152 ms 20.667 ms]
Found 10 outliers among 100 measurements (10.00%)
  4 (4.00%) high mild
  6 (6.00%) high severe

uncached/NewType<String>/short
                        time:   [22.437 ms 22.584 ms 22.737 ms]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
uncached/usize/short    time:   [10.634 ms 10.709 ms 10.787 ms]
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild
uncached/NewType<usize>/short
                        time:   [10.175 ms 10.426 ms 10.702 ms]
Found 20 outliers among 100 measurements (20.00%)
  2 (2.00%) high mild
  18 (18.00%) high severe

After

cached/String/short     time:   [16.735 ms 16.768 ms 16.798 ms]
                        change: [-18.880% -16.792% -14.798%] (p = 0.00 < 0.05)
                        Performance has improved.

uncached/NewType<String>/short
                        time:   [19.924 ms 20.347 ms 20.863 ms]
                        change: [-11.996% -9.9070% -7.5905%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 15 outliers among 100 measurements (15.00%)
  1 (1.00%) high mild
  14 (14.00%) high severe
uncached/usize/short    time:   [9.6531 ms 9.6627 ms 9.6734 ms]
                        change: [-10.434% -9.7664% -9.1308%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 14 outliers among 100 measurements (14.00%)
  5 (5.00%) high mild
  9 (9.00%) high severe
uncached/NewType<usize>/short
                        time:   [9.6703 ms 9.6990 ms 9.7295 ms]
                        change: [-9.4234% -6.9690% -4.6938%] (p = 0.00 < 0.05)
                        Performance has improved.

GrigorenkoPV avatar Jul 23 '24 15:07 GrigorenkoPV