Article:
C-level Optimization...
1326
otaku-2r.myopenid.com 2Over 3 years ago |
Mục đích: Cải thiện hiệu năng của phần mềm viết bằng ngôn ngữ bậc cao (cụ thể ở đây là C)
Lý do: Hạn chế của Compiler làm kết quả biên dịch không đạt được hiệu năng cao nhất.
Đối tượng: Có thể đối với bạn thì điều này không có ý nghĩa gì khi đang sở hữu một PC có bộ vi xử lý hoành tráng như Intel Pentium 4 trở lên và dung lượng RAM khổng lồ, nhưng đối với những người chuyên viết phần mềm bằng ngôn ngữ bậc cao như C trên những hệ thống nhúng như Vi điều khiển hay vi xử lý của các thiết bị cầm tay với tần số xung nhịp thấp, dung lượng bộ nhớ hạn chế thì đây là cả một vấn đề to lớn...
Về mặt nào đó, những điều sau đây sẽ đem lại cho bạn một cách suy nghĩ mới trong việc lập trình hiệu năng cao.
Để có thể hiểu được ý nghĩa của C-level optimization cần có kiến thức về kiến trúc hệ vi xử lý/vi điều khiển (VXL/VĐK) và C compiler cho hệ VXL/VĐK đó.
Nhiệm vụ của một compiler là biên dịch mã nguồn của một ngôn ngữ lập trình nào đó thành mã máy tương ứng với từng kiến trúc VXL/VĐK. Một số compiler thông minh có thể đảm đương được nhiệm vụ Code Optimization, thường là các compiler dành riêng cho hệ VXL/VĐK đó.
Có nhiều phương pháp và tiêu chí để đánh giá hiệu năng của một phần mềm, có thể là số lượng mã lệnh (lines of assembler code hoặc microcode), thời gian thực thi chương trình, tỉ lệ cache hit/miss... Để kiểm chứng những tiêu chí này (còn gọi là profiling) thường thì bạn phải compile mã nguồn và thực thi (thậm chí là phải đo đạc bằng các thiết bị chuyên dụng).
Chẳng lẽ để tối ưu hóa cứ phải dùng assembly sao? Câu trả lời là đúng và không đúng. Đúng là vì đó thực sự là cách tốt nhất để tối ưu hóa mã lệnh. Không đúng vì nếu ta suy nghĩ theo cách của compiler ta sẽ biết mã lệnh sẽ được sinh ra như thế nào và như vậy ta sẽ có thể tối ưu hóa trên chính các dòng mã ngôn ngữ bậc cao.
Một số bí kíp chung để tối ưu hóa trong C & C++ có thể tham khảo các trang web sau (thông cảm vì tôi ko có nhiều thời gian để trình bày & dịch những tài liệu này)
Optimization of Computer Programs in C
C++ Optimization Strategies and Techniques
www.google.com <===
Thông thường khi phát triển phần mềm chúng ta phải đảm bảo phần mềm đó chạy đạt yêu cầu rồi sau đó mới optimizing bởi công việc này đòi hỏi sự tỉ mỉ nhiều hơn là tư duy.
c, optimize
2
Updated over 3 years ago
over 3 years ago
over 3 years ago
over 3 years ago
over 3 years ago
over 3 years ago