Có một nghiên cứu so sánh về mức tiêu thụ bộ nhớ của thời gian chạy ngôn ngữ lập trình, tương quan với tính biểu cảm và tỷ lệ lỗi sản xuất? [đóng cửa]


10

Có nhiều nghiên cứu so sánh và có sẵn trực tuyến khi nói đến hiệu suất thời gian chạy của các ứng dụng được xây dựng bằng ngôn ngữ này hay ngôn ngữ khác. Một số được thúc đẩy bởi các tập đoàn, một số học thuật, một số chỉ báo cáo thí nghiệm cá nhân.

Chúng tôi cũng nhận được một phần tốt các nghiên cứu so sánh về tác dụng phụ của ngôn ngữ lập trình và công cụ của nó, như:

  • xây dựng thời gian,
  • khả năng phát hiện lỗi sau sản xuất,
  • sức mạnh biểu cảm,
  • Vân vân...

Tuy nhiên, gần đây tôi đã bị choáng ngợp bởi mức tiêu thụ bộ nhớ của các chương trình của tôi nhiều hơn bất cứ thứ gì khác. Điều này có thể xuất phát từ thực tế là trong khi Định luật Moore đứng về phía chúng tôi để thực hiện thô, chúng tôi đã nhận ra rằng các nút thắt khác quan trọng hơn. Điều đó và tôi không có xu hướng cập nhật phần cứng của mình thường xuyên và tôi có một số "cũ" (đọc 2005-2006 3.6GHz Pentium 4 với 4GB RAM) mà ngày nay khó có thể sử dụng cho các ứng dụng lớn mà không cần sử dụng cho các ứng dụng lớn mà không cần đòi hỏi tôi phải trải qua những rắc rối lớn để vắt kiệt từng chút nước trái cây (lựa chọn hệ điều hành, giao diện người dùng, điều chỉnh dịch vụ và trình nền, lựa chọn ứng dụng để sử dụng cho nhiệm vụ này hay cách khác ...). Thành thật mà nói, đôi khi tôi nổi giận tophoặc procexpkhóc khi nhìn thấy ký ức được sử dụng bởi các chương trình ngây thơ nhất.

Tôi có thể giải quyết vấn đề này bằng cách tiếp tục phát triển theo hướng được liệt kê ở trên, và về cơ bản là cố gắng hạn chế bản thân và các chương trình tôi sử dụng (tôi rất thích các chương trình cli vì lý do đó, tôi đoán vậy), nhưng tôi cũng không thể không nghĩ có lẽ chúng ta đang làm sai.

Công cụ hiện đại cho nhu cầu hiện đại

Tất nhiên, các ngôn ngữ cấp cao hơn được cho là tốt hơn và chứng minh giá trị trọng lượng chết của chúng. Một số lựa chọn thiết kế đã được thực hiện vì lý do tốt (hoặc được cho là có chủ đích) tại thời điểm đó, trong nhiều bộ công cụ. Thư viện dùng chung, mô hình bộ nhớ, bộ xử lý trước, hệ thống loại, v.v ... Nhưng một số có thể khả thi hơn những cái khác với phần cứng hiện đại của chúng tôi và tôi tò mò muốn đọc một vài nghiên cứu nghiêm túc về vấn đề này.

Vì vậy, câu hỏi của tôi là, có một mặt dây chuyền cho Trò chơi Điểm chuẩn và các trò chơi khác tập trung vào so sánh mức tiêu thụ bộ nhớ thời gian chạy cơ sở của các ngôn ngữ không?

Và hơn nữa, có một số nghiên cứu tham chiếu chéo này với các tham số khác (tương tự như những gì bài viết này đã làm, ví dụ, đối với các tiêu chí khác, cũng dựa trên Trò chơi Điểm chuẩn )?


3
Tại sao các trò chơi điểm chuẩn là không đủ? Đây có lẽ là tài nguyên tốt nhất hiện có và nó đã bao gồm chi phí tiêu thụ bộ nhớ.
Robert Harvey

