[r]
Trang 1K thu t l p trình Nâng caoỹ ậ ậ
Lê gia Minh
Trang 2N i dung ộ
Ôn t p.ậ
Khái ni m v tinh ch nh mã ngu n.ệ ề ỉ ồ
M t s k thu t tinh ch nh mã ngu n.ộ ố ỹ ậ ỉ ồ
M t s ví d ộ ố ụ
Trang 3Khá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 khi biên ỏ
d ch ( ph thu c vào compiler ) ị ụ ộ
Dùng các c u trúc d li u h p lý ấ ữ ệ ợ , c i ti n gi i ả ế ả thu t, s d ng các phat bi u h p lý cũng giúp ậ ử ụ ể ợ
làm tăng đáng k v hi u su t th i gian ch y ể ề ệ ấ ờ ạ
c a ch ủ ươ ng trình.
Trang 4Khái ni m tinh ch nh mã ngu n (tt) ệ ỉ ồ
Hai y u t th i gian và không gian mâu ế ố ờ thu n nhau ẫ Mu n ố ch y nhanh ạ thì
ch p nh n ấ ậ kích th ướ c ch ươ ng trình
l n ớ
( thí d : ụ b b t các 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 nay là ch p nh n d th a d ệ ấ ậ ư ừ ữ
Trang 5Thí dụ
Thí d : Có khai báo c u trúc v đo n th ng ụ ấ ề ạ ẳ
struct Line
{ int x1,y1; // đi m đ u ể ầ
int x2,y2; // đi 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 1 đo n th ng, 8 l n truy xu t d ỗ ầ ấ ộ ạ ẳ ầ ấ ữ
li u (bi n), 4 phép tr , 2 phép nhân, m t phép c ng và 1 ệ ế ừ ộ ộ
l i g i hàm sqrt đ ờ ọ ượ c th c thi ự
Trang 6Binary Search
{
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;
}
}
Trang 7Bà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
X3 + Y3 + Z3 = N X,Y,Z :nguyên
dương