t i u h a m ngu n n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
TỐI ƯU HÓA MÃ NGUỒN PowerPoint Presentation
Download Presentation
TỐI ƯU HÓA MÃ NGUỒN

Loading in 2 Seconds...

play fullscreen
1 / 44

TỐI ƯU HÓA MÃ NGUỒN - PowerPoint PPT Presentation


  • 155 Views
  • Uploaded on

TỐI ƯU HÓA MÃ NGUỒN. Nhóm 10. Các nội dung chính. Tối ưu hóa mã nguồn là gì? Lý do cần tối ưu hóa mã nguồn. Tối ưu hóa giao diện Tối ưu hóa xử lý (thuật toán, dữ liệu) Tối ưu hóa kiến trúc Các công cụ hỗ trợ Demo. Tối ưu hóa mã nguồn là gì?.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'TỐI ƯU HÓA MÃ NGUỒN' - gwyneth-young


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
c c n i dung ch nh
Các nội dung chính
  • Tối ưu hóa mã nguồn là gì?
  • Lý do cần tối ưu hóa mã nguồn.
  • Tối ưu hóa giao diện
  • Tối ưu hóa xử lý (thuật toán, dữ liệu)
  • Tối ưu hóa kiến trúc
  • Các công cụ hỗ trợ
  • Demo
t i u h a m ngu n l g
Tối ưu hóa mã nguồn là gì?
  • Tối ưu hóa mã nguồn là quá trình sửa đổi mã nguồn để cho nó làm việc hiệu quảhơn hoặc sử dụng ít tài nguyênhơn. Nói chung, một chương trình có thể được tối ưu hóa để nó thực thinhanh hơn, hoặc có khả năng ít tốn bộ nhớ lưu trữ hoặc các nguồn lực khác như ít hao điện năng hơn…
l do c n t i u h a m ngu n
Lý do cần tối ưu hóa mã nguồn.
  • Tối ưu hóa mã nguồn rất quang trọng:
  • Giúp chương trình thực thi tốt hơn.
  • Ít tồn tài nguyên.
  • Nâng chất lượng của mã nguồn.
t i u h a giao di n
Tối ưu hóa giao diện
  • Tốiưuhoágiaodiệnlàgì?
  • Tốiưuhoágiaodiệnnhưthếnào?
t i u ho giao di n l g
Tốiưuhoágiaodiệnlàgì?
  • Mộtgiaodiệnkhósửdụng???

 ngườidùngcảmthấykhôngthoảimáikhisửdụng, sốlượngngườidùngsẽít

  • Mộtgiaodiệndễsửdụng, khôngmấtthờigianhướngdẫnnhiều???

 ngườidùngsẽcảmthấythoảimáisửdụnghơn, sốlượngngườisửdụngsẽnhiều

t i u ho giao di n l g1
Tốiưuhoágiaodiệnlàgì?
  • Tốiưuhoágiaodiệnlàcôngviệcthiếtkế, pháttriểngiaodiệncủachươngtrìnhđểnângcaotínhtiệndụngcủachươngtrình.
  • Giaodiệnđãtốiưuhoá:
    • Trựcquanvớingườidùng
    • Ítphảihướngdẫnchongườisửdụng
    • Đúngchuẩngiaodiện???
t i u ho giao di n nh th n o
Tốiưuhoágiaodiệnnhưthếnào?
  • Tưởngtượngra 1 sốngườidùng
  • Hình dung racáchoạtđộngquantrọng
  • Tìm 1 môhìnhsửdụngmàngườidùngmongđợinhất
  • Phátthảobảnthiếtkếđầutiên
  • Thayđổibảnthiếtkếsaochophùhợpvớingườisửdụngmàbạntưởngtượngra
  • Đưangườithậtsựsửdụngrồitiếpthu ý kiến
t i u h a x l
Tối ưu hóa xử lý
  • Tối ưu hóa xử lý: là một công việc yêu cầu tư duy thuật toán rất cao, cùng với khả năng sử dụng thuần thục các cấu trúc dữ liệu.
  • Tối ưu hóa thuật toán có 2 góc độ:
    • Tối ưu không gian: tối ưu lưu trữ bộ nhớ, dữ liệu.
    • Tối ưu theo thời gian: làm giảm độ phức tạp thuật toán.
  • 2 điều trên không phải lúc nào cũng xảy ra cùng 1 lúc. Trong nhiều trường hợp tối ưu về thời gian sẽ làm tăng không gian lưu trữ và ngược lại.
