Tại sao mọi người nói rằng Ruby chậm? [đóng cửa]


184

Tôi thích Ruby on Rails và tôi sử dụng nó cho tất cả các dự án phát triển web của mình. Một vài năm trước đây đã có rất nhiều thảo luận về Rails là một con heo bộ nhớ và khoảng cách không quy mô rất tốt nhưng các đề xuất này đã được đưa vào giường bởi Gregg Pollack đây .

Gần đây, tôi đã nghe mọi người nói rằng chính Ruby là chậm.

  • Tại sao Ruby được coi là chậm?

Tôi không thấy Ruby bị chậm nhưng một lần nữa, tôi chỉ sử dụng nó để tạo các ứng dụng CRUD đơn giản và blog của công ty. Những loại dự án nào tôi cần phải thực hiện trước khi tôi thấy Ruby trở nên chậm chạp? Hay sự chậm chạp này chỉ là thứ gì đó ảnh hưởng đến tất cả các ngôn ngữ lập trình?

  • Lựa chọn của bạn là một lập trình viên Ruby là gì nếu bạn muốn đối phó với "sự chậm chạp" này?

  • Phiên bản nào của Ruby phù hợp nhất với một ứng dụng như Stack Overflow nơi tốc độ rất quan trọng và lưu lượng truy cập rất cao?

Các câu hỏi mang tính chủ quan và tôi nhận ra rằng thiết lập kiến ​​trúc (EC2 so với máy chủ độc lập, v.v.) tạo ra sự khác biệt lớn nhưng tôi muốn nghe mọi người nghĩ gì về Ruby bị chậm.

Cuối cùng, tôi không thể tìm thấy nhiều tin tức về Ruby 2.0 - Tôi có nghĩ rằng chúng ta sẽ cách đó vài năm không?


1
có thể trùng lặp những gì làm cho Ruby chậm?
Nakilon

youtube.com/ Nhật Ruby2.1
Nithin

ngoài câu trả lời tuyệt vời, không ai trong số họ thực sự trả lời TẠI SAO. những hiểu biết tốt hơn là trong câu hỏi liên quan được đề cập bởi Nakilon
Andre Figueiredo

Câu trả lời:


184

Tại sao Ruby được coi là chậm?

Bởi vì nếu bạn chạy điểm chuẩn điển hình giữa Ruby và các ngôn ngữ khác, Ruby sẽ thua.

Tôi không thấy Ruby bị chậm nhưng một lần nữa, tôi chỉ sử dụng nó để tạo các ứng dụng CRUD đơn giản và blog của công ty. Những loại dự án nào tôi cần phải thực hiện trước khi tôi thấy Ruby trở nên chậm chạp? Hay sự chậm chạp này chỉ là thứ gì đó ảnh hưởng đến tất cả các ngôn ngữ lập trình?

Ruby có thể sẽ không phục vụ bạn tốt khi viết một ứng dụng xử lý tín hiệu số thời gian thực hoặc bất kỳ loại hệ thống điều khiển thời gian thực nào. Ruby (với các máy ảo ngày nay) có thể sẽ bị nghẹt thở trên một máy tính bị hạn chế tài nguyên như điện thoại thông minh.

Hãy nhớ rằng rất nhiều việc xử lý trên các ứng dụng web của bạn thực sự được thực hiện bởi phần mềm được phát triển trong C. ví dụ: Apache, Thin, Nginx, SQLite, MySQL, PostgreQuery, nhiều thư viện phân tích cú pháp, RMagick, TCP / IP, v.v. . Ruby cung cấp keo và logic kinh doanh.

Lựa chọn của bạn là một lập trình viên Ruby là gì nếu bạn muốn đối phó với "sự chậm chạp" này?

Chuyển sang ngôn ngữ nhanh hơn. Nhưng điều đó mang một chi phí. Đó là một chi phí có thể có giá trị nó. Nhưng đối với hầu hết các ứng dụng web, lựa chọn ngôn ngữ không phải là một yếu tố có liên quan vì không có đủ lưu lượng truy cập biện minh cho việc sử dụng ngôn ngữ nhanh hơn có chi phí cao hơn nhiều để phát triển.

Phiên bản nào của Ruby phù hợp nhất với một ứng dụng như Stack Overflow nơi tốc độ rất quan trọng và lưu lượng truy cập rất cao?

