01/10/2018, 16:21
Xin tài liệu về tối ưu code C/C++
Xin chào tất cả mọi người, mình đang gặp một dự án cần phải cải thiện tốc độ chạy của hệ thống. Đang bế tắc phần này nên mong mọi người chó thể chia sẻ với mình tài liệu hoặc trang nào hay nói về tối ưu mã nguồn để tăng tốc chương trình được không? mình code C/C++ nhé.
P/S: Mọi người cũng có thể chia sẻ với mình về kinh nghiệm tối ưu một sản phẩm thực tế nhỉ?
Bài liên quan
Hi chazo1994.
Nói vậy thì khó lắm. Bạn cần xác định xem chạy châm do thuật toán hay do code. Nếu bản chất thuật toán đã chậm rồi thì tối ưu code cũng không giải quyết được nhiều.
Xem lại các tham biến của hàm đã dùng reference chưa.
Các tham trị là dạng dữ liệu nguyên thuỷ (hoặc sizeof <= sizeof(pointer)) thì nên để tham trị thay vì pointer/tham chiếu
Các dữ liệu return có dung lượng lớn, thay bằng copy, hãy thử dùng pointer(smart pointer)
inline các hàm có tỉ lệ gọi nhiều
Cố gắng hạn chế exception.
…
Mình biết có vài cách sau, bạn thử tìm hiểu xem
Thiết lập profiler quan trọng hơn là cách optimize như thế nào.
Vấn đề của mình nằm ở cả hai, về phần thuật toán mình sẽ tìm cách giải quyết sau. Bây giờ trước mắt cần tối ưu code một chút để ra được một phiên bản, sau đó nâng cấu phiên bản sau.
Cảm ơn bạn rất nhiều, nó rẩt hữu ích.
Mình cũng đang tìm kiếm một tool profiler cho C/C++ trên linux mà chưa thấy cái nào hay (gprof thấy không hay lắm). Bạn có thể gợi ý cho mình một vài tool được không ?
Cái này mình nghĩ do bạn xử lí thế nào. Bạn có thể mô tả hệ thống bạn đang làm cái gì. Cách xử lí ra sao. Mn có thể dựa trên đó tư vấn bạn biện pháp tốt hơn chứ nói k k tối ưu thế này thì khó lắm
Dùng Valgrind đi, kết hợp Qt Creator. Hoặc KCacheGrind, nó cũng là wrapper cho Valgrind. gprof thì khá đơn sơ và muốn output đồ họa để dễ hình dung thì hơi nhọc.
Windows thì có thể dùng CodeXL hoặc built-in profiler của VS. (nếu dùng VS)
oke thank cậu, mình sẽ thử.
Cái này mình chỉ mong là có thể được mọi người chia sẻ kinh nghiệm, và một số tài liệu nói chung về tối ưu thôi. Còn chương trình của mình nó hơi đặc thù nên hệ thống nêu ra cũng khó cho mọi người có thể optimize. Vả lại phần cần optimize lại là của một cái thư viện phần xử lý trong nó mình vẫn chưa nắm hết, đành optimize kiểu blackbox nên mới cần tối ưu code chứ không tối ưu thuật toán.
Bạn có thể tìm mấy quyển optimize C++ code trên này. Tuy nhiên mình cũng không chắc chắn lắm tốc độ sẽ được cải thiện nhiều hay không khi áp dụng mấy cái đó.
stackoverflow.com
The Definitive C++ Book Guide and List
Mới đọc trên reddit xong, share cho bạn.
reddit
r/cpp - Optimize code in c++
45 votes and 69 comments so far on Reddit
Cảm ơn bạn nhiều nhé! Dù có cải thiện được tốc độ hay không thì có một điều đó là kinh nghiệm và kiến thức của mình sẽ tăng lên sau khi đọc nó.
Cảm ơn bạn nhiều nhé, nó hữu ích quá
em thấy bác cứ debug xem đoạn nào chậm, rồi sẽ sửa được cho nhanh hết ấy mà