From 5ca3e9691498235e4d3c43571f4f2c3af32854dd Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Thu, 12 Oct 2017 15:25:57 -0500 Subject: [PATCH] Fix JSONAPI:Serializer test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ``` $ bundle exec ruby benchmark.rb -- create_table("comments", {:force=>:cascade}) -> 0.0066s -- create_table("posts", {:force=>:cascade}) -> 0.0029s -- create_table("users", {:force=>:cascade}) -> 0.0017s Warming up -------------------------------------- ams 2.000 i/100ms jsonapi-rb 7.000 i/100ms ams eager 2.000 i/100ms jsonapi-rb eager 12.000 i/100ms Calculating ------------------------------------- ams 20.397 (± 1.7%) i/s - 204.000 in 10.097255s jsonapi-rb 74.981 (± 0.8%) i/s - 756.000 in 10.100857s ams eager 23.117 (± 0.6%) i/s - 232.000 in 10.047664s jsonapi-rb eager 125.521 (± 0.8%) i/s - 1.260k in 10.054734s with 95.0% confidence Comparison: jsonapi-rb eager: 125.5 i/s jsonapi-rb : 75.0 i/s - 1.67x (± 0.02) slower ams eager: 23.1 i/s - 5.43x (± 0.05) slower ams : 20.4 i/s - 6.15x (± 0.12) slower with 95.0% confidence Calculating ------------------------------------- ams 2.688M memsize ( 188.498k retained) 33.331k objects ( 2.554k retained) 50.000 strings ( 50.000 retained) jsonapi-rb 1.038M memsize ( 0.000 retained) 11.784k objects ( 0.000 retained) 50.000 strings ( 0.000 retained) ams eager 2.470M memsize ( 184.410k retained) 30.534k objects ( 2.439k retained) 50.000 strings ( 50.000 retained) jsonapi-rb eager 715.124k memsize ( 0.000 retained) 7.500k objects ( 0.000 retained) 50.000 strings ( 0.000 retained) Comparison: jsonapi-rb eager: 715124 allocated jsonapi-rb : 1037676 allocated - 1.45x more ams eager: 2469640 allocated - 3.45x more ams : 2688112 allocated - 3.76x more ``` --- README.md | 51 ++++++++++++++++++- .../support/bench_helper.rb | 4 +- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fa198daa..38d0e126 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,61 @@ ### Comparison with other Serialization Libraries -``` +```bash cd benchmarks/serialization_libraries bundle install bundle exec ruby benchmark ``` +yields + +```plain +-- create_table("comments", {:force=>:cascade}) + -> 0.0066s +-- create_table("posts", {:force=>:cascade}) + -> 0.0029s +-- create_table("users", {:force=>:cascade}) + -> 0.0017s +Warming up -------------------------------------- + ams 2.000 i/100ms + jsonapi-rb 7.000 i/100ms + ams eager 2.000 i/100ms + jsonapi-rb eager 12.000 i/100ms +Calculating ------------------------------------- + ams 20.397 (± 1.7%) i/s - 204.000 in 10.097255s + jsonapi-rb 74.981 (± 0.8%) i/s - 756.000 in 10.100857s + ams eager 23.117 (± 0.6%) i/s - 232.000 in 10.047664s + jsonapi-rb eager 125.521 (± 0.8%) i/s - 1.260k in 10.054734s + with 95.0% confidence + +Comparison: + jsonapi-rb eager: 125.5 i/s + jsonapi-rb : 75.0 i/s - 1.67x (± 0.02) slower + ams eager: 23.1 i/s - 5.43x (± 0.05) slower + ams : 20.4 i/s - 6.15x (± 0.12) slower + with 95.0% confidence + +Calculating ------------------------------------- + ams 2.688M memsize ( 188.498k retained) + 33.331k objects ( 2.554k retained) + 50.000 strings ( 50.000 retained) + jsonapi-rb 1.038M memsize ( 0.000 retained) + 11.784k objects ( 0.000 retained) + 50.000 strings ( 0.000 retained) + ams eager 2.470M memsize ( 184.410k retained) + 30.534k objects ( 2.439k retained) + 50.000 strings ( 50.000 retained) + jsonapi-rb eager 715.124k memsize ( 0.000 retained) + 7.500k objects ( 0.000 retained) + 50.000 strings ( 0.000 retained) + +Comparison: + jsonapi-rb eager: 715124 allocated + jsonapi-rb : 1037676 allocated - 1.45x more + ams eager: 2469640 allocated - 3.45x more + ams : 2688112 allocated - 3.76x more + +``` ## Contributing diff --git a/benchmarks/serialization_libraries/support/bench_helper.rb b/benchmarks/serialization_libraries/support/bench_helper.rb index 2eba2b37..9ad2ab8c 100644 --- a/benchmarks/serialization_libraries/support/bench_helper.rb +++ b/benchmarks/serialization_libraries/support/bench_helper.rb @@ -52,10 +52,10 @@ module BenchHelper end def render_with_jsonapi_rb(data) - JSONAPI::Serializable::SuccessRenderer.new.render( + JSONAPI::Serializable::Renderer.new.render( data, include: 'posts.comments', - class: SerializableUser + class: { User: SerializableUser, Post: SerializablePost, Comment: SerializableComment } ) end end