Das Ausführen eines installierten Gems ist viel langsamer als das Ausführen des lokalen Quellengegenstücks.Installiertes Juwel viel langsamer als die Quelle
Installed gem:
$ time wmctile switch_to Thunderbird
real 0m0.682s
user 0m0.491s
sys 0m0.091s
Lokale Quelle:
$ time ./work/wmctile/bin/wmctile switch_to Thunderbird
real 0m0.197s
user 0m0.118s
sys 0m0.064s
Warum? Könnte es wegen RVM sein, oder ist das ein "Feature" von Ruby Gems im Allgemeinen? Gibt es eine Möglichkeit, es zu beschleunigen?
EDIT: erzeugte bin-Datei
$ 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)
Ich bin sicher, es gibt einige Overhead in RVM herauszufinden, Ihre aktuelle Version von Ruby, die Binärdatei suchen und ausführen. Warum nicht einfach "wmctile" in Ihrem bash_profile an die Quelle anhängen? – Anthony
Es ist ein verteiltes Juwel, das von anderen Benutzern verwendet werden soll und nur das Juwel und nicht die Quelle haben würde. – mreq
@JesseSielaff Es ist reiner Rubin. Das Problem scheint in der generierten Datei zu liegen, '/ usr/bin/env ruby_executable_hooks' scheint ziemlich langsam zu sein. Ich habe die Antwort mit der Quelle der generierten Bin-Datei bearbeitet. – mreq