Bug #6761

Slow hammer startup times (1.3+ seconds)

Added by Dominic Cleal over 3 years ago. Updated over 3 years ago.

Status:Closed
Priority:Normal
Assigned To:Tomáš Strachota
Category:Hammer core
Target version:Foreman - Sprint 27
Difficulty: Bugzilla link:1122810
Found in release: Pull request:https://github.com/theforeman/hammer-cli/pull/126
Story points-
Velocity based estimate-

Description

Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=1122810
Description of problem:
When running "hammer --help", it's taking in excess of 1.3 seconds. This makes it inefficient for use in a shell script, particularly when needing to retrieve IDs or run checks in other commands.

Version-Release number of selected component (if applicable):
rubygem-hammer_cli-0.1.1-5.el6sat
rubygem-hammer_cli_foreman-0.1.1-9.el6sat

How reproducible:
Always

Steps to Reproduce:
1. time hammer --help
2.
3.

Actual results:

= 1.3 seconds

Expected results:
< 0.5 seconds?

Associated revisions

Revision 4fbd36b4
Added by Tomas Strachota over 3 years ago

Fixes #6761 - lazy loaded subcommands

Revision 38372b55
Added by mbacovsky over 3 years ago

Merge pull request #126 from tstrachota/lazy_loading

Fixes #6761 - lazy loaded subcommands

Revision f2bf9992
Added by Tomas Strachota over 3 years ago

Fixes #6761 - lazy loaded subcommands

Revision 8032093f
Added by mbacovsky over 3 years ago

Merge pull request #139 from tstrachota/lazy_loading

Fixes #6761 - lazy loaded subcommands

History

#1 Updated by Dominic Cleal over 3 years ago

  • Category set to Hammer core
  • Priority changed from High to Normal

#2 Updated by Tomáš Strachota over 3 years ago

  • Target version set to Sprint 27

#3 Updated by Tomáš Strachota over 3 years ago

  • Status changed from New to Assigned
  • Assigned To set to Tomáš Strachota

#4 Updated by The Foreman Bot over 3 years ago

  • Status changed from Assigned to Ready For Testing
  • Pull request https://github.com/theforeman/hammer-cli/pull/126 added

#5 Updated by Tomáš Strachota over 3 years ago

Most time consuming turned out to be command and option definition that takes place at class level. Lazy loading of subcommands strips most of the unnecessary requires.

My measurements showed times slightly <0.5s for hammer -h (or around 0.8 when running in bundler).

https://github.com/theforeman/hammer-cli/pull/126
https://github.com/theforeman/hammer-cli-foreman/pull/139
https://github.com/Katello/hammer-cli-katello/pull/210

#6 Updated by Anonymous over 3 years ago

  • Status changed from Ready For Testing to Closed
  • % Done changed from 0 to 100

Also available in: Atom PDF