Những người khác đã trả lời điều này - JRuby, IronRuby, REE sẽ làm cho phần Ruby trong ứng dụng của bạn chạy nhanh hơn trên các nền tảng có thể chi trả cho VM. Và vì thường không phải Ruby gây ra sự chậm chạp, mà là kiến ​​trúc hệ thống máy tính và kiến ​​trúc ứng dụng của bạn, bạn có thể thực hiện các công việc như sao chép cơ sở dữ liệu, nhiều máy chủ ứng dụng, cân bằng tải với proxy ngược, bộ nhớ cache HTTP, memcache, Ajax, bộ nhớ đệm phía máy khách, v.v. Không có thứ gì trong số này là Ruby.

Cuối cùng, tôi không thể tìm thấy nhiều tin tức về Ruby 2.0 - Tôi có nghĩ rằng chúng ta sẽ cách đó vài năm không?

Hầu hết mọi người đang chờ đợi Ruby 1.9.1. Bản thân tôi đang chờ Rails 3.1 trên Ruby 1.9.1 trên JRuby.

Cuối cùng, xin nhớ rằng rất nhiều nhà phát triển chọn Ruby vì nó giúp lập trình trải nghiệm vui vẻ hơn so với các ngôn ngữ khác và vì Ruby with Rails cho phép các nhà phát triển web lành nghề phát triển ứng dụng rất nhanh.


3
Sau khi xem xét nhiều, tôi đã quyết định rằng đây là câu trả lời tốt nhất. Cảm ơn, tôi thích sự tương tự về ứng dụng xử lý tín hiệu. Bây giờ dễ dàng hơn để xem những gì mọi người đang nói về sau những câu trả lời hữu ích này.
stephenmurdoch

1
Vâng, bạn đã ở cách ruby ​​2 vài năm, Ruby 2.0.0 Phát hành vào ngày 24 tháng 2 năm 2013
Morgan

3
Kinh nghiệm của tôi khi sử dụng Ruby 2.1 là nó nhanh hơn khoảng 25% so với cùng một ứng dụng đang chạy trong Ruby 2.0
Matt Connolly

14
Ngôn ngữ không chậm hay nhanh, việc triển khai, phiên dịch và trình biên dịch của chúng là :)
Zelphir Kaltstahl

122

Trước hết, chậm hơn đối với những gì ? C? Con trăn? Chúng ta hãy lấy một số số tại Trò chơi Điểm chuẩn Ngôn ngữ Máy tính :

Tại sao Ruby được coi là chậm?

Phụ thuộc vào người mà bạn yêu cầu. Bạn có thể được nói rằng:

  • Ruby là một ngôn ngữ được dịch và các ngôn ngữ được dịch sẽ có xu hướng chậm hơn các ngôn ngữ được biên dịch
  • Ruby sử dụng bộ sưu tập rác (mặc dù C #, cũng sử dụng bộ sưu tập rác, đưa ra hai bậc độ lớn trước Ruby, Python, PHP, v.v. trong các tiêu chuẩn chuẩn hơn, ít phân bổ bộ nhớ hơn ở trên thuật toán)
  • Các cuộc gọi phương thức Ruby rất chậm (mặc dù, do gõ vịt, chúng được cho là nhanh hơn so với các ngôn ngữ được gõ mạnh)
  • Ruby (ngoại trừ JRuby) không hỗ trợ đa luồng thực sự
  • Vân vân.

Nhưng, sau đó một lần nữa, chậm đối với những gì? Ruby 1.9 nhanh như Python và PHP (trong hệ số hiệu suất 3x) khi so sánh với C (có thể nhanh hơn tới 300 lần), do đó, ở trên (ngoại trừ các cân nhắc về luồng, ứng dụng của bạn phụ thuộc nhiều vào khía cạnh này ) phần lớn là học thuật.

Lựa chọn của bạn là một lập trình viên Ruby là gì nếu bạn muốn đối phó với "sự chậm chạp" này?

Viết cho khả năng mở rộng và ném thêm phần cứng vào nó (ví dụ như bộ nhớ)

Phiên bản nào của Ruby phù hợp nhất với một ứng dụng như Stack Overflow nơi tốc độ rất quan trọng và lưu lượng truy cập rất cao?

Chà, REE (kết hợp với Hành khách ) sẽ là một ứng cử viên rất tốt.


1
Bản thân bộ sưu tập rác không nhất thiết phải chậm, nhưng bộ sưu tập rác của MRI thì có. Nếu bạn cần Ruby nhanh hơn, bạn cũng có thể nhìn vào JRuby cũng như REE.
Andreas

1
@igouy, Đúng, giữa năm 2008 có thể là cực kỳ. Tôi đã cập nhật các liên kết, nhưng chúng sẽ lần lượt trở nên lỗi thời trong một vài tháng. :) Dù bằng cách nào, phần cứng và một số bản vá có thể khác nhau, và một vài thử nghiệm bổ sung đã được thêm vào, nhưng bức tranh lớn hơn về mọi thứ không thay đổi.
vladr

