Tôi đang tìm xem một lập trình viên có thể làm gì trong C, có thể xác định hiệu suất và/hoặc kích thước của tệp đối tượng được tạo.Thực hành mã hóa C cho hiệu suất hoặc kích thước mã - ngoài những gì mà trình biên dịch thực hiện
Đối với ví dụ,
1. Tuyên bố chức năng get/set đơn giản như inline có thể làm tăng hiệu suất (với chi phí của một dấu chân lớn hơn)
2. Đối với các vòng lặp mà không sử dụng các giá trị của biến vòng lặp chính nó, đếm xuống đến số không thay vì đếm lên đến một giá trị nhất định v.v.
Dường như các trình biên dịch giờ đây đã nâng cao đến mức mà các thủ thuật "đơn giản" (như hai điểm trên) không bắt buộc. Tùy chọn thích hợp trong quá trình biên dịch thực hiện công việc. Heck, tôi cũng thấy các bài viết ở đây về cách trình biên dịch xử lý đệ quy - điều đó rất thú vị! Vậy chúng ta phải làm gì ở cấp độ C? :)
Môi trường cụ thể của tôi là: GCC 4.3.3 nhắm mục tiêu lại cho kiến trúc ARM (v4). Nhưng phản ứng trên các trình biên dịch/bộ vi xử lý khác cũng được chào đón và sẽ được nhai.
PS: Cách tiếp cận này của tôi đi ngược lại với "mã đầu tiên !, sau đó chuẩn, và cuối cùng là tối ưu hóa" phương pháp tiếp cận.
Sửa: Cũng giống như nó xảy ra như vậy, tôi thấy một bài tương tự sau khi đăng câu hỏi: Should we still be optimizing "in the small"?
http://stackoverflow.com/questions/110684/what-coding-techniques-do-you-use-for-optimising-c-programs http://stackoverflow.com/questions/178045/when- nên-bạn-bắt đầu-tối ưu hóa-mã # 178079 http://stackoverflow.com/questions/242149/when-should-i-optimize –
Có gì sai với "mã đầu tiên thông thường !, sau đó là điểm chuẩn và cuối cùng là tối ưu hóa" tiếp cận? –
Không có gì sai với điều đó - nó _should_ là cách tối ưu hóa được thực hiện. Động cơ của tôi là kiểm tra xem tôi có thể thực hiện một công cụ để tái cấu trúc mã (sau khi lược tả được thực hiện) để giúp một nhà phát triển thay đổi nhanh chóng cho hiệu suất và/hoặc khu vực. Hãy tưởng tượng một plugin Eclipse (hoặc một kịch bản vim) làm nổi bật các vòng lặp và cung cấp các tùy chọn để nói, hủy bỏ chúng hoặc để chuyển đổi một vòng lặp bên trong và bên ngoài. Tôi nên làm rõ điều này trong bài viết, xin lỗi về điều đó. Và cảm ơn các liên kết! –