2016-01-12 15 views
10

L'esecuzione di una gemma installata è molto più lenta rispetto all'esecuzione della controparte di origine locale.Gemma installata molto più lenta della sorgente

gemma installata:

$ time wmctile switch_to Thunderbird 

real 0m0.682s 
user 0m0.491s 
sys 0m0.091s 

sorgente locale:

$ time ./work/wmctile/bin/wmctile switch_to Thunderbird 

real 0m0.197s 
user 0m0.118s 
sys 0m0.064s 

Perché? Potrebbe essere a causa di RVM, o è questa una "caratteristica" di gemme di rubino in generale? C'è un modo per accelerarlo?

EDIT: file generato bin

$ which wmctile 
/home/some_user_name/.rvm/gems/ruby-2.1.2/bin/wmctile 

$ cat $(which wmctile) 
#!/usr/bin/env ruby_executable_hooks 
# 
# This file was generated by RubyGems. 
# 
# The application 'wmctile' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'rubygems' 

version = ">= 0" 

if ARGV.first 
    str = ARGV.first 
    str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding 
    if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then 
    version = $1 
    ARGV.shift 
    end 
end 

gem 'wmctile', version 
load Gem.bin_path('wmctile', 'wmctile', version) 
+2

Sono sicuro che c'è un sovraccarico in RVM per capire la tua versione attuale di ruby, localizzare il file binario ed eseguirlo. Perché non basta l'alias 'wmctile' nel tuo bash_profile all'origine? – Anthony

+1

È una gemma distribuita destinata ad essere utilizzata da altri utenti, che avrebbe solo la gemma, non la fonte. – mreq

+1

@JesseSielaff È puro rubino. Il problema sembra essere nel file generato, '/ usr/bin/env ruby_executable_hooks' sembra essere piuttosto lento. Ho modificato la risposta con la fonte del file bin generato. – mreq

risposta

0

RVM mette le directory appropriate per la versione di Ruby e GemSET nel percorso ogni volta che viene impostato il rubino rvm. Il mio PERCORSO inizia con questo:

/Users/kbennett/.rvm/gems/ruby-2.3.0/bin 
/Users/kbennett/.rvm/gems/[email protected]/bin 
/Users/kbennett/.rvm/rubies/ruby-2.3.0/bin 
/Users/kbennett/.rvm/bin 

Quindi penso che sia il sistema operativo e non lo stesso Ruby responsabile del ritardo. Potresti testare questo mettendo un semplice file script di shell nella directory gem bin e chiamandolo con e senza la sua posizione assoluta per vedere se ottieni la stessa differenza.

Problemi correlati