11
>> trong cùng một thứ tự cường độ << Nó nằm trong cùng một thứ tự cường độ nếu bạn sống đến 7 hoặc sống đến 69. Sự khác biệt đó có đáng kể không?
igouy

10
@igouy, tôi không biết về bạn, nhưng tôi không phải là một chương trình để đo tuổi thọ của tôi về tốc độ thực hiện. Ví dụ, nơi tôi quan tâm về tốc độ thực hiện, là thời gian kết xuất phản hồi HTTP. Tôi biết rằng tôi sẽ không nhận thấy sự khác biệt giữa thời gian kết xuất 7ms và 69ms (đặc biệt khi đi trên độ trễ mạng 130ms). Tôi biết rằng tôi sẽ nhận thấy sự khác biệt giữa 7ms và 700ms và tôi sẽ nhận thấy sự khác biệt giữa 7ms và 7 giây - nhưng không, không phải giữa 7ms và 69ms.
vladr

3
@vladr, còn 70ms hay 700ms thì sao? Bạn có thể nhận thấy sự khác biệt đó?
Paul Draper

60

Đây là những gì người tạo ra Rails, David Heinemeier Hansson phải nói:

Rails [Ruby] dành cho phần lớn các ứng dụng web Fast Enough. Chúng tôi có các trang web thực hiện hàng triệu lượt xem trang động mỗi ngày. Nếu bạn kết thúc với trang nhất của Yahoo hoặc Amazon, không chắc rằng một khuôn khổ ngoài lề trong bất kỳ ngôn ngữ nào sẽ giúp bạn tốt hơn nhiều. Có lẽ bạn sẽ phải tự lăn. Nhưng chắc chắn, tôi cũng muốn chu kỳ CPU miễn phí. Tôi chỉ quan tâm nhiều hơn về các chu kỳ phát triển miễn phí và sẵn sàng đánh đổi cái trước cho cái sau.

tức là ném nhiều phần cứng hoặc máy móc vào vấn đề rẻ hơn so với việc thuê nhiều nhà phát triển hơn và sử dụng ngôn ngữ nhanh hơn, nhưng khó hơn để duy trì. Rốt cuộc, rất ít người viết các ứng dụng web bằng C.

Ruby 1.9 là một cải tiến lớn hơn 1.8. Các vấn đề lớn nhất với Ruby 1.8 là bản chất được giải thích của nó (không có mã byte, không biên dịch) và các cuộc gọi phương thức đó, một trong những hoạt động phổ biến nhất trong Ruby, đặc biệt chậm.

