2016-01-12 3 views
10

Запуск установленного драгоценного камня происходит намного медленнее, чем запуск его локального источника.Установленный драгоценный камень намного медленнее источника

Установленная перл:

$ time wmctile switch_to Thunderbird 

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

Локальный источник:

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

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

Почему? Может быть, из-за RVM, или это «особенность» рубиновых камней в целом? Есть ли способ ускорить его?

EDIT: генерироваться бен файл

$ 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

Я уверен, что в RVM есть некоторые накладные расходы, выясняя вашу текущую версию ruby, найдите бинарный файл и выполнив его. Почему не просто псевдоним 'wmctile' в вашем файле bash_profile для источника? – Anthony

+1

Это распределенный драгоценный камень, предназначенный для использования другими пользователями, у которого будет только драгоценный камень, а не источник. – mreq

+1

@JesseSielaff Это чистый рубин. Проблема, кажется, в сгенерированном файле, '/ usr/bin/env ruby_executable_hooks' выглядит довольно медленно. Я отредактировал ответ с источником сгенерированного файла bin. – mreq

ответ

0

РВМ помещает соответствующие каталоги для вашей версии Ruby, и gemset на пути всякий раз, когда РВМ рубин установлен. Мой путь начинается с этого:

/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 

Так что я думаю, что это ОС, а не Ruby себя, что несет ответственность за задержку. Вы можете протестировать это, поставив простой файл сценария оболочки в этот каталог gem bin и называя его без его абсолютного местоположения, чтобы узнать, получаете ли вы ту же разницу.

Смежные вопросы