2016-01-12 12 views
10

Chạy đá quý được cài đặt chậm hơn nhiều so với chạy nguồn đối ứng cục bộ của nó.Đá quý được cài đặt chậm hơn nhiều so với nguồn

đá quý cài đặt:

$ time wmctile switch_to Thunderbird 

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

nguồn địa phương:

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

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

Tại sao? Nó có thể là do RVM, hay đây là một "tính năng" của đá quý ruby ​​nói chung? Có cách nào để tăng tốc nó không?

EDIT: tạo tập tin 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

Tôi chắc chắn có một số chi phí trong RVM tìm ra phiên bản ruby ​​hiện tại của bạn, định vị tệp nhị phân và thực thi nó. Tại sao không chỉ bí danh 'wmctile' trong bash_profile của bạn vào nguồn? – Anthony

+1

Đó là một đá quý phân tán có nghĩa là để được sử dụng bởi những người dùng khác, mà sẽ chỉ có đá quý, không phải là nguồn. – mreq

+1

@JesseSielaff Nó là ruby ​​nguyên chất. Vấn đề dường như nằm trong tệp được tạo, '/ usr/bin/env ruby_executable_hooks' có vẻ khá chậm. Tôi đã chỉnh sửa câu trả lời với nguồn của tệp bin được tạo. – mreq

Trả lời

0

RVM đặt các thư mục thích hợp cho phiên bản Ruby và gemset trong đường dẫn bất cứ khi nào ruby ​​RVM được thiết lập. PATH của tôi bắt đầu bằng cách này:

/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 

Vì vậy, tôi nghĩ rằng đó là hệ điều hành và bản thân Ruby không chịu trách nhiệm về sự chậm trễ. Bạn có thể kiểm tra điều này bằng cách đặt một tệp kịch bản lệnh shell đơn giản trong thư mục gem bin đó và gọi nó có và không có vị trí tuyệt đối của nó để xem bạn có nhận được sự khác biệt tương tự hay không.

Các vấn đề liên quan