Project

oriole

0.0
No release in over a year
A fast GraphQL engine written in pure Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 2.4.10
~> 5.0
~> 13.0

Runtime

~> 0.1.4
~> 2.6
 Project Readme

oriole

Warning This is very scrappy and incomplete

Benchmark

Parse + Execute (Ruby 3.2, YJIT enabled)
Profiling IPS:
Warming up --------------------------------------
   oriole_visibility   362.000  i/100ms
oriole_no_visibility   488.000  i/100ms
             bluejay     1.766k i/100ms
Calculating -------------------------------------
   oriole_visibility      3.682k (± 2.3%) i/s -     18.462k in   5.017324s
oriole_no_visibility      4.992k (± 1.3%) i/s -     25.376k in   5.083988s
             bluejay     18.240k (± 3.1%) i/s -     91.832k in   5.039693s

Comparison:
             bluejay:    18239.9 i/s
oriole_no_visibility:     4992.3 i/s - 3.65x  slower
   oriole_visibility:     3681.7 i/s - 4.95x  slower

Profiling Ruby memory allocations:
Calculating -------------------------------------
   oriole_visibility    22.648k memsize (   120.000  retained)
                       264.000  objects (     2.000  retained)
                        15.000  strings (     0.000  retained)
oriole_no_visibility    12.656k memsize (     4.000k retained)
                       166.000  objects (    56.000  retained)
                        14.000  strings (    12.000  retained)
             bluejay     5.256k memsize (     5.056k retained)
                        40.000  objects (    35.000  retained)
                         0.000  strings (     0.000  retained)

Comparison:
             bluejay:       5256 allocated
oriole_no_visibility:      12656 allocated - 2.41x more
   oriole_visibility:      22648 allocated - 4.31x more
Parse + Execute (Ruby 3.2, YJIT disabled)
Profiling IPS:
Warming up --------------------------------------
   oriole_visibility   234.000  i/100ms
oriole_no_visibility   323.000  i/100ms
             bluejay     1.804k i/100ms
Calculating -------------------------------------
   oriole_visibility      2.403k (± 3.3%) i/s -     12.168k in   5.069266s
oriole_no_visibility      3.274k (± 1.9%) i/s -     16.473k in   5.033067s
             bluejay     18.418k (± 2.1%) i/s -     93.808k in   5.095735s

Comparison:
             bluejay:    18417.7 i/s
oriole_no_visibility:     3274.2 i/s - 5.63x  slower
   oriole_visibility:     2403.1 i/s - 7.66x  slower

Profiling Ruby memory allocations:
Calculating -------------------------------------
   oriole_visibility    22.648k memsize (     7.680k retained)
                       264.000  objects (   104.000  retained)
                        15.000  strings (    12.000  retained)
oriole_no_visibility    12.656k memsize (     4.960k retained)
                       166.000  objects (    63.000  retained)
                        14.000  strings (    12.000  retained)
             bluejay     5.256k memsize (     5.056k retained)
                        40.000  objects (    35.000  retained)
                         0.000  strings (     0.000  retained)

Comparison:
             bluejay:       5256 allocated
oriole_no_visibility:      12656 allocated - 2.41x more
   oriole_visibility:      22648 allocated - 4.31x more