Nó không giúp được gì nhiều cho mọi thứ là một phương thức tra cứu trong Ruby - thêm hai số, lập chỉ mục một mảng. Trong trường hợp các ngôn ngữ khác phơi bày các bản hack ( __add__phương thức của Python , Perl'sload.pm) Ruby thực hiện OO thuần túy trong mọi trường hợp và điều này có thể ảnh hưởng đến hiệu suất nếu trình biên dịch / trình thông dịch không đủ thông minh.

Nếu tôi đang viết một ứng dụng web phổ biến trong Ruby, trọng tâm của tôi sẽ là bộ nhớ đệm. Bộ nhớ đệm một trang giúp giảm thời gian xử lý cho trang đó về 0, bất kể ngôn ngữ nào bạn đang sử dụng. Đối với các ứng dụng web, chi phí cơ sở dữ liệu và các I / O khác bắt đầu quan trọng hơn nhiều so với tốc độ của ngôn ngữ, vì vậy tôi sẽ tập trung vào việc tối ưu hóa điều đó.


7
"Rốt cuộc, rất ít người viết các ứng dụng web bằng C." - Tất nhiên là không, nhưng nhiều trang web quan trọng về hiệu suất đã chuyển sang Scala.
Dario

6
Tôi không đồng ý với việc 'ném thêm phần cứng vào nó' rẻ hơn. Thật khó để thuyết phục khách hàng rằng họ nên trả nhiều tiền hơn cho việc lưu trữ mỗi X tháng vì nền tảng của họ được thiết kế dành cho các nhà phát triển.
Kevin

9
@Keven: chắc chắn chi phí phát triển sẽ giảm? Nếu không, điểm đầu tiên của việc sử dụng Ruby là gì?
rjh

4
@Kevin Câu nói đó hơi rộng. Nếu bạn cần thiết lập một máy chủ mới cho mỗi lần tăng lưu lượng 10% hoặc hơn với khoảng 100 lượt truy cập mỗi ngày, khách hàng rõ ràng sẽ có quyền khiếu nại. Trên thực tế, bạn thường cần phải có nhiều lưu lượng truy cập hơn để bắt đầu và tăng số lượng đó theo một mức độ lớn, trước khi phần cứng cũ không thể đối phó được nữa. Tại thời điểm đó, chủ đề chuyển sang lãnh thổ "một vấn đề tốt phải có" và hầu như không ai phàn nàn về việc nâng cấp phần cứng. Ngoài ra, không có "khách hàng" nào điều hành một trang web có lưu lượng truy cập cao như vậy mà không nhận thức được những điều này.
lừa dối

5
@Kevin - chúng ta hãy quay lại. "Thật khó để thuyết phục khách hàng, họ nên đợi 3 tháng cho một tính năng mới vì nền tảng của họ được thiết kế dành cho máy tính." Nếu tính năng mới đó sẽ tăng mạnh doanh thu, nó sẽ trả cho phần cứng bổ sung. Bên cạnh đó, chọn một ngôn ngữ nhanh ngay từ đầu là, đối với nhiều ứng dụng, tối ưu hóa sớm. Cơ hội là nút cổ chai của bạn sẽ ở một nơi khác: đọc cơ sở dữ liệu, độ trễ mạng, v.v.
Nathan Long

34

Viết mã chậm. Đọc mã chậm. Tìm và sửa lỗi là chậm. Thêm các tính năng và cải tiến là chậm. Bất cứ điều gì cải thiện trước đó là một chiến thắng. Rất hiếm khi hiệu suất thực thi là một vấn đề.


29
@GregS: hiệu suất thực thi luôn là một vấn đề nếu nó ảnh hưởng đến khả năng sử dụng. Đúng, quét một tệp xml cho một chuỗi trong một hoặc ba giây không quan trọng từ quan điểm số thuần túy, nhưng sự khác biệt trong vài giây có thể tạo ra sự khác biệt lớn về khả năng sử dụng khi bạn nói về ứng dụng hướng tới người dùng.
Bryan Oakley

5
@Ajax: Nah, tôi cá là đó là tính cách chiến thắng của bạn.
Tổng thống James K. Polk

15
Kỷ lục của tôi cho đến nay là tiết kiệm cho một công ty 30.000 đô la / năm trong một ngày làm việc. Các kỹ sư của họ đã quyết định rằng sẽ dễ đọc hơn khi có thuật toán điện toán đám mây đếm số lượng tác vụ được thực hiện trên mỗi lần lặp, gây ra n! truy vấn về công việc với hơn 20.000 đơn vị công việc. Thay đổi điều đó để kiểm tra nếu 1 mục công việc còn lại đã bỏ nó thành n truy vấn và cắt hóa đơn từ $ 130 / ngày xuống $ 20 / ngày. Những lập trình viên lười biếng kiếm tiền cho tôi. Xin hãy khuyến khích các lập trình viên lười biếng hơn.
Ajax

10
Thật buồn cười khi bạn bình luận ... Tôi đã chuyển sang một công ty khác, nơi chúng tôi vừa phải rút mười lăm nhà phát triển khỏi các tính năng và thực hiện kể từ khi một ngân hàng lớn của Mỹ từ chối ký hợp đồng trị giá hàng triệu đô la cho đến khi hệ thống có thể xử lý tải của họ. Họ thích các tính năng chúng tôi có, không phải là tốc độ mà họ thực hiện. Nếu bạn bỏ qua hiệu suất đủ lâu, thì bạn không có vấn đề gì về tính năng bởi vì chúng sẽ chậm một cách bất thường .
Ajax

4
Hiệu suất thực thi luôn là một vấn đề, bao nhiêu vấn đề là những gì chúng ta đang nói về. Bạn có thể chạy bao nhiêu mã trên điện thoại di động trước khi người dùng ngừng mua ứng dụng của bạn vì nó giết chết pin? Người dùng sẽ đợi trang của bạn tải bao lâu trước khi đóng quảng cáo làm mất doanh thu quảng cáo của bạn? Trả lời các loại câu hỏi này và bạn có bao nhiêu hiệu suất thực thi.
Sqeaky

15

Câu trả lời rất đơn giản: người ta nói ruby là chậm bởi vì nó chậm dựa trên sự so sánh đo sang các ngôn ngữ khác. Mặc dù vậy, hãy nhớ rằng "chậm" là tương đối. Thông thường, ruby ​​và các ngôn ngữ "chậm" khác đủ nhanh.


vâng, đó là những gì tôi đã nghĩ, ý tôi là, mọi người nói nó chậm, nhưng nó vẫn nhanh chóng đáp ứng yêu cầu của tôi ...
stephenmurdoch

11
>> nó vẫn nhanh chóng đáp ứng yêu cầu của tôi << Nó đủ nhanh cho mọi thứ không cần phải nhanh :-)
igouy