t i u h a x l1
Tối ưu hóa xử lý
  • Tối ưu dữ liệu: Thay đổi trong các kiểu dữ liệu có thể là một hỗ trợ mạnh mẽ trong việc giảm kích thước chương trình và cải thiện tốc độ thực thi.
  • Sử dụng intergers nhanh hơn số float. Phép cộng và phép nhân trên số nguyên nhanh hơn số với float.
  • Sử dụng array ít nhất có thể. Nếu bạn có thể cấu trúc dữ liệu trên mảng 1 chiều thay vì 2,3 chiều thì bạn có thể tiết kiệm thời gian.
t i u h a x l2
Tối ưu hóa xử lý
  • VD:

for ( row = 0; row < numRows; row++ )

for ( column = 0; column < numColumns; column++ )

matrix[ row ][ column ] = 0;

  • Tối ưu:

for ( entry = 0; entry < numRows * numColumns; entry++ )

matrix[ entry ] = 0;

t i u h a x l3
Tối ưu hóa xử lý
  • Minimize Array References: giảm số lần tham chiếu đến phần tử mảng:
  • Use Supplementary Indexes: chỉ số bổ sung. Thêm dữ liệu liên quan làm cho việc truy cập dữ liệu hiệu quả hơn.
  • String-Length Index: chỉ số độ dài chuỗi

Bạn có thể áp dụng các ý tưởng về việc lập chỉ mục cho chiều dài đến bất kỳ loại dữ liệu có độ dài biến. Nó thường hiệu quả hơn để theo dõi độ dài của cấu trúc hơn là tính toán chiều dài mỗi khi bạn cần.

t i u h a x l4
Tối ưu hóa xử lý
  • Independent, Parallel Index Structure: độc lập, cấu trúc chỉ mục song song. Tạo các chỉ mục cho dữ liệu để tăng hiệu quả khi truy xuất và tìm kiếm, hay là tạo cấu trúc dữ liệu lưu trữ các thông tin quan trọng và con trỏ trỏ đến thông tin chi tiết.
  • Use caching: lưu những giá trị thường dùng,
t i u h a x l5
Tối ưu hóa xử lý
  • Tối ưu thuật toán:

1. Logic ( các biểu thức toán học)

  • Ngừng kiểm tra khi bạn biết câu trả lời:
  • VD: If(5<x) and (x<10) then… (C++, Java hỗ trợ)

If(5<x) then

If(x<10) then …

  • Ngừng kiểm tra khi biết kết quả thì tốt cho nhiều trường hợp. Như tìm kiếm là 1 trường hợp thường gặp.
t i u h a x l6
Tối ưu hóa xử lý
  • Sắp xếp các điều kiện bằng tần số: sắp xếp các điều kiện có khả năng được thực hiện trước trong trường hợp if-then-else.
  • Substitute table lookup for complicated expressions( thay thế bảng tìm kiếm cho biểu hiện phức tạp)
t i u h a x l7
Tối ưu hóa xử lý

Tốiưu :

if ( sumType == SUMTYPE_NET ) {

for ( i = 0; i < count; i++ ) {

netSum = netSum + amount[ i ];

}

}

else {

for ( i = 0; i < count; i++ ) {

grossSum = grossSum + amount[ i ];

}

}

2. Loop: Vònglặpđượcthựcthinhiềulầntrongchươngtrình, và nó là điểmnóngtrongchươngtrình, và chúngtaphảilàmchúngnhanhhơn.

  • Unswitching: là đặtbiểuthứcđiềukiệnbênngoàivònglặpthay vì đặtbêntrongvònglặp( switching).

for ( i = 0; i < count; i++ ) {

if ( sumType == SUMTYPE_NET ) {

netSum = netSum + amount[ i ];

} else {

grossSum = grossSum + amount[ i ];

}

}

t i u h a x l8
Tối ưu hóa xử lý
  • Jamming: là kết quả củasự kếthợp 2 vònglặpcùngthựchiệntrên 1 tậphợpcácgiá trị.

for (inti=0;i< employeeCount;i++)

employeeName[i]=””;

for (inti=0;i< employeeCount;i++)

employeeEarnings[i]=0;

Tốiưu:

for (inti=0;i< employeeCount;i++)

{

employeeName[i]=””;

employeeRarnings[i]=0;

}

t i u h a x l9
Tối ưu hóa xử lý
  • Unrolling : giảmsố lầnlặp. Nhưngtrongtrườnghợpnàythì tăngkíchthướcvònglặp( số dòng code). Phươngphápnàythì chi phí lặpgiảmkhôngđángkể.
  • Minimizing the Work Inside Loops: giảmcôngviệclàmtrongvònglặp, thựchiệnbênngoàivònglặpvà trongvònglặpápdụngkết quả có được ở ngoàivònglặp.
  • Sentinel Values: giá trị línhgác , ápdụngtrongtrườnghợptrongvònglặp có điềukiệnkép, và chuyểnthành 1 điềukiệnđơngiản.
