2011-01-07 24 views
24

Tôi đang sử dụng đường ray Phiên bản 3.0.3 và phiên bản ruby ​​1.9.2p136 (2010-12-15) trên Intel Core 2 Duo 2,6 Ghz với 4 GB Ram và Windows Vista Business SP2 không có ứng dụng nào khác (nặng) đang chạy. Tôi đã đọc rằng phát triển đường ray trên Windows là chậm hơn so với trên Unices và hầu hết mọi người làm ở đó không khuyên bạn nên nó nhưng điều này là ngớ ngẩn.Đường ray trên Windows quá chậm (đường ray -v mất 4 giây)

Tôi không thể nghĩ ra bất kỳ lý do chính đáng nào để sử dụng 4 giây để hiển thị số phiên bản đơn giản. Và đường ray tạo ra nhu cầu lên đến 10 giây để hoàn thành!

Nội dung nào đó trong thiết lập của tôi phải sai (ít nhất là tôi hy vọng).

Có ai đó là một ý tưởng hay về cách tiến hành không? Cảm ơn trước!

+2

Windows là được tối ưu hóa rất nhiều cho khả năng tương thích ngược và danh sách tính năng. Không dành cho hiệu suất của các ngôn ngữ kịch bản lệnh được nhập động, được giải thích, được tải thời gian chạy. Sử dụng Linux. Bạn có thể chạy Linux trong một cửa sổ trong Windows nếu bạn sử dụng VirtualBox. – yfeldblum

+3

Sau một vài tháng chiến đấu với Rails trên Windows, tôi đang sử dụng Ubuntu trong VirtualBox. Đã tuyệt vời cho đến nay. Nhưng tôi hoàn toàn đồng ý rằng nó là vô lý mà người dùng Windows thường ra ngoài trong lạnh khi nói đến Rails và đến một mức độ thấp hơn Ruby. – Zabba

+0

Và, tôi lưu trữ tất cả các công cụ Rails trong máy ảo Ubuntu, nhưng tất cả các mã được lưu trữ trong máy chủ Windows và tất cả các chỉnh sửa là trên Windows. – Zabba

Trả lời

20

Có một vài điểm chính kết hợp tạo ra hiệu suất chậm mà bạn nhận thấy.

  • Hiệu suất IO của Ruby (trên bất kỳ phiên bản nào) chậm hơn 3 lần so với đối tác Linux. Điều này là do một số bước nhảy chưa được tối ưu hóa trong codebase Windows của Ruby. Điều này đòi hỏi phải phân tích sâu hơn, điều tra và tối ưu hóa không được thực hiện cho đến ngày hôm nay.
  • Ruby 1.9.2 tạo ra một số yêu cầu stat() cuộc gọi cho mỗi tệp, điều này có thể làm tăng sự chậm lại của Ruby. Điều này không có trong Ruby 1.8.6 hoặc 1.8.7. Điều này cũng được giải quyết trong Ruby 1.9.3 (trunk) chưa được phát hành.
  • Các dự án như Rails yêu cầu khoảng 500 tệp, kết hợp với các điểm trên làm cho Ruby cho Windows rất nhiều người xem.

Bây giờ, có cách giải quyết cho điều đó, một số đơn giản và một số phức tạp.

  1. Quay lại Ruby 1.8.7 thay vì Ruby 1.9.2. Điều đó sẽ mang lại một mức độ nhất định của tốc độ cho ứng dụng của bạn. Trừ khi bạn đang tận dụng lợi thế của hỗ trợ Unicode, sau đó 1.8.7 có thể làm việc cho bạn.
  2. Xem các công cụ như Spork để cung cấp kịch bản/forking cho RSpec/Cucumber
  3. Di chuyển phát triển của bạn sang RAM, sử dụng RAMDisk như ImDisk. Di chuyển cả Ruby và ứng dụng của bạn vào đó và thời gian tải sẽ bị giảm (điều này cũng liên quan đến RAM sẵn có của bạn)

Hy vọng một số tùy chọn này sẽ giúp bạn.

+0

Sử dụng 1.8.7 giảm thời gian cho "rails -v" dưới một giây. Nó thực sự nhanh hơn. Cám ơn. – user331471

+1

Chỉ để lưu người mới một thời gian: ImDisk có thể không có bất kỳ ảnh hưởng nào đến số của bạn trên Ruby 1.9.3. Chúng tôi có một bộ kiểm tra mất 100 giây trên Linux, họ vẫn mất hơn 2 nghìn giây trên Windows, đĩa ram hoặc không có đĩa ram. – Jason

+0

@Jonon những cải tiến được đề cập là về thời gian khởi động, không phải thời gian chạy. Nếu kiểm tra của bạn quá I/O bị ràng buộc (mạng, cơ sở dữ liệu, vv) thì họ vẫn sẽ mất nhiều thời gian để hoàn thành). May mắn thay, Ruby 2.0 đã có bản vá hiệu suất để khởi động sẽ nhanh hơn. –

0

Nhiều khả năng, tính năng chống vi-rút ảnh hưởng đến nó. Điều đó kết hợp với các vấn đề tốc độ của Vista có thể ảnh hưởng đến nó. Tôi đồng ý với Tư pháp, chạy Linux trong máy ảo.

+0

Cảm ơn. Nó sẽ mang lại một số cứu trợ nếu tôi sẽ chuyển sang Windows 7? Tôi chỉ muốn chơi xung quanh một chút và do đó là một chút overkill để cài đặt một ubuntu đầy đủ. Tôi sẽ xem xét điều này nếu lập trình của tôi đang trở nên nghiêm túc. :-) – user331471

+1

Có thể, như Windows 7 chắc chắn là khá nhanh hơn một chút. – jschorr

+0

Điều này đúng! Trong khi nó không giải quyết vấn đề hoàn toàn, vô hiệu hóa các antivirus chắc chắn tăng tốc độ đường ray một chút. Đặc biệt là tạo ra các lệnh chậm như địa ngục và bây giờ là chấp nhận được. –

0

Đối với một tăng tốc bạn có thể thử Speeder loader của tôi trên (giúp đường ray chạy nhanh hơn trong Windows): https://github.com/rdp/faster_require

Cũng Spork thanh toán, hoạt động trong Windows, và JRuby cũng hoạt động tốt.

0

bạn có thể thử chơi với collecter rác ruby ​​để làm cho ruby ​​nhanh hơn, vì giá trị mặc định cài đặt đa dạng không phù hợp với cách các cửa sổ làm việc thấy here có thể nó sẽ giúp một chút

cũng Garbage collector performance tuning

6

Đó là nhanh hơn để sử dụng Ruby bên trong Máy ảo Ubuntu hơn là sử dụng nó trực tiếp với Windows.

Một tùy chọn tốt là sử dụng Vagrant: Bạn phát triển trên Windows IDE của bạn và các tệp được "chia sẻ" với máy ảo Ubuntu, bạn chạy "vagder ssh", sau đó chạy "rails server" hoặc bất kỳ lệnh nào khác bạn ' muốn chạy. Ngoài ra còn có các lợi ích khác:

  • Bạn không cần cài đặt RVM hoặc chuyển đổi các phiên bản Ruby, chỉ cần sử dụng máy ảo cho từng dự án. VM có thể nhỏ, như 500MB dữ liệu, sử dụng lên đến 100MB RAM, nhưng YMMV
  • Bạn không cần phải lo lắng về khả năng tương thích đá quý của với Windows

Hãy xem: http://www.vagrantup.com/

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