Tôi thiên vị một phần về điều này, có thể vì đây là một nhận xét lỗi thời. Bây giờ chúng tôi có ruby ​​2.3, và từ kinh nghiệm của ruby ​​2.2, tôi thấy rằng đường ray rất nặng. nếu những người cần một khung nhanh hơn, hãy thử pidrano, dựa trên sinatra và họ đã cố gắng làm càng gần càng tốt để ra lệnh, nhưng nhẹ hơn nhiều. nhưng họ chưa đạt đến phiên bản 1.0, vẫn còn nhiều hơn nữa, nhưng từ thử nghiệm của tôi, nó chạy rất tốt và nhanh. Tôi đã làm việc với bản ghi âm hoạt động 5 và pidrano, mượn từ đường ray. Với 200 kết nối đồng thời, tôi nhận được phản hồi 1,5 giây mà không cần truy vấn db, với tài sản từ các con quay
James Tan

5

Joel trên Phần mềm - Ruby Performance Revisited giải thích khá rõ về nó. Có thể đã lỗi thời mặc dù ...

Tôi khuyên bạn chỉ nên gắn bó với nó khi bạn đã quen với Ruby on Rails,
nếu bạn gặp phải vấn đề về hiệu suất, bạn có thể xem xét lại để sử dụng ngôn ngữ và khung khác.

Trong trường hợp đó tôi thực sự sẽ đề xuất C # với ASP.NET MVC 2 , hoạt động rất tốt cho các ứng dụng CRUD.


Cảm ơn về liên kết, tôi luôn thích đọc Joel về mọi thứ. Nhận xét thú vị mà anh ấy đưa ra về "khẩu hiệu sticker-sticker" của DHH ...
stephenmurdoch

Trích dẫn: " Điều này không áp dụng cho tất cả mọi người, nhưng khi mọi người nói rằng họ gặp vấn đề về hiệu năng với Ruby hoặc họ chỉ cần có khả năng chạy mã nhanh hơn công cụ ngôn ngữ Ruby cốt lõi có thể chạy nó, điều đó không giúp ích gì Ruby ủng hộ hát những bài thánh ca về chu kỳ của nhà phát triển so với chu kỳ CPU. "Nói tốt.
Marc.2377

3

Tôi muốn nói rằng Ruby chậm vì không có nhiều nỗ lực để làm cho trình thông dịch nhanh hơn. Áp dụng tương tự cho Python. Smalltalk cũng năng động như Ruby hoặc Python nhưng hoạt động tốt hơn ở mức độ lớn, xem http://benchmarkgame.alioth.debian.org . Vì Smalltalk ít nhiều được thay thế bởi Java và C # (tức là ít nhất 10 năm trước), không có công việc tối ưu hóa hiệu suất nào được thực hiện cho nó và Smalltalk vẫn nhanh hơn Ruby và Python. Những người ở Xerox Parc và tại OTI / IBM đã có tiền để trả cho những người làm việc để làm cho Smalltalk nhanh hơn. Điều tôi không hiểu là tại sao Google không chi tiền để làm cho Python nhanh hơn vì chúng là một cửa hàng Python lớn. Thay vào đó, họ chi tiền cho việc phát triển các ngôn ngữ như Go ...


