[r]
(1)1
TINH CH NH MÃ NGU NỈ Ồ
K thu t l p trình Nâng caoỹ ậ ậ
(2)N i dungộ
Ôn t p.ậ
Khái ni m v tinh ch nh mã ngu n.ệ ề ỉ
(3)3
Khái ni m tinh ch nh mã ngu nệ ỉ ồ
M t chộ ương trình hi u q aệ ủ
Biên d ch nhanh (cơng s c l p trình)ị ứ ậ
Y u t th i gian: ế ố NHANH (góc nhìn c a user)ủ Y u t l u tr : ế ố ữ NH Ỏ (y u t không gian)ế ố
Khó đ t đạ ược c baả
Ngày nay: Y u t th i gian đế ố ờ ược xem tr ngọ
Mu n biên d ch nhanhố ị B Optimizer biên ỏ
d ch ( ph thu c vào compiler )ị ụ ộ
Dùng c u trúc d li u h p lýấ ữ ệ ợ , c i ti n gi i ả ế ả
thu t, s d ng phat bi u h p lý giúp ậ ụ ể ợ
làm tăng đáng k v hi u su t th i gian ch y ể ề ệ ấ
(4)Khái ni m tinh ch nh mã ngu n (tt)ệ ỉ ồ
Hai y u t th i gian không gian mâu ế ố
thu n ẫ Mu n ố ch y nhanhạ
ch p nh n ấ ậ kích thước chương trình l n.ớ
( thí d : ụ b b t l i g i hàm ỏ ọ )
Ngày nay, v i s ti n b c a k thu t, ự ế ộ ủ ỹ ậ
CPU t c đ cao, b nh l n, khuynh ố ộ ộ ớ
hướng hi n ch p nh n d th a d ệ ấ ậ ữ
(5)5
Thí dụ
Thí d : Có khai báo c u trúc v đo n th ngụ ấ ề ạ ẳ struct Line
{ int x1,y1; // m đ uể ầ int x2,y2; // m cu iể ố };
double getLen (Line L) // hàm tính đ dàiộ { return sqrt( (L.y2-L.y1)*(L.y2-L.y1) +
(L.x2-L.x1)*(L.x2-L.x1)); }
M i l n truy xu t đ dài đo n th ng, l n truy xu t d ỗ ầ ấ ộ ẳ ầ ấ ữ
li u (bi n), phép tr , phép nhân, m t phép c ng ệ ế ộ ộ
(6)Binary Search
int BSearch(int A[],int n,int T) {
int L = 0, R = n-1; int m ;
while(1) {
if (L>R) return –1; m = (L+R)/2;
if (A[m]==T) return m ; else if (A[m]<T) L = m+1;
else if (A[m]>T) R = m-1; }
(7)35
Bài t pậ
Tinh ch nh code sau :ỉ
if (strcmp(s1,s2)==0) printf(“equal”);
else if (strcmp(s1,s2) >0) printf(“greater than”); else printf(“less than”);
Gi i h phả ệ ương trình :
X + Y + Z = M