TỐI ƯU HÓA MÃ NGUỒN

44
TỐI ƯU HÓA MÃ NGUỒN Nhóm 10 1

description

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ì?. - PowerPoint PPT Presentation

Transcript of TỐI ƯU HÓA MÃ NGUỒN

Page 1: TỐI ƯU HÓA MÃ NGUỒN

TỐI ƯU HÓA MÃ NGUỒN

Nhóm 10

1

Page 2: TỐI ƯU HÓA MÃ NGUỒN

Các nội dung chính2

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

Page 4: TỐI ƯU HÓA MÃ NGUỒN

Lý do cần tối ưu hóa mã nguồn. 4

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.ấ ượ ủ ồ

Page 5: TỐI ƯU HÓA MÃ NGUỒN

5

Tối ưu hóa giao diện

T i u hoá giao di n là gì?ố ư ệ T i u hoá giao di n nh th nào?ố ư ệ ư ế

Page 6: TỐI ƯU HÓA MÃ NGUỒN

6

Tối ưu hoá giao diện là gì?

M t giao di n khó s d ng???ộ ệ ử ụ ng i dùng c m th y không tho i mái khi ườ ả ấ ả

s d ng, s l ng ng i dùng sẽ ítử ụ ố ượ ườ M t giao di n d s d ng, không m t th i gian ộ ệ ễ ử ụ ấ ờ

h ng d n nhi u???ướ ẫ ề ng i dùng sẽ c m th y tho i mái s ườ ả ấ ả ử

d ng h n, s l ng ng i s d ng sẽ nhi uụ ơ ố ượ ườ ử ụ ề

Page 7: TỐI ƯU HÓA MÃ NGUỒN

7

Tối ưu hoá giao diện là gì?

T i u hoá giao di n là công vi c thi t k , phát ố ư ệ ệ ế ếtri n giao di n c a ch ng trình đ nâng cao ể ệ ủ ươ ểtính ti n d ng c a ch ng trình.ệ ụ ủ ươ

Giao di n đã t i u hoá:ệ ố ư Tr c quan v i ng i dùngự ớ ườ Ít ph i h ng d n cho ng i s d ngả ướ ẫ ườ ử ụ Đúng chu n giao di n???ẩ ệ

Page 8: TỐI ƯU HÓA MÃ NGUỒN

8

Tối ưu hoá giao diện như thế nào?

T ng t ng ra 1 s ng i dùngưở ượ ố ườ Hình dung ra các ho t đ ng quan tr ngạ ộ ọ Tìm 1 mô hình s d ng mà ng i dùng mong ử ụ ườ

đ i nh tợ ấ Phát th o b n thi t k đ u tiênả ả ế ế ầ Thay đ i b n thi t k sao cho phù h p v i ổ ả ế ế ợ ớ

ng i s d ng mà b n t ng t ng raườ ử ụ ạ ưở ượ Đ a ng i th t s s d ng r i ti p thu ý ki nư ườ ậ ự ử ụ ồ ế ế

Page 9: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý9

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 cung 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.ạ

Page 10: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý10

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. Phep ử ụ ơ ốc ng và phep 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.ề ạ ể ế ệ ờ

Page 11: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý11

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;

Page 12: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý12

Minimize Array References: gi m s l n tham ả ố ầchi u đ n ph n t m ng:ế ế ầ ử ả

Use Supplementary Indexes: ch s b sung. i ố ổ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 ii ố ộ ỗ B n có th áp d ng các ý t ng v vi c l p ch ạ ể ụ ưở ề ệ ậ i

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.ỗ ạ ầ

Page 13: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý13

Independent, Parallel Index Structure: đ c l p, ộ ậc u trúc ch m c song song. T o các ch m c ấ i ụ ạ i ụ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 ọ o o ếtin chi ti t.ế

Use caching: l u nh ng giá tr th ng dùng, ư ữ i ườ

Page 14: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý14

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) thenIf(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.ợ ườ ặ

Page 15: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý15

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)ệ ư ạ

Page 16: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý16

2. Loop: Vong l p đ c th c thi nhi u l n trong ặ ượ ự ề ầch ng trình, và nó là đi m nóng trong ch ng ươ ể ươtrình, và chúng ta ph i làm chúng nhanh h n.ả ơ

Unswitching: là đ t bi u th c đi u ki n bên ặ ể ư ề ệngoài vong l p thay vì đ t bên trong vong ặ ặl p( switching).ặ

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

if ( sumType == SUMTYPE_NET ) {

netSum = netSum + amount[ i ];

} else {

grossSum = grossSum + amount[ i ];

}

}

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 ]; } }

Page 17: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý17

Jamming: là k t qu c a s k t h p 2 vong l p ế ả ủ ự ế ợ ặcùng th c hi n trên 1 t p h p các giá tr .ự ệ ậ ợ i

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

employeeName[i]=””;

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

employeeEarnings[i]=0;

T i u:ố ưfor (int i=0;i< employeeCount;i++)

{

employeeName[i]=””;

employeeRarnings[i]=0;

}

Page 18: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý18

Unrolling : gi m s l n l p. Nh ng trong tr ng ả ố ầ ặ ư ườh p này thì tăng kích th c vong l p( s dong ợ ướ ặ ốcode). Ph ng pháp này thì chi phí l p gi m ươ ặ ảkhông đáng k . ể

Minimizing the Work Inside Loops: gi m công ảvi c làm trong vong l p, th c hi n bên ngoài ệ ặ ự ệvong l p và trong vong l p áp d ng k t qu có ặ ặ ụ ế ảđ c ngoài vong l p.ượ ở ặ

