2016-01-12 9 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 

क्यों? क्या यह आरवीएम की वजह से हो सकता है, या यह सामान्य रूप से रूबी रत्नों की "विशेषता" है? क्या इसे गति देने का कोई तरीका है?

संपादित करें: उत्पन्न बिन फ़ाइल

$ 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

मुझे यकीन है कि आरवीएम में कुछ ओवरहेड है जो रूबी के वर्तमान संस्करण को समझते हैं, बाइनरी का पता लगाते हैं और इसे निष्पादित करते हैं। स्रोत के लिए अपने bash_profile में केवल उपनाम 'wmctile' क्यों नहीं? – Anthony

+1

यह एक वितरित मणि है जिसका उपयोग अन्य उपयोगकर्ताओं द्वारा किया जाना है, जिसमें केवल मणि होगा, स्रोत नहीं। – mreq

+1

@ जेसेसेलाफ यह शुद्ध रूबी है। समस्या जेनरेट की गई फ़ाइल में प्रतीत होती है, '/ usr/bin/env ruby_executable_hooks' काफी धीमी प्रतीत होती है। मैंने जेनरेट की गई बिन फ़ाइल के स्रोत के साथ उत्तर संपादित किया है। – mreq

उत्तर

0

RVM रास्ते में अपने रूबी संस्करण और gemset के लिए उचित निर्देशिका डालता है जब भी rvm गहरे लाल रंग का सेट है। मेरा पाथ इस से शुरू होता है:

/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 

तो मुझे लगता है कि यह ओएस है और रूबी खुद ही देरी के लिए ज़िम्मेदार नहीं है। आप उस मणि बिन निर्देशिका में एक साधारण शेल स्क्रिप्ट फ़ाइल डालकर इसका परीक्षण कर सकते हैं, और यह देखने के लिए कि क्या आपको एक ही अंतर मिलता है, इसे बिना किसी पूर्ण स्थान के साथ कॉल किया जा रहा है।

संबंधित मुद्दे