mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
ActiveModel::Serializer implementation and Rails hooks
```
$ bundle exec ruby benchmark.rb
-- create_table("comments", {:force=>:cascade})
-> 0.0127s
-- create_table("posts", {:force=>:cascade})
-> 0.0030s
-- create_table("users", {:force=>:cascade})
-> 0.0018s
Warming up --------------------------------------
ams 1.000 i/100ms
jsonapi-rb 4.000 i/100ms
ams eager 2.000 i/100ms
jsonapi-rb eager 9.000 i/100ms
Calculating -------------------------------------
ams 16.572 (± 1.4%) i/s - 164.000 in 10.003051s
jsonapi-rb 45.722 (± 0.9%) i/s - 460.000 in 10.084399s
ams eager 21.037 (± 0.8%) i/s - 212.000 in 10.099436s
jsonapi-rb eager 97.010 (± 1.3%) i/s - 972.000 in 10.069614s
with 95.0% confidence
Comparison:
jsonapi-rb eager: 97.0 i/s
jsonapi-rb : 45.7 i/s - 2.12x (± 0.03) slower
ams eager: 21.0 i/s - 4.61x (± 0.07) slower
ams : 16.6 i/s - 5.85x (± 0.11) slower
with 95.0% confidence
Calculating -------------------------------------
ams 3.793M memsize ( 185.000k retained)
44.737k objects ( 2.549k retained)
50.000 strings ( 40.000 retained)
jsonapi-rb 1.873M memsize ( 0.000 retained)
21.424k objects ( 0.000 retained)
50.000 strings ( 0.000 retained)
ams eager 2.923M memsize ( 180.848k retained)
34.285k objects ( 2.433k retained)
50.000 strings ( 46.000 retained)
jsonapi-rb eager 899.226k memsize ( 0.000 retained)
9.485k objects ( 0.000 retained)
50.000 strings ( 0.000 retained)
Comparison:
jsonapi-rb eager: 899226 allocated
jsonapi-rb : 1873384 allocated - 2.08x more
ams eager: 2922890 allocated - 3.25x more
ams : 3792800 allocated - 4.22x more
```
|
||
|---|---|---|
| benchmarks/serialization_libraries | ||
| .gitignore | ||
| CONTRIBUTING.md | ||
| MIT-LICENSE | ||
| README.md | ||
AMS Benchmarking
Benchmarks
Comparison with other Serialization Libraries
cd benchmarks/serialization_libraries
bundle install
bundle exec ruby benchmark.rb
yields
-- 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
See CONTRIBUTING.md