Tôi nghĩ rằng đó là vì Python đã có sẵn và ngày nay được sử dụng rất nhiều. Nếu bạn cần hiệu suất cao, có nhiều thư viện bạn có thể sử dụng hoặc dệt và các thứ khác bạn có thể sử dụng.
Zelphir Kaltstahl

Từ những gì tôi đọc được, một số nỗ lực đã mang lại kết quả tốt trong Ruby 2.5.
Marc.2377

2

Trước hết, bạn có quan tâm đến những gì người khác nói về ngôn ngữ bạn thích không? Khi nó làm công việc nó phải làm, bạn ổn.

OO không phải là cách nhanh nhất để thực thi mã, nhưng nó giúp ích trong việc tạo mã. Mã thông minh luôn nhanh hơn mã câm và các vòng lặp vô dụng. Tôi là một DBA và thấy rất nhiều các vòng lặp vô dụng này, bỏ chúng đi, sử dụng mã tốt hơn và các truy vấn và ứng dụng nhanh hơn, nhanh hơn nhiều. Bạn có quan tâm đến micro giây cuối cùng không? Bạn có thể có ngôn ngữ được tối ưu hóa cho tốc độ, những ngôn ngữ khác chỉ làm công việc họ phải làm và có thể được duy trì bởi nhiều lập trình viên khác nhau.

Tất cả chỉ là một sự lựa chọn.


2

Rõ ràng, nói về tốc độ Ruby thua. Mặc dù các bài kiểm tra điểm chuẩn cho thấy Ruby không chậm hơn PHP nhiều. Nhưng bù lại, bạn đang nhận được mã DRY dễ bảo trì, tốt nhất trong số tất cả các khung bằng các ngôn ngữ khác nhau.

Đối với một dự án nhỏ, bạn sẽ không cảm thấy bất kỳ sự chậm chạp nào (ý tôi là cho đến khi thích <50K người dùng) cho rằng không có phép tính phức tạp nào được sử dụng trong mã, chỉ là công cụ chính.

Đối với một dự án lớn hơn, trả tiền cho các nguồn lực trả hết và rẻ hơn tiền lương của nhà phát triển. Ngoài ra, viết mã trên RoR hóa ra nhanh hơn nhiều so với bất kỳ loại nào khác.

Trong năm 2014, mức độ chênh lệch tốc độ mà bạn đang nói đến là dành cho hầu hết các trang web không đáng kể.


2

Cách đối phó với hiệu suất của Ruby trong ứng dụng Web cũng giống như với bất kỳ ngôn ngữ lập trình nào khác:

NGÀNH KIẾN TRÚC

Điều này dễ thực hiện trong Rails hơn trong hầu hết các Web Framework khác.

Ở cấp độ ứng dụng , bằng cách lưu vào bộ nhớ cache bất cứ thứ gì được cho là được lưu trong bộ nhớ cache và bằng cách quản lý quyền truy cập vào DB theo cách thông minh (vì nút cổ chai thường nằm trên quyền truy cập "DB" đối với hầu hết các ứng dụng WEB).

Rails làm cho nó rất dễ dàng và tự nhiên để giải quyết những vấn đề này. Có một số tóm tắt cho dữ liệu bộ nhớ cache, các trang và các đoạn , và cũng có những tóm tắt rất hay để xử lý phần SQL theo cách tối ưu hóa và có thể sử dụng lại ( Active RecordAREL ).

Đây là lý do tại sao rất nhiều ứng dụng được viết bằng các ngôn ngữ nhanh hơn và không biểu cảm (như php) cuối cùng lại chậm hơn so với các đối tác của Ruby. Thật không dễ dàng và thanh lịch để giải quyết bộ nhớ đệm và truy vấn bằng các ngôn ngữ này so với Ruby.

Ở cấp độ cơ sở hạ tầng , thật hợp lý khi nghĩ đến việc cân bằng tải và tất cả những thứ mà tôi không biết nhiều về nó. Tôi thuê ngoài vấn đề đó bằng cách thuê một số nền tảng làm nhà cung cấp dịch vụ, như Heroku hoặc Engine Yard . Dù sao. Triển khai đường ray với cân bằng tải có lẽ không khó thực hiện.