@RobertHarvey: Nó cung cấp thông tin bộ nhớ, nhưng nó không dành cho thời gian chạy "cơ sở". Ngoài ra, tôi thấy việc trích xuất thông tin từ Trò chơi Điểm chuẩn khá phức tạp (tất cả tín dụng cho bài viết đó làm một công việc tuyệt vời với dữ liệu của nó, mặc dù đó không phải là thứ tôi tìm kiếm).
haylem

1
Nó có thể giúp những người đang cố gắng trả lời câu hỏi của bạn nếu bạn cung cấp một số thông tin về vấn đề mà bạn đang cố gắng giải quyết, với một số chi tiết cụ thể như môi trường thực thi và mức tiêu thụ bộ nhớ mong muốn của bạn. Câu trả lời sẽ khác nếu bạn viết phần mềm cho môi trường nhúng (trong đó dung lượng bộ nhớ được sử dụng là quan trọng) so với máy tính để bàn hiện đại (trong đó tiêu thụ bộ nhớ về cơ bản là không quan trọng, trừ khi hệ thống phần mềm là cực kỳ lớn).
Robert Harvey

2
How much memory consumption makes you weep?30 MB cho tab Chrome không hoạt động với các tiện ích mở rộng, 100 MB cho CCC của ATI, thậm chí 11 MB cho plugin googletalk không hoạt động hoặc 23 MB cho trình điều khiển máy in không hoạt động. Những điều này, và nhiều hơn nữa. Ví dụ chrome hơi xa công viên vì đây là một ví dụ phức tạp hơn, nhưng những ví dụ khác đã làm tôi ngạc nhiên khá nhiều.
haylem

Câu trả lời:


7

Tôi đã tìm thấy một số thông tin một phần, vì vậy tôi sẽ bắt đầu tổng hợp những phát hiện của mình trong câu trả lời của riêng tôi. Xin đừng để điều đó ngăn bạn đóng góp câu trả lời của riêng bạn (hoặc chỉnh sửa câu trả lời này).

Văn học hiện có:

  • Một so sánh thực nghiệm về 7 ngôn ngữ lập trình - Prechelt (2000) [ PDF ]

    Một chút ngày, nhưng bao gồm một số tài liệu tôi quan tâm và đưa ra một cái nhìn về việc sử dụng và biểu cảm bộ nhớ thời gian chạy. Kết quả có thể rất khác nhau bây giờ, nhưng đó là một khởi đầu thú vị.

  • Tốc độ, kích thước và sự phụ thuộc của ngôn ngữ lập trình - Marceau (2009) [ blog ]

  • Mã được sử dụng, thời gian sử dụng hình dạng từ trò chơi điểm chuẩn [ u32 , u32q , u64 , u64q ]

    Mặc dù nó không bao gồm mức tiêu thụ bộ nhớ thời gian chạy, công việc của Marceau ít nhiều là loại tài liệu tham khảo hoặc nghiên cứu thực nghiệm mà tôi sẵn sàng tìm kiếm cho bài phê bình đó, về nội dung và chất lượng. Một ví dụ điển hình về những gì tôi theo đuổi, chỉ dành cho các số liệu khác nhau. Bài viết thứ hai là phần tiếp theo được tìm thấy trên trang web Trò chơi điểm chuẩn và được xuất bản ngay sau đó (và tài liệu tham khảo) công việc của Marceau, với nhiều màn hình gần đây và nhiều ngôn ngữ hơn, mặc dù vẫn không có chi tiết bộ nhớ thời gian chạy. Mỗi đồ thị trên các trang này sau đó dẫn đến so sánh ngôn ngữ-to-ngôn ngữ mà làm cung cấp thông tin bộ nhớ cao cấp mặc dù.


Công việc của Marceau là một bài tập trong việc kể chuyện, và một số câu chuyện không có ý nghĩa - "Việc giới thiệu các tính năng chức năng có làm giảm hiệu suất không?" bỏ qua một thực tế đơn giản là một số chương trình "ngôn ngữ chức năng" đó có thể không sử dụng các tính năng chức năng. Dữ liệu được lấy từ một hóa thân trước đó của trò chơi điểm chuẩn; và ban đầu được sử dụng mà không hiểu, do đó, có một vài chu kỳ điều chỉnh sau khi xuất bản (kiểm tra các ý kiến).
igouy

