Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RubyKaigi 2019 (Gel section)

Matthew Draper
April 18, 2019
1.9k

RubyKaigi 2019 (Gel section)

Supporting slides from the part of my RubyKaigi 2019 presentation that covered the feature limitations and observed performance of Gel, with comparisons to Bundler and Rubygems.

Matthew Draper

April 18, 2019
Tweet

Transcript


  1. View Slide

  2. install
    update, lock
    exec






    gem authoring
    ✅ ❌
    vendoring
    ✅ ❌
    ✅ ❌
    anything else

    View Slide

  3. Documentation
    UI and error messages
    Platform compatibility

    View Slide

  4. bundle install
    bundle lock
    bundle exec rake
    bundle update
    bundle update rails
    gel install
    gel lock
    gel exec rake
    rake
    gel update
    gel update rails

    View Slide

  5. ~% rake -V
    rake, version 12.3.2
    ~% rake -V
    rake, version 12.3.2
    ~/proj% bundle exec rake -V
    rake, version 12.3.0
    ~/proj% gel exec rake -V
    rake, version 12.3.0
    ~/proj% rake -V
    rake, version 12.3.2
    ~/proj% rake -V
    rake, version 12.3.0

    View Slide

  6. Numbers

    View Slide

  7. exec

    View Slide

  8. % rake --version
    rake, version 12.3.2
    0.18s user 0.10s system 92% cpu 0.301 total
    % rake --version
    rake, version 12.3.2
    0.12s user 0.08s system 92% cpu 0.217 total
    rubygems
    gel
    manual
    0 0.1 0.2 0.3 0.4

    View Slide

  9. % bundle exec rake --version
    rake, version 12.3.0
    0.49s user 0.18s system 93% cpu 0.712 total
    % gel exec rake --version
    rake, version 12.3.0
    0.18s user 0.11s system 88% cpu 0.323 total
    bundler
    gel
    manual
    0 0.2 0.4 0.6 0.8

    View Slide

  10. % bundle exec rails --version
    Rails 5.2.2.1
    0.97s user 0.34s system 98% cpu 1.335 total
    % gel exec rails --version
    Rails 5.2.2.1
    0.36s user 0.16s system 96% cpu 0.538 total
    bundler
    gel
    0 0.35 0.7 1.05 1.4

    View Slide

  11. % bundle exec rails runner nil
    6.08s user 3.00s system 99% cpu 9.139 total
    % gel exec rails runner nil
    4.01s user 0.94s system 98% cpu 4.994 total
    bundler
    gel
    0 2.5 5 7.5 10

    View Slide

  12. install

    View Slide

  13. ~/buildkite% bundle install -j4
    123 Gemfile dependencies, 224 gems now installed.
    215.19s user 74.12s system 83% cpu 5:46.91 total
    ~/buildkite% gel install
    Installed 223 gems
    255.75s user 74.45s system 208% cpu 2:38.29 total
    bundler
    gel
    0 100 200 300 400

    View Slide

  14. source "https://rubygems.org"
    gem "tty"

    View Slide

  15. GEM
    remote: https://rubygems.org/
    specs:
    diff-lcs (1.3)
    equatable (0.5.0)
    kramdown (1.16.2)
    necromancer (0.4.0)
    pastel (0.7.2)
    equatable (~> 0.5.0)
    tty-color (~> 0.4.0)
    rouge (3.3.0)
    strings (0.1.5)
    strings-ansi (~> 0.1)
    unicode-display_width (~> 1.5)
    unicode_utils (~> 1.4)
    strings-ansi (0.1.0)
    thor (0.20.3)
    timers (4.3.0)
    tty (0.9.1)
    bundler (~> 1.16, < 2.0)
    equatable (~> 0.5)
    pastel (~> 0.7.2)
    thor (~> 0.20.0)
    tty-box (~> 0.3.0)
    tty-color (~> 0.4)
    tty-command (~> 0.8.0)
    tty-config (~> 0.3.0)
    tty-cursor (~> 0.6)
    tty-editor (~> 0.5.0)
    tty-file (~> 0.7.0)
    tty-font (~> 0.2.0)
    tty-markdown (~> 0.5.0)
    tty-pager (~> 0.12.0)
    tty-pie (~> 0.1.0)
    tty-platform (~> 0.2.0)
    tty-progressbar (~> 0.16.0)
    tty-prompt (~> 0.18.0)
    tty-screen (~> 0.6)
    tty-spinner (~> 0.9.0)
    tty-table (~> 0.10.0)
    tty-tree (~> 0.2.0)
    tty-which (~> 0.4)
    tty-box (0.3.0)
    pastel (~> 0.7.2)
    strings (~> 0.1.4)
    tty-cursor (~> 0.6.0)
    tty-color (0.4.3)
    tty-command (0.8.2)
    pastel (~> 0.7.0)
    tty-config (0.3.1)
    tty-cursor (0.6.1)
    tty-editor (0.5.0)
    tty-prompt (~> 0.18)
    tty-which (~> 0.4)
    tty-file (0.7.0)
    diff-lcs (~> 1.3)
    pastel (~> 0.7.2)
    tty-prompt (~> 0.18)
    tty-font (0.2.0)
    tty-markdown (0.5.1)
    kramdown (~> 1.16.2)
    pastel (~> 0.7.2)
    rouge (~> 3.3)
    strings (~> 0.1.4)
    tty-color (~> 0.4)
    tty-screen (~> 0.6)
    tty-pager (0.12.1)
    strings (~> 0.1.4)
    tty-screen (~> 0.6)
    tty-which (~> 0.4)
    tty-pie (0.1.0)
    pastel (~> 0.7.2)
    tty-cursor (~> 0.6.0)
    tty-platform (0.2.0)
    tty-progressbar (0.16.0)
    strings-ansi (~> 0.1.0)
    tty-cursor (~> 0.6.0)
    tty-screen (~> 0.6.4)
    unicode-display_width (~> 1.3)
    tty-prompt (0.18.1)
    necromancer (~> 0.4.0)
    pastel (~> 0.7.0)
    timers (~> 4.0)
    tty-cursor (~> 0.6.0)
    tty-reader (~> 0.5.0)
    tty-reader (0.5.0)
    tty-cursor (~> 0.6.0)
    tty-screen (~> 0.6.4)
    wisper (~> 2.0.0)
    tty-screen (0.6.5)
    tty-spinner (0.9.0)
    tty-cursor (~> 0.6.0)
    tty-table (0.10.0)
    equatable (~> 0.5.0)
    necromancer (~> 0.4.0)
    pastel (~> 0.7.2)
    strings (~> 0.1.0)
    tty-screen (~> 0.6.4)
    tty-tree (0.2.0)
    tty-which (0.4.0)
    unicode-display_width (1.5.0)
    unicode_utils (1.4.0)
    wisper (2.0.0)
    PLATFORMS
    ruby
    DEPENDENCIES
    tty
    BUNDLED WITH
    1.17.1

    View Slide

  16. ~/tty% bundle install -j4
    1 Gemfile dependency, 23 gems now installed.
    2.61s user 1.02s system 83% cpu 4.352 total
    ~/tty% gel install
    Installed 23 gems
    0.62s user 0.53s system 87% cpu 1.327 total
    bundler
    gel
    0 1.25 2.5 3.75 5

    View Slide

  17. lock

    View Slide

  18. Gemfile
    Gemfile.lock
    install

    View Slide

  19. ~/tty% bundle lock
    1.10s user 0.32s system 90% cpu 1.562 total
    ~/tty% gel lock
    0.75s user 0.13s system 85% cpu 1.032 total
    bundler
    gel
    0 0.4 0.8 1.2 1.6

    View Slide

  20. buildkite% rm Gemfile.lock && bundle lock
    Fetching https://github.com/buildkite/zxcvbn-ruby.git
    Fetching https://github.com/buildkite/pghero.git
    Fetching https://github.com/buildkite/simplecov.git
    Fetching https://github.com/ticky/simplecov-buildkite.git
    Fetching source index from https://gems.graphql.pro/
    Fetching source index from https://enterprise.contribsys.com/
    Fetching gem metadata from https://rubygems.org/.
    Fetching source index from https://rubygems.org/
    Resolving dependencies...
    Writing lockfile to ./Gemfile.lock
    bundle lock 14.30s user 1.98s system 18% cpu 1:29.67 total
    ........
    ...................

    View Slide

  21. buildkite% rm Gemfile.lock && gel lock
    Fetching sources...
    Resolving dependencies...
    Writing lockfile to ./Gemfile.lock
    gel lock 2.77s user 0.60s system 78% cpu 4.316 total
    .......
    ..........

    View Slide

  22. ~/buildkite% bundle lock
    14.30s user 1.98s system 18% cpu 1:29.67 total
    ~/buildkite% gel lock
    2.77s user 0.60s system 78% cpu 4.316 total
    bundler
    gel
    0 30 60 90 120

    View Slide

  23. ~/buildkite% bundle lock
    14.66s user 2.10s system 15% cpu 1:51.15 total
    ~/buildkite% gel lock
    9.42s user 1.99s system 46% cpu 24.400 total
    bundler
    gel
    0 30 60 90 120
    (no cache / first run)

    View Slide

  24. source "https://rubygems.org"
    gem "activerecord"
    gem "quiet_assets"

    View Slide

  25. quiet_assets
    railties >= 3.1, < 5.0
    activesupport >= 3.1, < 5.0
    activerecord
    activesupport
    quiet_assets 1.1.0
    railties 4.2.11.1
    activesupport 4.2.11.1
    activerecord 4.2.11.1

    View Slide

  26. ~/quiet% bundle lock
    120.18s user 1.10s system 99% cpu 2:02.42 total
    ~/quiet% gel lock
    4.18s user 0.17s system 96% cpu 4.494 total
    bundler
    gel
    0 35 70 105 140

    View Slide