2008-08-25 23 views
7

Tôi rất muốn phát triển ứng dụng Ruby đầu tiên của mình, vì công ty của tôi cuối cùng đã may mắn được sử dụng nội bộ của nó.Hiệu suất Ruby

Trong tất cả mọi thứ tôi đã đọc về Ruby lên v1.8, không bao giờ có bất cứ điều gì tích cực nói về hiệu suất, nhưng tôi đã không tìm thấy gì về phiên bản 1.9. Những con số cuối cùng tôi thấy khoảng 1.8 đã chậm hơn rất nhiều so với tất cả mọi thứ, vì vậy tôi hy vọng điều này đã được giải quyết trong 1.9.

Hiệu suất đã được cải thiện đáng kể chưa? Có một số điều cụ thể có thể được thực hiện với các ứng dụng Ruby (hoặc những thứ cần tránh) để giữ hiệu suất ở mức tốt nhất có thể không?

Trả lời

1

Tôi thực sự đã nghe những điều thực sự tốt về hiệu suất với việc triển khai JVM, JRuby. Hoàn toàn giai thoại, nhưng có lẽ đáng xem xét.

cũng Xem http://en.wikipedia.org/wiki/JRuby#Performance

2

Matz ruby ​​1.8.6 là chậm hơn nhiều khi nói đến hiệu suất và 1.9 và JRuby làm rất nhiều để tăng tốc độ nó lên. Nhưng hiệu suất không phải là như vậy mà nó sẽ ngăn cản bạn làm bất cứ điều gì bạn muốn trong một ứng dụng web. Có rất nhiều trang Ruby on Rails lớn chỉ làm việc tốt với ngôn ngữ "chậm hiểu". Khi bạn mở rộng ứng dụng web, có rất nhiều vấn đề về hiệu suất nhấn hơn tốc độ của ngôn ngữ bạn đang viết.

4

Nếu khả năng mở rộng và hiệu suất thực sự quan trọng đối với bạn, bạn cũng có thể xem Ruby Enterprise Edition. Đó là một cài đặt tùy chỉnh của trình thông dịch Ruby được cho là tốt hơn nhiều về phân bổ bộ nhớ và thu gom rác. Tôi đã không thấy bất kỳ số liệu khách quan nào so sánh nó trực tiếp với JRuby, nhưng tất cả bằng chứng mà tôi nghe nói đều rất tốt.

Đây là từ cùng một công ty đã tạo Passenger (aka mod_rails) mà bạn chắc chắn nên kiểm tra dưới dạng giải pháp triển khai đường ray nếu bạn quyết định không đi tuyến JRuby.

0

Check-out "Viết Efficient Mã Ruby" từ Addison Wesley Professional:

http://safari.oreilly.com/9780321540034

tôi thấy một số hiểu biết rất hữu ích và thú vị trong công việc ngắn này. Và nếu bạn đăng ký dùng thử miễn phí 10 ngày, bạn có thể đọc miễn phí. (Đó là 50 trang và thử nghiệm được bạn (AFAIR) 100 lượt xem.)

https://ssl.safaribooksonline.com/promo

0

Tôi không phải là một lập trình viên Ruby nhưng tôi đã được tham gia khá chặt chẽ trong việc triển khai JRuby thời gian gần đây và do đó có thể rút ra một số kết luận . Đừng mong đợi nhiều từ hiệu suất của JRuby. Trong chế độ diễn giải, nó có vẻ là một nơi nào đó trong phạm vi của C Ruby. Chế độ JIT có thể nhanh hơn, nhưng chỉ theo lý thuyết. Trong thực tế, chúng tôi đã thử chế độ JIT trên Glassfish cho một ứng dụng Rails có kích thước lớn trên một máy chủ cỡ trung (lõi kép, RAM 8GB). Và sự thật là, JITting mất quá freakingly nhiều thời gian, rằng máy chủ cần 20-30 phút trước khi nó trả lời yêu cầu đầu tiên. Sử dụng bộ nhớ là thiên văn, profiling không hoạt động bởi vì toàn bộ hệ thống được nghiền để dừng lại với một profiler đính kèm.Tóm lại: JRuby có thành tích của nó (đa luồng, nền tảng vững chắc, tích hợp Java dễ dàng), nhưng cho rằng chế độ diễn giải là chế độ duy nhất làm việc cho chúng tôi trong thực tế, nó có thể được mong đợi không có hiệu suất tốt hơn so với C Ruby.

-1

Tôi muốn đề xuất thứ hai về việc sử dụng Hành khách - nó giúp triển khai và quản lý các ứng dụng Rails tầm thường