Acovea

Phần mềm chụp màn hình:
Acovea
Các chi tiết về phần mềm:
Phiên bản: 1.0.1
Ngày tải lên: 3 Jun 15
Nhà phát triển: Scott Robert Ladd
Giấy phép: Miễn phí
Phổ biến: 76

Rating: 3.0/5 (Total Votes: 2)

Acovea thực hiện một thuật toán di truyền để tìm ra "tốt nhất" tùy chọn để biên soạn chương trình với GCC C và C ++ trình biên dịch.
ACOVEA (Phân tích các Compiler chọn qua Evolutionary Algorithm) thực hiện một thuật toán di truyền để tìm "tốt nhất" tùy chọn để biên soạn chương trình với các GNU Compiler Collection (GCC) C và C ++ trình biên dịch.
"Best", trong bối cảnh này, được định nghĩa là những lựa chọn sản xuất các chương trình thực thi nhanh nhất từ ​​một mã nguồn được đưa ra. Acovea là C ++ khung có thể được mở rộng để kiểm tra ngôn ngữ lập trình khác và các trình biên dịch không GCC.
Tôi hình dung Acovea như một công cụ tối ưu hóa, tương tự như trong mục đích để profiling. Truyền thống chức năng cấp hồ sơ xác định các thuật toán có ảnh hưởng nhất trong hoạt động của chương trình; Sau đó Acovea được áp dụng cho những thuật toán để tìm các cờ biên dịch và tùy chọn mà tạo mã nhanh nhất.
Acovea cũng rất hữu ích để thử nghiệm kết hợp của lá cờ cho các tương tác bi quan, và để kiểm tra độ tin cậy của các trình biên dịch.
Phần mềm hiện đại khó hiểu và xác minh bằng các phương tiện truyền thống. Hàng triệu dòng mã sản xuất các ứng dụng có chứa các tương tác phức tạp, bất chấp mô tả đơn giản hoặc brute-lực lượng điều tra.
Một hướng dẫn, phương pháp xác định để thử nghiệm dựa trên các xét nghiệm của con người để hình dung mọi sự kết hợp có thể có các hành động - một đề xuất không thực tế cho phần mềm phức tạp. Tuy nhiên, bất chấp sự phức tạp đó, chúng tôi cần câu trả lời cho những câu hỏi quan trọng về hiện đại, phần mềm có quy mô lớn.
Những loại câu hỏi quan trọng? Hãy xem xét các GNU Compiler Collection. Tôi viết bài viết mà các thế hệ mã chuẩn, một nhiệm vụ đầy khó khăn do sự lựa chọn vô số cung cấp bởi trình biên dịch khác nhau. Đối với điểm chuẩn của tôi để có bất kỳ ý nghĩa, tôi cần phải biết kết hợp các tùy chọn tạo mã nhanh nhất cho một ứng dụng nhất định.
Tìm tập "tốt nhất" của các tùy chọn âm thanh như một nhiệm vụ đơn giản, được đưa ra trong phạm vi của tài liệu GCC và sự khôn ngoan thông thường của cộng đồng phát triển GCC. Ah, nếu nó chỉ dễ dàng như vậy! Các tài liệu GCC, trong khi mở rộng, cũng là một cách trung thực chính xác.
Tôi đánh giá cao phong cách này của tài liệu; Khác với nhiều nhà cung cấp thương mại, người lập báo cáo tuyệt đối về "chất lượng" của sản phẩm của họ, documenters của GCC thừa nhận những bất ổn trong cách lựa chọn khác nhau làm thay đổi thế hệ mã. Thật vậy, thế hệ mã là hoàn toàn phụ thuộc vào loại ứng dụng được biên soạn và các nền tảng mục tiêu. Một lựa chọn sản xuất mã thực thi nhanh chóng cho một mã nguồn có thể gây bất lợi cho việc thực hiện các chương trình khác.
"Theo lẽ thường" đến hộp thư đến của tôi mỗi khi tôi xuất bản một bài viết mới. Khác nhau, từ lịch sự với van lơn đến thô lỗ, những e-mail có chứa các đề xuất mâu thuẫn để sản xuất mã nhanh.
Trong hầu hết các trường hợp, khẳng định giai thoại như thiếu bất kỳ bằng chứng chính thức về giá trị của họ, và, thường xuyên hơn không, đề nghị "cải thiện" là không hiệu quả hay có hại. Nó đã trở thành ngày càng rõ ràng rằng không có ai --myself bao gồm - biết chính xác làm thế nào tất cả các tùy chọn này GCC làm việc cùng nhau trong việc tạo ra mã chương trình.
Tôi tìm kiếm Chén Thánh của Tối ưu hóa - nhưng là chính xác những gì tối ưu? Hiểu được vấn đề là bước đầu tiên trong việc tìm kiếm một giải pháp.
Tối ưu hóa nỗ lực để sản xuất tốt nhất "" máy mã từ mã nguồn. "Best" có nghĩa là những thứ khác nhau để ứng dụng khác nhau; một xẻng cơ sở dữ liệu khối của thông tin, trong khi một ứng dụng khoa học là có liên quan với kết quả nhanh chóng và chính xác; mối quan tâm đầu tiên cho một hệ thống nhúng có thể được kích thước mã.
Và nó có thể là hơi nhỏ mã là nhanh chóng, hoặc mã nhanh chính xác. Tối ưu hóa là xa là một khoa học chính xác, đưa ra sự đa dạng của phần cứng và cấu hình phần mềm.
Một thuật toán tối ưu hóa có thể đơn giản như việc gỡ bỏ một vòng lặp bất biến, hoặc là phức tạp như việc kiểm tra toàn bộ một chương trình để loại bỏ thông tiểu biểu thức toàn cầu. Nhiều tối ưu thay đổi những gì các lập trình viên đã viết vào một hình thức hiệu quả hơn, tạo ra kết quả tương tự khi thay đổi chi tiết cơ bản về hiệu quả; "tối ưu hóa" sản phẩm mã khác có sử dụng các đặc điểm cụ thể của phần cứng cơ bản, chẳng hạn như bộ giảng dạy đặc biệt.
Kiến trúc bộ nhớ, đường ống, bộ nhớ cache và off-chip - tất cả các ảnh hưởng đến hiệu suất mã theo những cách không rõ ràng đối với các lập trình bằng cách sử dụng một ngôn ngữ cấp cao. Một tối ưu hóa mà có thể có vẻ để sản xuất mã nhanh hơn có thể, trên thực tế, tạo ra mã lớn gây nhiều cache nhớ, hiệu suất như vậy, hèn hạ.
Ngay cả các mã C tay chỉnh tốt nhất có chứa các khu vực của giải; không có tuyệt đối, một-một giữa báo cáo C và hướng dẫn của máy. Hầu như bất kỳ chuỗi các mã nguồn có thể được biên dịch thành khác nhau - nhưng chức năng tương đương - hướng dẫn máy suối với kích cỡ khác nhau và đặc điểm hoạt động.
Nội tuyến chức năng là một ví dụ điển hình của hiện tượng này: thay thế một cuộc gọi đến một chức năng với chức năng mã chính nó có thể sản xuất một chương trình nhanh hơn, nhưng cũng có thể làm tăng kích thước chương trình. Tăng kích thước chương trình, có thể, lần lượt, ngăn chặn một thuật toán từ lắp bên trong bộ nhớ cache tốc độ cao, do đó làm chậm chương trình do cache nhớ.
Chú ý sử dụng của tôi từ chồn "có thể" - nội tuyến chức năng nhỏ đôi khi cho phép các thuật toán tối ưu hóa khác một cơ hội để cải thiện hơn nữa mã cho điều kiện địa phương, sản xuất nhanh hơn và mã nhỏ hơn.
Tối ưu hóa không phải là đơn giản hay rõ ràng, và sự kết hợp của các thuật toán có thể dẫn đến kết quả bất ngờ. Trong đó mang lại cho tôi trở lại câu hỏi: Đối với bất kỳ ứng dụng nhất định, các tùy chọn tối ưu hóa hiệu quả nhất là gì?
Có gì mới trong phiên bản này:
· Thay đổi nhỏ trong giấy phép không tự do.
· Hỗ trợ đã được thêm vào cho các phiên bản mới nhất của libcoyotl và libevocosm.

Phần mềm tương tự

PyZen
PyZen

12 May 15

nose-json
nose-json

14 Apr 15

JUnit PDF Report
JUnit PDF Report

2 Jun 15

eutester
eutester

20 Feb 15

Phần mềm khác của nhà phát triển Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

Ý kiến ​​để Acovea

Bình luận không
Nhập bình luận
Bật hình ảnh!