1

Ruby chậm hơn C ++ ở một số nhiệm vụ có thể đo lường dễ dàng (ví dụ: thực hiện mã phụ thuộc nhiều vào điểm nổi). Điều này không có gì đáng ngạc nhiên, nhưng đủ để biện minh cho một số người nói rằng Ruby Ruby là Slow chậm mà không cần bằng cấp. Họ không tính thực tế rằng việc viết mã Ruby dễ dàng và an toàn hơn nhiều so với C ++.

Cách khắc phục tốt nhất là sử dụng các mô-đun được nhắm mục tiêu được viết bằng ngôn ngữ khác (ví dụ: C, C ++, Fortran) trong mã Ruby của bạn. Những người có thể làm công việc nặng nhọc và kịch bản của bạn có thể tập trung vào các vấn đề phối hợp cấp cao hơn.


Việc so sánh thường được thực hiện với Java, C #, Python, có thể là Perl chứ không phải C ++.
rjh

5
Tất nhiên. Nhưng tôi có thể đảm bảo với bạn (với tư cách là nhà phát triển của Tcl) rằng mọi người sẽ luôn so sánh bạn với các ngôn ngữ khác một cách không công bằng. Cách khắc phục là sử dụng các ngôn ngữ khác cho các thành phần mà bạn ghép lại với nhau; thực hiện tất cả trong một ngôn ngữ giống như sử dụng một công cụ duy nhất cho tất cả các tác vụ. Nếu tất cả những gì bạn có là một cái búa, mọi thứ trông giống như một ngón tay cái.
Donal Fellows

ý tưởng hay về việc sử dụng các mô-đun ngoại ngữ khi cần thiết
stephenmurdoch

>> để nói rằng “Ruby là chậm” mà không cần trình độ chuyên môn << Một vài năm trước đây họ có thể đã đi vào để hiển thị các chương trình Ruby đó là chậm hơn so với các chương trình Tcl :-)
igouy

1
Bạn biết những gì họ nói về Lies, Damned Lies và Điểm chuẩn. ;-)
Donal Fellows

0

Hiệu suất hầu như luôn luôn là về thiết kế tốt và các tương tác cơ sở dữ liệu được tối ưu hóa. Ruby làm những gì hầu hết các trang web cần khá nhanh, đặc biệt là các phiên bản gần đây hơn; và tốc độ phát triển và dễ bảo trì cung cấp một khoản chi trả lớn trong chi phí và giữ cho khách hàng hài lòng. Tôi thấy JAVA có hiệu suất thực thi chậm đối với một số tác vụ và gặp khó khăn khi phát triển trong JAVA, nhiều nhà phát triển tạo ra các ứng dụng chậm bất kể khả năng tốc độ lý thuyết như thể hiện trong điểm chuẩn (điểm chuẩn thường được cho là khả năng cụ thể và hẹp). Khi tôi cần xử lý chuyên sâu không phù hợp với khả năng của cơ sở dữ liệu của mình, tôi chọn C hoặc Objective-C hoặc một số ngôn ngữ được biên dịch hiệu suất thực sự cao khác cho các tác vụ đó tùy thuộc vào nền tảng. Nếu tôi cần tạo một ứng dụng web có dữ liệu, Tôi sử dụng RoR hoặc đôi khi C # ASP.NET tùy thuộc vào các yêu cầu khác; bởi vì tất cả các nền tảng đều có điểm mạnh và điểm yếu. Tốc độ thực thi của những thứ mà ứng dụng của bạn thực hiện rất quan trọng, nhưng xét cho cùng, nếu hiệu suất thực thi của một khía cạnh hẹp của ngôn ngữ là tất cả những gì được tính; sau đó tôi có thể vẫn đang sử dụng ngôn ngữ Trình biên dịch cho mọi thứ.



-5

Ruby hoạt động tốt cho năng suất của nhà phát triển. Ruby do tự nhiên buộc phải phát triển theo hướng kiểm tra vì thiếu các loại. Ruby hoạt động tốt khi được sử dụng như một trình bao bọc cấp cao cho các thư viện C. Ruby cũng hoạt động tốt trong quá trình chạy dài khi được biên dịch JIT thành mã máy thông qua JVM hoặc Rbx VM. Ruby không hoạt động tốt khi được yêu cầu bẻ số trong một thời gian ngắn với mã ruby ​​thuần túy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.