Đối với "mức tiêu thụ bộ nhớ thời gian chạy cơ sở" của bạn, việc so sánh đơn giản các chương trình "hello world" có thể tốt như bạn cần.
igouy

@igouy: vâng. Không nghi ngờ gì về điều đó, nhưng tôi đã hy vọng không phải tự mình thử nghiệm và ghi lại tài liệu đó :) Thực tế, thậm chí ít hơn một thế giới xin chào cũng sẽ ổn, vì trong một số bạn thậm chí sẽ không được yêu cầu liên kết đến (hoặc tải) thói quen in, ví dụ. (vô hiệu hóa tối ưu hóa trình biên dịch và những thứ khác cũng có thể được khuyến khích)
haylem

@igouy: liên quan đến công việc của Marceau, tôi biết, tôi đã đọc trang này, các bình luận, các trang Trò chơi Điểm chuẩn được cập nhật và liên lạc với anh ấy. Bài viết vẫn là một tài liệu tham khảo tốt theo ý kiến ​​của tôi. Thực tế là nó không hoàn hảo sẽ không lấy đi giá trị của nó và nó vẫn theo hướng những gì tôi muốn tìm (hoặc tái tạo lại chính mình).
haylem

"nhưng tôi đã hy vọng không phải tự mình thử nghiệm và ghi lại / duy trì điều đó" - nhìn vào các phép đo trong InternetArchive . Thật không may cho bạn, tôi đã quyết định các phép đo bộ nhớ cho Hello World hoàn toàn sai lệch và ngừng hiển thị chúng sau năm 2005.
igouy

1

Đây không phải là trả lời câu hỏi mỗi lần nói, nhưng có lẽ thay đổi quan điểm một chút. Tôi đang ghi nhớ bảng điểm từ trò chuyện, để thiết lập giai điệu của câu trả lời-nhận xét này chắc chắn sẽ là chủ đề của nhiều phiếu bầu.

Có những người, nhà cung cấp phần cứng, nhà cung cấp công cụ và lập trình viên quan tâm đến hiệu quả. Hiện tại, nó sẽ là mối quan tâm ngày càng tăng đối với họ và tất cả chúng ta. Những mối quan tâm này bắt nguồn từ các thiết bị di động, đặc biệt là những con quái vật ngấu nghiến pin có năng lượng cao với màn hình lớn nhất và radio mạnh nhất.

Để lùi một bước nữa, một phần lý do chúng ta thấy mình trong tình huống hiện nay, với các khung tương đối lớn và một chút coi thường hiệu quả chung, ngoài những cải tiến phần cứng là di sản. Khả năng tương thích với các hệ thống cũ giúp chúng tôi tương thích với khả năng tương thích. Đó không phải là lỗi của thời gian chạy cấp cao nhất, vì về cơ bản chúng là cùng thời gian chạy hoạt động khá hiệu quả và hiệu quả khi được sử dụng trong một môi trường hoạt động khác nhau (ví dụ Xbox, windows mobile 7/8 / bề mặt, khung vi mô java , Vân vân).

So sánh mức độ tương thích mà máy tính để bàn sở hữu với phần mềm cũ của nó với mức độ tương thích mà thiết bị di động sở hữu.

Với các thiết bị di động, các nhà sản xuất thiết bị đã nỗ lực để đảm bảo một số khả năng tương thích, nhưng chúng không làm cho tính tương thích trở thành nền tảng cốt lõi. Khi lựa chọn là giữa việc tiếp tục cung cấp khả năng tương thích và di chuyển thiết kế của hệ thống di động về phía trước, hệ thống di động sẽ tiến lên phía trước.