Sentinel Values: giá tr lính gác , áp d ng trong i ụtr ng h p trong vong l p có đi u ki n kep, và ườ ợ ặ ề ệchuy n thành 1 đi u ki n đ n gi n.ể ề ệ ơ ả

Page 19: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa xử lý19

Putting the Busiest Loop on the Inside: đ t vong ặl p có s l n l p nhi u nh t đ t bên trong.ặ ố ẩ ặ ề ấ ặ

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

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

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

Strength Reduction: đ i v i bên trong vong l p ố ớ ặcó nhân và hành đ ng ph c t p ta có th thay ộ ư ạ ểb ng 1 hoat đ ng đ n gi n h n và tính toán 1 ă ộ ơ ả ơcon s thay nhân, và con s này tăng sau m i ố ố ỗl n l p.ầ ặ

Page 20: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trúc

20

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

Page 21: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trúc

T i sao ph i có ki n trúcạ ả ế Ch t l ng c a ki n trúc quy t đ nh tính th ng nh t c a h ấ ượ ủ ế ế i ố ấ ủ ệ

th ngố Xác đ nh ch t l ng cu i cùng c a h th ngi ấ ượ ố ủ ệ ố T o c u trúc đ duy trì tính th ng nh t t c p cao xu ng ạ ấ ể ố ấ ư ấ ố

c p th pấ ấ Cung c p h ng d n cho l p trình viên ( 1 m c đ phù ấ ướ ẫ ậ ở ư ộ

h p v i kĩ năng c a h và v i công vi c đang làm)ợ ớ ủ ọ ớ ệ Nó ph n vùng làm vi c đ nhi u nhà phát tri n hay các ầ ệ ể ề ể

nhóm phát tri n có th làm vi c 1 cách đ c l pể ể ệ ộ ậ

Page 22: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trúc

Good architecture makes construction easy

Bad architecture makes construction almost imposible

Page 23: TỐI ƯU HÓA MÃ NGUỒN

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

Page 24: TỐI ƯU HÓA MÃ NGUỒN

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

Page 25: TỐI ƯU HÓA MÃ NGUỒN

Major Classes

Tối ưu hóa kiến trúc

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

Page 26: TỐI ƯU HÓA MÃ NGUỒN

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 xet ả ươ ế ượ Data nên đ c truy xu t tr c ti p b i ch 1 ượ ấ ự ế ở i

subsystem hay class Ch rõ t ch c c p cao và n i dung c a b t kì c s i ổ ư ấ ộ ủ ấ ơ ở

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 i ươ ể ớ

khi cùng truy xu t cùng 1 d li uấ ữ ệ

Page 27: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trúc

Business Rules

Xác đ nh các business rule(qui lu t kinh doanh) và i ậmô t các qui t c có nh h ng đ n h th ngả ă ả ưở ế ệ ố

Page 28: TỐI ƯU HÓA MÃ NGUỒN

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ầ ượ i ế ầ ề Xác đ nh các y u t chính c a các đ ng d ng Web i ế ố ủ i ạ

page, GUIs, Command line, interfaces,…. Mô hình hóa

Page 29: TỐI ƯU HÓA MÃ NGUỒN

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Ướ ồ

Page 30: TỐI ƯU HÓA MÃ NGUỒN

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ể ớ

Page 31: TỐI ƯU HÓA MÃ NGUỒN

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 i ữ ự ả ư

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 i ầ ử ụ ậ ặ ạ ữ

li u c th đ đáp ng m c tiêu hi u su t.ệ ụ ể ể ư ụ ệ ấ

Page 32: TỐI ƯU HÓA MÃ NGUỒN

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.ầ ề ặ ầ ư ư ế

Page 33: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trú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 i ỗ ượ ư ữ ấ ề ượ

xem xet. Mô t nh ng ch n l a nào đ c ch n và t i saoả ữ ọ ự ượ ọ ạ

Page 34: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trúc

Input/Output Ch rõ a look – ahead, look – behind, ho c just – in – time i ặ

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óai ặ ạ ệ ư ữ ượ ệ

Page 35: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trúc

Fault Tolerance Ch ra các kĩ thu t làm tăng kh năng ch u l i đ c i ậ ả i ỗ ượ

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 i ấ ề ượ ể

project không làm vi cệ

Page 36: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trúc

Overengineering Ch ra các sai l m trên khía c nh thi t k i ầ ạ ế ế

Page 37: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trú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ư ệ ẵ

Page 38: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trú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ệ ể ợ ớ ụ ế

Page 39: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trú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 xet và nh ng i ữ ế ể ượ ữ

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 .i ế ượ ế ệ ậ ễ

Page 40: TỐI ƯU HÓA MÃ NGUỒN

Tối ưu hóa kiến trú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.ấ ả ế i ọ Xác đ nh rõ ràng các khu v c có r i roi ự ủ Ch a nhi u quan đi mư ề ể

Page 41: TỐI ƯU HÓA MÃ NGUỒN

Các công cụ hỗ trợ41

Thông th 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 ườ ư ạ inhà 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 i ể ử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

Page 42: TỐI ƯU HÓA MÃ NGUỒN

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

42

Page 43: TỐI ƯU HÓA MÃ NGUỒN

Demo43

S d ng công c ANTS performance profiler ử ụ ụ6.2.3

Page 44: TỐI ƯU HÓA MÃ NGUỒN

Tài liệu tham khảo

o Clean Code A Handbook of Agile Software Craftsmanship, Robert C.Martin

o Microsoft Press Code Complete Second Edition eBook