1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kỹ thuật lập trình - Bài 8: Tinh chỉnh mã nguồn

51 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 0,93 MB

Nội dung

Bài giảng Kỹ thuật lập trình - Bài 8: Tinh chỉnh mã nguồn do Trịnh Thành Trung biên soạn nhằm mục đích giúp cho các bạn hiểu rõ hơn về hiệu năng của chương trình và tinh chỉnh mã nguồn, các phương pháp tinh chỉnh mã nguồn.

Bài TINH CHỈNH MÃ NGUỒN Trịnh Thành Trung trungtt@soict.hust.edu.vn TINH CHỈNH MÃ NGUỒN Hiệu chương trình tinh chỉnh mã nguồn Các phương pháp tinh chỉnh mã nguồn - HIỆU NĂNG CHƯƠNG TRÌNH VÀ TINH CHỈNH MÃ NGUỒN - Hiệu Sau áp dụng kỹ thuật xây dựng chương trình phần mềm: • Chương trình có tốc độ đủ nhanh – Không thiết phải quan tâm đến viêc tối ưu hóa hiệu – Chỉ cần giữ cho chương trình đơn giản dễ đọc • Hầu hết thành phần chương trình có tốc độ đủ nhanh – Thường phần nhỏ làm cho chương trình chạy chậm – Tối ưu hóa riêng phần cần Hiệu • Các bước làm tăng hiệu thực chương trình – Tính tốn thời gian thực phần khác chương trình – Xác định “hot spots” – đoạn mã lệnh đòi hỏi nhiều thời gian thực – Tối ưu hóa phần chương trình địi hỏi nhiều thời gian thực – Lặp lại bước cần Tối ưu hóa hiệu chương trình • Cấu trúc liệu tốt hơn, giải thuật tốt – Cải thiện độ phức tạp tiệm cận (asymptotic complexity) • Tìm cách khống chế tỉ lệ số phép toán cần thực số lượng tham số đầu vào • Ví dụ: thay giải thuật xếp có độ phức tạp O(n2) giải thuật có độ phức tạp O(n log n) – Cực kỳ quan trọng lượng tham số đầu vào lớn – Đòi hỏi LTV phải nắm vững kiến thức CTDL giải thuật Tối ưu hóa hiệu chương trình • Mã nguồn tốt hơn: viết lại đoạn lệnh cho chúng trình dịch tự động tối ưu hóa tận dụng tài nguyên phần cứng – Cải thiện yếu tố khơng thể thay đổi • Ví dụ: Tăng tốc độ tính tốn bên vịng lặp: từ 1000n thao tác tính tốn bên vịng lặp xuống cịn 10n thao tác tính tốn – Cực kỳ quan trọng phần chương trình chạy chậm – Đòi hỏi LTV nắm vững kiến thức phần cứng, trình dịch quy trình thực chương trình Code tuning • Thay đổi mã nguồn chạy thơng theo hướng hiệu • Chỉ thay đổi phạm vi hẹp, ví dụ liên quan đến chương trình con, tiến trình hay đoạn mã nguồn • Khơng liên quan đến việc thay đổi thiết kế phạm vi rộng, góp phần cải thiện hiệu cho phần thiết kế tổng qt Cải thiện mã nguồn • Có cách tiếp cận để cải thiện hiệu thông qua cải thiện mã nguồn – Lập hồ sơ mã nguồn (profiling): đoạn lệnh tiêu tốn nhiều thời gian thực – Tinh chỉnh mã nguồn (code tuning): tinh chỉnh đoạn mã nguồn – Tinh chỉnh có chọn lựa (options tuning): tinh chỉnh thời gian thực tài nguyên sử dụng để thực chương trình Cải thiện mã nguồn Khi cần cải thiện hiệu theo hướng • Sau kiểm tra gỡ rối chương trình – Khơng cần tinh chỉnh chương trình chạy chưa – Việc sửa lỗi làm giảm hiệu chương trình – Việc tinh chỉnh thường làm cho việc kiểm thử gỡ rối trở nên phức tạp • Sau bàn giao chương trình – Duy trì cải thiện hiệu – Theo dõi việc giảm hiệu chương trình đưa vào sử dụng Kết luận • Hãy lập trình cách thơng minh, đừng q cứng nhắc – Khơng cần tối ưu chương trình đủ nhanh – Tối ưu hóa chương trình lúc, chỗ • Tăng tốc chương trình – Cấu trúc liệu tốt hơn, giải thuật tốt hơn: hành vi tốt – Các đoạn mã tối ưu: thay đổi • Các kỹ thuật tăng tốc chương trình – Tinh chỉnh mã nguồn theo hướng • Giúp đỡ trình dịch • Khai thác khả phần cứng số ví dụ tăng hiệu • Before: for(i=0;i> 1; y = * x; a = b * 15; ??? for (i = 1; i < n; i++) { k = i * + m; c += * a[k]; } for (i = 0; i < n; i++) x[i] = a[i] + b[i]; for (i = 0; i < n; i++) y[i] = a[i] + c[i]; Int tg=n*4; For(k=m+4;k

Ngày đăng: 11/05/2021, 01:12