Đối với máy tính để bàn, điều ngược lại có vẻ đúng. Nếu một thay đổi đột phá đáng kể tấn công các nhà tiếp thị hoặc chấp nhận sớm, nó sẽ đẩy các tính năng cần thiết và thiết kế lại cần thiết vào phòng sau nhiều lần. Đôi khi tôi nhớ những tin đồn về tác động của chúng tôi khi người dùng Windows sẽ tìm thấy một hệ thống tệp hoàn toàn mới và đáng kể với Windows XP, sau đó là Vista, sau đó là Seven, và cuối cùng là trong Eight, nhưng không, chỉ là cải thiện dần dần kể từ khi lần đầu tiên chúng ta thấy nó trên Windows2000? Hệ thống tập tin mới đã tồn tại trong một thời gian dài, đã bị loại bỏ, và tuy nhiên những tin đồn quyết định câu chuyện sau đó, tôi không thể nói. Đó có lẽ là trường hợp lớn nhất được biết đến, nhưng tôi khẳng định đó không phải là vụ án lớn duy nhất.

Ngay cả với các máy tính bảng và hệ điều hành di động gần đây nhất, Microsoft, người đã từng định hình thị trường, giờ đây đã hòa quyện vào nhau trong một trận đấu tử thần với không chỉ người tiêu dùng, mà còn là cái bóng của chính bộ phận máy tính để bàn. Máy tính bảng phải có khả năng tương tác đáng kể với đối tác máy tính để bàn. Không, nó không thể chơi hoàn hảo với nó, vì sự khác biệt về kiến ​​trúc, mà còn vì bản chất cổ xưa của nền tảng máy tính để bàn đã làm cho nó phải hy sinh đáng kể.

Bây giờ chắc chắn, Windows là mục tiêu dễ dàng cho bất kỳ loại chỉ trích nào cho tình huống này, nhưng các nền tảng khác không phải là "không có tội". Có rất nhiều di tích ẩn giấu trong hệ sinh thái Linux mà tôi chắc chắn gây ra sự băn khoăn lớn cho việc cải thiện hệ thống.

Kinh tế đóng một phần lớn vào phương trình này; cách chúng tôi tài trợ cho máy tính và các ứng dụng của chúng tôi trên một, và cách chúng được tài trợ cho các ứng dụng khác theo các mô hình khác nhau đáng kinh ngạc. Khi Wintel từng ảnh hưởng mạnh mẽ đến sự lạc hậu, Apple và Google đã biến nó thành một lịch trình gần như nghiêm ngặt. Đây là điều tất nhiên, hơn tôi dự định, vì vậy tôi sẽ rời đi khi nó ngồi và để độc giả lấy nó từ đó.

Nếu và khi các nhà cung cấp lớn thay đổi mô hình lỗi thời và giá cả, thì họ có thể bắt đầu tiến lên phía trước với những thay đổi quy mô lớn hơn với tốc độ đồng đều hơn. Các khung mức cao nhất được điều khiển bởi các ngôn ngữ bậc cao nhất sẽ co lại theo cách, vì chúng sẽ có thể đạt được nhiệm vụ cấp cao của mình với hiệu quả như cấp thấp hơn vì khả năng tương thích trung gian và lớp cấp thấp không hiệu quả sẽ được giảm mạnh, nếu không được loại bỏ.


Thực sự không trả lời, nó giống như những suy nghĩ ở dạng tự do thêm vào khu vực của câu hỏi :) Mặc dù vậy, cảm ơn và +1 cho cái nhìn sâu sắc. (Ngoài ra, tôi muốn làm rõ rằng tôi chưa bao giờ có ý định loại bỏ các hệ thống của Microsoft như là một phần của thủ phạm. Bất kỳ hệ điều hành nào cũng có cùng một vấn đề, nếu mô hình bộ nhớ của hệ thống và định dạng thực thi cho phép).
haylem

Đây chắc chắn không phải là ý định của tôi để chọc vào Microsoft, nhưng chúng là trường hợp dễ thấy nhất đối với vấn đề này. Một tên tuổi lớn khác, các nhà cung cấp truyền thống đang ở trong cùng một chiếc thuyền, nếu thậm chí có lẽ hơi khác một chút (ví dụ: cơ sở dữ liệu cấp công nghiệp và thiết bị mạng; họ có bao nhiêu thỏa hiệp để ngăn cản cải thiện đáng kể đối với cải tiến và giá trị sản phẩm cơ bản của họ) . Thậm chí gần nhà hơn trên các sản phẩm mà mỗi người chúng tôi hỗ trợ, chúng tôi mang theo câu tục ngữ đó ở mức độ này hay mức độ khác.
JustinC
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.