Bài giảng Cơ sở lập trình nâng cao - Chương 10: Tối ưu hóa chương trình
Số trang: 50
Loại file: pptx
Dung lượng: 533.62 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng cung cấp cho người học các kiến thức: Tối ưu hóa chương trình, loại tối ưu, quy tắc vòng lặp, quy tắc hàm, quy tắc biểu thức,... Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn dùng làm tài liệu học tập và nghiên cứu. Mời các bạn cùng tham khảo chi tiết nội dung bài giảng.
Nội dung trích xuất từ tài liệu:
Bài giảng Cơ sở lập trình nâng cao - Chương 10:Tối ưu hóa chương trìnhTRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP.HCM KHOA CÔNG NGHỆ THÔNG TIN CƠ SỞ LẬP TRÌNH NÂNG CAO Biên soạn: Ths.Tôn Quang Toại TonQuangToai@yahoo.com TPHCM, NĂM 2013 1Chương 10TỐI ƯU HÓA CHƯƠNG TRÌNH 2Tối ưu hóa chương trình§ 2 Đặc trưng trong chương trình cần tối ưu • Tối ưu hóa thời gian thực hiện chương trình • Tối ưu hóa không gian lưu trữ dữ liệu§ 2 Loại tối ưu • Tối ưu chương trình không làm thay đổi thuật toán (Chỉnh sửa mã chương trình) • Tối ưu chương trình làm thay đổi thuật toán 3 TỐI ƯU HÓA THỜI GIANCHỈNH SỬA MÃ CHƯƠNG TRÌNH 4Chỉnh sửa mã chương trình§ Các cách chỉnh sửa mã chương trình • Quy tắc Vòng lặp • Quy tắc Logic • Quy tắc Hàm • Quy tắc Biểu thức 5QUY TẮC VÒNG LẶP 6Tốu ưu câu lệnh lặp§ Quy tắc vòng lặp 1: Đưa code ra ngoài vòng lặp • Đưa các tính toán không phụ thuộc vào chỉ số lặp ra khỏi vòng lặp • Các biểu thức tính toán nếu đều được tính toán giống nhau qua các lần lặp thì nên được để ngoài vòng lặp • Chú ý những biểu thức chứa những phép toán tốn nhiều thời gian: *, /, hàm mũ, lấy căn, ... 7Tốu ưu câu lệnh lặp§ Ví dụ: Phân tích và Tối ưu đoạn mã sau theo quy tắc trên for (i=0; iTốu ưu câu lệnh lặp§ Quy tắc vòng lặp 2: Kết hợp các biểu thức kiểm tra • Một vòng lặp hiệu quả sẽ chứa càng ít biểu thức logic dùng để kiểm tra kết thúc vòng lặp càng tốt. Đặc biệt các vòng lặp nằm sâu bên trong • Tốt nhất chỉ nên có 1 biểu thức logic kiểm tra kết thúc vòng lặp. • Cố gắng thay thế một số điều kiện thoát bằng điều kiện thoát khác hiệu quả hơn 9Tốu ưu câu lệnh lặp§ Ví dụ 1: Phân tích và Tối ưu đoạn mã sau theo quy tắc trên i=0; while (i Tốu ưu câu lệnh lặpCảitiến 11Tốu ưu câu lệnh lặp§ Ví dụ 2: Cho đoạn mã Tìm kiếm phần tử có giá trị value trong mảng đã được sắp xếp tăng. Hãy phân tích và cải tiến để giảm biểu thức logic trong vòng lặp của đoạn mã for (i=0; i value) { found = 0; break; } } 12 Tốu ưu câu lệnh lặpCảitiến 13Tốu ưu câu lệnh lặp§ Quy tắc vòng lặp 3: Tháo bỏ vòng lặp – Do chi phí thay đổi chỉ số lớn: • Trong vòng lặp ngắn hay thân vòng lặp ít code thì chi phí lớn thường nằm trong các lệnh thay đổi chỉ số. • Chi phí thay đổi chỉ số vòng lặp thường được giảm bằng cách – Bỏ vòng lặp – Giảm số lần lặp, tăng số lệnh trong thân vòng lặp 14Tốu ưu câu lệnh lặp§ Ví dụ 1: Phân tích và cải tiến đoạn mã sau sum=0; for (i=0; iTốu ưu câu lệnh lặp§ Ví dụ 2: Hãy cải tiến thuật toán tìm kiếm tuần tự giá trị value trong dãy tăng dần x[n] = value; i=0; while (x[i] < value) i++; if (i Tốu ưu câu lệnh lặpCảitiến 17Tốu ưu câu lệnh lặp§ Quy tắc vòng lặp 4: Tháo bỏ vòng lặp – Do chi phí phép gán lớn • Nếu chi phí của vòng lặp tập trung vào những phép gán thì những phép gán này có thể được bỏ bằng cách: – Lặp lại đoạn mã và – Thay đổi cách dùng biến 18Tốu ưu câu lệnh lặp§ Ví dụ: Cho hàm tính số Fibonacci thứ n như sau. Hãy phân tích và cải tiến để hàm sử dụng ít phép gán hơn int Fibonacci(int n) { int f1, f2, f3, i; if (nMAXFIBO) return 0; if (n Tốu ưu câu lệnh lặpCảitiến 20 ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cơ sở lập trình nâng cao - Chương 10:Tối ưu hóa chương trìnhTRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP.HCM KHOA CÔNG NGHỆ THÔNG TIN CƠ SỞ LẬP TRÌNH NÂNG CAO Biên soạn: Ths.Tôn Quang Toại TonQuangToai@yahoo.com TPHCM, NĂM 2013 1Chương 10TỐI ƯU HÓA CHƯƠNG TRÌNH 2Tối ưu hóa chương trình§ 2 Đặc trưng trong chương trình cần tối ưu • Tối ưu hóa thời gian thực hiện chương trình • Tối ưu hóa không gian lưu trữ dữ liệu§ 2 Loại tối ưu • Tối ưu chương trình không làm thay đổi thuật toán (Chỉnh sửa mã chương trình) • Tối ưu chương trình làm thay đổi thuật toán 3 TỐI ƯU HÓA THỜI GIANCHỈNH SỬA MÃ CHƯƠNG TRÌNH 4Chỉnh sửa mã chương trình§ Các cách chỉnh sửa mã chương trình • Quy tắc Vòng lặp • Quy tắc Logic • Quy tắc Hàm • Quy tắc Biểu thức 5QUY TẮC VÒNG LẶP 6Tốu ưu câu lệnh lặp§ Quy tắc vòng lặp 1: Đưa code ra ngoài vòng lặp • Đưa các tính toán không phụ thuộc vào chỉ số lặp ra khỏi vòng lặp • Các biểu thức tính toán nếu đều được tính toán giống nhau qua các lần lặp thì nên được để ngoài vòng lặp • Chú ý những biểu thức chứa những phép toán tốn nhiều thời gian: *, /, hàm mũ, lấy căn, ... 7Tốu ưu câu lệnh lặp§ Ví dụ: Phân tích và Tối ưu đoạn mã sau theo quy tắc trên for (i=0; iTốu ưu câu lệnh lặp§ Quy tắc vòng lặp 2: Kết hợp các biểu thức kiểm tra • Một vòng lặp hiệu quả sẽ chứa càng ít biểu thức logic dùng để kiểm tra kết thúc vòng lặp càng tốt. Đặc biệt các vòng lặp nằm sâu bên trong • Tốt nhất chỉ nên có 1 biểu thức logic kiểm tra kết thúc vòng lặp. • Cố gắng thay thế một số điều kiện thoát bằng điều kiện thoát khác hiệu quả hơn 9Tốu ưu câu lệnh lặp§ Ví dụ 1: Phân tích và Tối ưu đoạn mã sau theo quy tắc trên i=0; while (i Tốu ưu câu lệnh lặpCảitiến 11Tốu ưu câu lệnh lặp§ Ví dụ 2: Cho đoạn mã Tìm kiếm phần tử có giá trị value trong mảng đã được sắp xếp tăng. Hãy phân tích và cải tiến để giảm biểu thức logic trong vòng lặp của đoạn mã for (i=0; i value) { found = 0; break; } } 12 Tốu ưu câu lệnh lặpCảitiến 13Tốu ưu câu lệnh lặp§ Quy tắc vòng lặp 3: Tháo bỏ vòng lặp – Do chi phí thay đổi chỉ số lớn: • Trong vòng lặp ngắn hay thân vòng lặp ít code thì chi phí lớn thường nằm trong các lệnh thay đổi chỉ số. • Chi phí thay đổi chỉ số vòng lặp thường được giảm bằng cách – Bỏ vòng lặp – Giảm số lần lặp, tăng số lệnh trong thân vòng lặp 14Tốu ưu câu lệnh lặp§ Ví dụ 1: Phân tích và cải tiến đoạn mã sau sum=0; for (i=0; iTốu ưu câu lệnh lặp§ Ví dụ 2: Hãy cải tiến thuật toán tìm kiếm tuần tự giá trị value trong dãy tăng dần x[n] = value; i=0; while (x[i] < value) i++; if (i Tốu ưu câu lệnh lặpCảitiến 17Tốu ưu câu lệnh lặp§ Quy tắc vòng lặp 4: Tháo bỏ vòng lặp – Do chi phí phép gán lớn • Nếu chi phí của vòng lặp tập trung vào những phép gán thì những phép gán này có thể được bỏ bằng cách: – Lặp lại đoạn mã và – Thay đổi cách dùng biến 18Tốu ưu câu lệnh lặp§ Ví dụ: Cho hàm tính số Fibonacci thứ n như sau. Hãy phân tích và cải tiến để hàm sử dụng ít phép gán hơn int Fibonacci(int n) { int f1, f2, f3, i; if (nMAXFIBO) return 0; if (n Tốu ưu câu lệnh lặpCảitiến 20 ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cơ sở lập trình nâng cao Cơ sở lập trình nâng cao Tối ưu hóa chương trình Loại tối ưu Quy tắc vòng lặp Quy tắc hàm Quy tắc biểu thứcGợi ý tài liệu liên quan:
-
Bài giảng Cơ sở lập trình nâng cao - Chương 5: Phương pháp thiết kế thuật toán – nhánh cận
28 trang 29 0 0 -
Bài giảng Cơ sở lập trình nâng cao - Chương 3: Lập trình đệ quy
40 trang 17 0 0 -
Bài giảng Lập trình C: Chương 6 - Nguyễn Minh Thành
13 trang 16 0 0 -
Bài giảng Kỹ thuật lập trình nâng cao: Chương 8 - Trần Minh Thái
13 trang 16 0 0 -
Bài giảng Kỹ thuật lập trình nâng cao: Chương 7 - ThS. Phạm Đào Minh Vũ
13 trang 14 0 0 -
Bài giảng cơ sở lập trình nâng cao - Chương 10
48 trang 14 0 0 -
Bài giảng Cơ sở lập trình nâng cao - Chương 8: Phương pháp thiết kế thuật toán − quy hoạch động
38 trang 13 0 0 -
Bài giảng Cơ sở lập trình nâng cao - Chương 6: Phương pháp thiết kế thuật toán − chia để trị
29 trang 13 0 0 -
Bài giảng Kỹ thuật lập trình nâng cao: Chương 4 - ThS. Dương Thành Phết
26 trang 13 0 0 -
Bài giảng Cơ sở lập trình nâng cao - Chương 4: Phương pháp thiết kế thuật toán – quay lui
37 trang 12 0 0