mirror of
https://github.com/omniauth/omniauth.git
synced 2022-11-09 12:31:49 -05:00
b01456ac68
This patch isn't nearly as invasive as #773. Also it was tested against itself, not in a full Rails app. I'm contributing the perf scripts I wrote in another PR. Notice that by memorizing methods, not only are we reducing objects created in omniauth, but also in hashie due to fewer method calls to various omniauth options. ## Bench Before patch ``` Calculating ------------------------------------- ips 470 i/100ms ------------------------------------------------- ips 4877.1 (±10.1%) i/s - 24440 in 5.061663s 2.1.2 ~/documents/projects/omniauth (master) $ be rake perf:ips Calculating ------------------------------------- ips 467 i/100ms ------------------------------------------------- ips 4840.9 (±14.5%) i/s - 23817 in 5.068649s 2.1.2 ~/documents/projects/omniauth (master) $ be rake perf:ips Calculating ------------------------------------- ips 465 i/100ms ------------------------------------------------- ips 4799.5 (±11.8%) i/s - 23715 in 5.019191s ``` After Patch ``` $ be rake perf:ips Calculating ------------------------------------- ips 631 i/100ms ------------------------------------------------- ips 6269.1 (±11.8%) i/s - 30919 in 5.014849s 2.1.2 ~/documents/projects/omniauth (master) $ be rake perf:ips Calculating ------------------------------------- ips 615 i/100ms ------------------------------------------------- ips 6207.8 (±10.3%) i/s - 31365 in 5.106172s 2.1.2 ~/documents/projects/omniauth (master) $ be rake perf:ips Calculating ------------------------------------- ips 522 i/100ms ------------------------------------------------- ips 6155.8 (±9.3%) i/s - 30798 in 5.048455s ``` ## Memory Bench 100 requests without patch ``` allocated objects by gem ----------------------------------- hashie-3.3.1 x 6901 rack-1.5.2 x 5300 omniauth/lib x 3637 <==================== ruby-2.1.2/lib x 301 other x 300 ``` 100 requests with patch ``` allocated objects by gem ----------------------------------- rack-1.5.2 x 4800 hashie-3.3.1 x 4701 omniauth/lib x 1037 <==================== ruby-2.1.2/lib x 301 other x 300 ``` Results in `(3637 - 1037 )/ 3637.0 * 100 # => 71 %` less objects. |
||
---|---|---|
.. | ||
omniauth | ||
omniauth.rb |