Difference between revisions of "Tối ưu mã nguồn C/C++"
| Line 8: | Line 8: | ||
== '''Công thức tính mức độ tối ưu''' == | == '''Công thức tính mức độ tối ưu''' == | ||
| − | Khi lập trình tối ưu bạn cần nhớ công thức tính sau của Ahmdal ('''''Ahmdal’s Law'''''):<br/> | + | Khi lập trình tối ưu bạn cần nhớ công thức tính sau của Ahmdal ('''''Ahmdal’s Law'''''):<br/> [[File:Speed up formula.png]]<br/> '''Trong đó''': |
*'''func<sub>cost</sub>''': Tỉ lệ % thời gian thực thi của chương trình sử dụng hàm '''func'''. | *'''func<sub>cost</sub>''': Tỉ lệ % thời gian thực thi của chương trình sử dụng hàm '''func'''. | ||
*'''func<sub>speedup</sub>''': Hệ số tăng tốc độ xử lý cho hàm, | *'''func<sub>speedup</sub>''': Hệ số tăng tốc độ xử lý cho hàm, | ||
| − | '''Ví dụ''': Bạn tối ưu hàm '''''TriangleIntersect()'''''. Hàm này chiếm 40% của chương trình. Sau khi bạn tối ưu, hàm này chạy nhanh gấp đôi. Áp dụng công thức tính như sau:<br/> | + | '''Ví dụ''': Bạn tối ưu hàm '''''TriangleIntersect()'''''. Hàm này chiếm 40% của chương trình. Sau khi bạn tối ưu, hàm này chạy nhanh gấp đôi. Áp dụng công thức tính như sau:<br/> [[File:Speed up example.png]]<br/> => Như vậy ứng dụng của bạn sẽ chạy nhanh thêm '''25%'''. |
Theo như công thức này nên tập trung vào tối ưu các hàm/lớp có tần suất sử dụng nhiều | Theo như công thức này nên tập trung vào tối ưu các hàm/lớp có tần suất sử dụng nhiều | ||
Revision as of 00:24, 31 July 2017
Trong lập trình C/C++ hay bất cứ ngôn ngữ nào khác, việctối ưu mã lệnh để tăng tốc độ xử lý là rất quan trọng. Đặc biệt ứng dụng C/C++ thực hiện ở tầng dưới như tầng service hay tầng driver.
Dưới đây là một số thủ thật giúp tối ưu mã lệnh trong C/C++.
Công thức tính mức độ tối ưu
Khi lập trình tối ưu bạn cần nhớ công thức tính sau của Ahmdal (Ahmdal’s Law):

Trong đó:
- funccost: Tỉ lệ % thời gian thực thi của chương trình sử dụng hàm func.
- funcspeedup: Hệ số tăng tốc độ xử lý cho hàm,
Ví dụ: Bạn tối ưu hàm TriangleIntersect(). Hàm này chiếm 40% của chương trình. Sau khi bạn tối ưu, hàm này chạy nhanh gấp đôi. Áp dụng công thức tính như sau:

=> Như vậy ứng dụng của bạn sẽ chạy nhanh thêm 25%.
Theo như công thức này nên tập trung vào tối ưu các hàm/lớp có tần suất sử dụng nhiều
Lập trình đúng rồi mới tối ưu
Đầu tiên bạn phải cài đặt/lập trình đúng trước đã. Sau đó khi bạn biết hàm này có tần suất gọi nhiều, bạn mới thực hiện tối ưu. Khi tối ưu code bạn cần tìm ra các nút thắt (bottlenecks) để loại bỏ nó. Có nhiều cách để thực hiện việc này:
- Tối ưu mã lệnh
- Cải tiến thuật toán