t i u h a x l10
Tối ưu hóa xử lý
  • Putting the Busiest Loop on the Inside: đặtvònglặp có số lẩnlặpnhiềunhấtđặtbêntrong.

VD:

for ( column = 0; column < 100; column++ )

for ( row = 0; row < 5; row++ )

sum = sum + table[ row ][ column ];

  • Strength Reduction: đốivớibêntrongvònglặp có nhânvà hànhđộngphứctạpta có thể thaybằng 1 hoatđộngđơngiảnhơnvà tínhtoán 1 con số thaynhân, và con số nàytăngsaumỗilầnlặp.
t i u h a ki n tr c
Tối ưu hóa kiến trúc
  • Kiến trúc phần mềm là gì:
    • 1 phân đoạn cao cấp của thiết kế phần mềm
    • Được biết như: system architecture, high-level design và top-level design
    • Giữ nhiều chi tiết của hệ thống
t i u h a ki n tr c1
Tối ưu hóa kiến trúc
  • Tạisaophảicókiếntrúc
    • Chấtlượngcủakiếntrúcquyếtđịnhtínhthốngnhấtcủahệthống
    • Xácđịnhchấtlượngcuốicùngcủahệthống
    • Tạocấutrúcđểduytrìtínhthốngnhấttừcấpcaoxuốngcấpthấp
    • Cungcấphướngdẫncholậptrìnhviên ( ở 1 mứcđộphùhợpvớikĩnăngcủahọvàvớicôngviệcđanglàm)
    • Nóphầnvùnglàmviệcđểnhiềunhàpháttriển hay cácnhómpháttriểncóthểlàmviệc 1 cáchđộclập
t i u h a ki n tr c2
Tối ưu hóa kiến trúc

Good architecture makes construction easy

Bad architecture makes construction almost imposible

t i u h a ki n tr c3
Tối ưu hóa kiến trúc
  • Typical Architectural Components
  • Program Organization
  • Major Classes
  • Data Design
  • Business Rules
  • User Interface Design
  • resource Management
  • Security
  • Performance
  • Scalability
  • Interoperability
  • Internationalization/Localization
  • Input / Output
  • Error Processing
  • Fualt Tolerance
  • Architectural Feasibility
  • Overengineering
  • Buy-vs.-Build Decisions
  • Reuse Decisions
  • Change Strategy
  • General Architectureal Quality
t i u h a ki n tr c4
Tối ưu hóa kiến trúc
  • Program Organization
  • Định nghĩa building block(khối xây dựng) chính trong chương trình.
  • Che phủ tất cả các tính năng bởi ít nhất 1 block.
  • Kết hợp các yêu cầu chức năng của 2 hay nhiều block khi cùng thực hiện 1 chức năng để tránh xung đột
t i u h a ki n tr c5
Tối ưu hóa kiến trúc
  • Major Classes
  • Chỉ rõ các class chính được sử dụng.
  • Xác định chức năng và tương tác của mỗi class
  • Mô tả phân cấp class
  • Mô tả cách các class được tổ chức thành hệ thống phụ
  • Mô tả sự thiết của những class khácmà được xem xét
t i u h a ki n tr c6
Tối ưu hóa kiến trúc
  • Data Design
    • Mô tả những file và bảng chính được sử dụng
    • Mô tả các phương án thay thế được xem xét
    • Data nên được truy xuất trực tiếp bởi chỉ 1 subsystem hay class
    • Chỉ rõ tổ chức cấp cao và nội dung của bất kì cơ sở dữ liệu đã sử dụng
    • Lựa chọn mô hình lưu trữ dữ liệu
    • Xác định các tương tác có thể với các program khác khi cùng truy xuất cùng 1 dữ liệu
t i u h a ki n tr c7
Tối ưu hóa kiến trúc
  • Business Rules
    • Xác định các business rule(qui luật kinh doanh) và mô tả các qui tắc có ảnh hưởng đến hệ thống
t i u h a ki n tr c8
Tối ưu hóa kiến trúc
  • User Interface Design
    • Cần được qui định trong kiến trúc phần mềm
    • Xác định các yếu tố chính của các địng dạng Web page, GUIs, Command line, interfaces,….
    • Mô hình hóa
t i u h a ki n tr c9
Tối ưu hóa kiến trúc
  • Resource Management
    • Kế hoạch để quản lý các nguồn tài nguyên như: database connections, threads, handles.
    • Ước tính các nguồn tài nguyên
t i u h a ki n tr c10
Tối ưu hóa kiến trúc
  • Security
    • Mô tả cách tiếp cận design-level và code-level security.
    • Phát triển Coding Guiddlines với Security
t i u h a ki n tr c11
Tối ưu hóa kiến trúc
  • Performance
    • Ước tính và giải thích tại sao tin vào kết quả sẽ đạt được
    • Chỉ ra những khu vực có khả năng không đáp ứng các mục tiêu
    • Chỉ rõ yêu cầu sử dụng thuật toán hoặc các loại dữ liệu cụ thể để đáp ứng mục tiêu hiệu suất.
t i u h a ki n tr c12
Tối ưu hóa kiến trúc
  • Scalability
    • Mô tả cách hệ thống phát triển về số người sử dụng, số máy chủ, network nodes, database records và kích thước
  • Interoperability
    • Mô tả cách chia sẻ dữ liệu hoặc tài nguyên với các phần mềm, hoặc phần cứng khác như thế nào.
t i u h a ki n tr c13
Tối ưu hóa kiếntrúc
  • Internationalization/Localization
    • Ước tính tài nguyên được sử dụng với các chuỗi
    • Chỉ ra chuỗi tượng trưng và những vấn đề đã được xem xét.
    • Mô tả những chọn lựa nào được chọn và tại sao
t i u h a ki n tr c14
Tối ưu hóa kiếntrúc
  • Input/Output
    • Chỉ rõ a look – ahead, look – behind, hoặc just – in – time reading scheme
    • Mô tả cấp độ ở mỗi lỗi nhập xuất nào được phát hiện
      • At the field
      • Record
      • Stream
      • File
    • Đưa ra một chiến lược xử lý các lỗi 1 cách nhất quán
    • Thiết lập các qui ước thông báo lỗi
    • Chỉ rõ khi nào gặp ngoại lệ, cách lưu giữ, và được tài liệu hóa
t i u h a ki n tr c15
Tối ưu hóa kiếntrúc
  • Fault Tolerance
    • Chỉ ra các kĩ thuật làm tăng khả năng chịu lỗi được dự kiến
  • Architectural Feasibility
    • Chứng minh được hệ thống khả thi về mặt kĩ thuật
    • Chỉ ra cách mà các vấn đề được kiểm tra khi project không làm việc
t i u h a ki n tr c16
Tối ưu hóa kiếntrúc
  • Overengineering
    • Chỉ ra các sai lầm trên khía cạnh thiết kế
t i u h a ki n tr c17
Tối ưu hóa kiếntrúc
  • Buy-vs.-Build Decisions
    • Mô tả cách mà các thành phần được xây dựng thông qua các thư viện có sẵn
t i u h a ki n tr c18
Tối ưu hóa kiếntrúc
  • Reuse Decisions
    • Mô tả cách mà phần mềm tái sử dụng sẽ được thực hiện để phù hợp với các mục tiêu kiến trúc khác
t i u h a ki n tr c19
Tối ưu hóa kiếntrúc
  • Change Strategy
    • Mô tả rõ 1 chiến lược để xử lý những thay đổi.
    • Chỉ ra những cái tiến có thể được xem xét và những cải tiến trông dễ dàng để thực hiện
    • Chỉ ra các chiến lược cam kết trong việc chậm trễ.
t i u h a ki n tr c20
Tối ưu hóa kiếntrúc
  • General Architectural Quality
    • Mục tiêu của kiến trúc cần được rõ ràng.
    • Trình bày tất cả các quyết định quan trọng.
    • Xác định rõ ràng các khu vực có rủi ro
    • Chứa nhiều quan điểm
c c c ng c h tr
Các công cụ hỗ trợ
  • Thôngthường việc tối ưu hóa 1 chương trình thường phức tạp và chỉ dành cho các nhà chuyên môn hay phụ thuộc vào trình biên dịch, Tuy nhiên chúng ta có thể sử dụng 1 số công cụ để phân tích hiệu năng chương trình từ đó giúp lập trình viên có biết nơi cần tối ưu mã nguồn trong chương trình
c c c ng c h tr1
Các công cụ hỗ trợ

Một số công cụ phục vụ cho việc tối ưu hóa mã nguồn:

  • Acumem slowpotter
  • Aqtime: Dùng cho .Net
  • DevPartner: Dùng cho .Net và Java
  • ANTS Performance Profiler
  • CLR profiler: profile liên quan đến memmory trong .Net
  • Netbeans frofiler
  • Slim tune
slide43
Demo
  • Sử dụng công cụ ANTS performance profiler 6.2.3
t i li u tham kh o
Tài liệu tham khảo
  • Clean Code A Handbook of Agile Software Craftsmanship, Robert C.Martin
  • Microsoft Press Code Complete Second Edition eBook