DI ĐỘNG VÀ PHƯƠNG PHÁP PHÁT TRIỂN LINH HOẠT
2.2. Kỹ thuật phân tích và tái cấu trúc mã nguồn để nâng cao hiệu năng của ứng dụng d
2.2.4.6. Kết quả thử nghiệm
Ở kỹ thuật phân tích và tái cấu trúc mã nguồn dựa trên PMD và lint, đặt ra bài toán cải tiến chất lượng mã nguồn, giảm tiêu thụ năng lượng (tiêu thụ pin) của ứng dụng nhằm nâng cao hiệu năng cho hệ thống. Với bộ luật tạo ra ở Bảng 2.2 được dùng cho tối ưu hóa mã nguồn, giảm tiêu thụ năng lượng cho điện thoại Android. Kết quả thử
nghiệm bằng cách cài đặt “Show CPU Usage” của Developer Options trong các thiết bị Android để hiển thị CPU đã sử dụng. Sau khi cài đặt phần trăm CPU sử dụng trung bình theo thứ tự 01 phút gần nhất/05 phút gần nhất/10 phút gần nhất ở góc trên bên phải màn hình điện thoại. Trong quá trình thử nghiệm, tác giả của luận án thực hiện trên 5 loại ứng dụng khác nhau để so sánh trên cùng thiết bị với 02 cấu hình khác nhau. Kết quả thể hiện ở Bảng 2.3 cho cấu hình thiết bị tương ứng ở Hình 2.2 a) và Bảng 2.4 cho cấu hình thiết bị ở Hình 2.2. b). Giao diện thực hiện phân tích và tái cấu trúc mã nguồn như ở Hình 2.3.
Hình 2.2. Cấu hình điện thoại a) Motorola moto X, b) HTC One XL
Bảng 2.3: Thống kê % sử dụng CPU đã kiểm thử trên Motorola moto X
Ứng dụng Trước khi tối ưu Sau khi tối ưu
AndyChat (app) 0.39 / 0.5 / 0.59 0.24 / 0.18 / 0.29 Thegot2run (game) 1.28 / 1.16 /0.74 0.91 / 0.79 / 0.54 myFacebook (app) 0.2 / 0.16 / 0.25 0.17 / 0.18 / 0.23 ESSSpinner (SQLlite) 0.28 / 0.28 / 0.17 0.24 / 0.25 / 0.21 Play Sách (web) 0.86/3.04/6.97 0.62 / 2.14/ 4.68
Bảng 2.4: Thống kê % sử dụng CPU đã kiểm thử trên HTC One XL
Ứng dụng Trước khi tối ưu Sau khi tối ưu
AndyChat 0.72 / 0.9 / 1.0 0.32 / 0.29 / 0.4 Thegot2run 1.99 / 2.11 / 1.54 1.26 / 1.27 / 0.92 myFacebook 0.31 / 0.32 / 0.42 0.3 / 0.29 / 0.43 ESSSpinner 0.48 / 0.39 / 0.22 0.42 / 0.36 / 0.21 Play Sách (web) 0.76/3.25/6.27 0.57 / 2.10/5.68
Qua số liệu của Bảng 2.3 và Bảng 2.4 cho thấy việc áp dụng các kỹ thuật tối ưu mã nguồn và tái cấu trúc mã nguồn giúp làm tăng hiệu năng của ứng dụng và thiết bị; tương ứng với mỗi ứng dụng mức tỷ lệ sử dụng CPU của ứng dụng là giảm xuống như ứng dụng AndyChat giảm 60%, hay Thegot2run giảm 40%, Play Sách 10% ở mốc 10 phút. Tuy nhiên, nếu có nhiều ứng dụng được tối ưu và được cài đặt trên thiết bị đó thì kết quả tiết kiệm sử dụng năng lượng (pin) sẽ là rất đáng kể và có ý nghĩa.
Bảng 2.5 – Thống kê % sử dụng CPU của kết quả kiểm thử trên HTC One XL cho từng luật
Ứng dụng Luật Trước khi tối Sau khi tối ưu
ưu
Estate AvoidEmptyIf (luật 28) 0.28/0.22/0.14 0.27/0.19/0.14 Estate AvoidMethodCallsInLoop (luật 0.34/0.13/0.12 0.08/0.07 /0.10
32)
Who is UseStringLength- 0.51/0.17/0.08 0.09/0.10 /0.08 millionaire CompareEmptyString (luật 11)
Estate AvoidObjectInstantiation- 0.38/0.12/0.08 0.32/0.11 /0.07 InLoops(luật 33)
Book ConstantExpression (A 0.43/0.12/0.08 0.11/0.09 /0.07 management constant expression can be
evaluated (luật 8))
Book DefineInitialCapacities (luật 0.14/0.09/0.06 0.0 /0.04 /0.05 management 47)
Who is AvoidSynchronized- 0.22/0.07/0.06 0.01/0.08 /0.07 millionaire MethodsInLoop (luật 44)
(0.28 /0.22/0.14: the average % of CPU being used in the last 1-minute, 5 minutes and 10 minutes)
Bảng 2.5 cho biết CPU được sử dụng khi mỗi luật được triệu gọi. Tùy thuộc vào các luật cụ thể mà tỷ lệ giảm sau 01 phút sử dụng CPU là rất cao, chẳng hạn như AvoidMethodCallsInLoop,UseStringLength CompareEmptyString, DefineInitialCa- pacities, ... Tương ứng với từng chương trình, tất cả các luật trong Bảng 2.2 được đưa ra để tìm ra các vi phạm của chương trình có thể giúp các lập trình viên tối ưu hóa mã nguồn để cải thiện hiệu suất cho các ứng dụng. Hơn nữa, nếu có nhiều hơn một ứng dụng được tối ưu hóa, việc giảm mức tiêu thụ năng lượng sẽ đáng kể hơn nhiều.
Hình 2.3 thể hiện kết quả minh họa cho 1 luật bị vi phạm của lớp ShowlistAuthorActivity.java đó là “Define initial capacities”, thơng tin về luật bị vi phạm được mơ tả lý do và gợi ý dịng lệnh bị vi phạm cũng như chỉ ra câu lệnh thực sự trong mã nguồn bị vi phạm (vịng trịn đỏ (2) và (4), bên trái của hình) và phía bên phải (vịng trịn (3) và (5) ) sẽ gợi ý phương án chỉnh sửa, kỹ sư phát triển có thể chấp nhận việc chỉnh sửa gợi ý hoặc có thể bỏ qua, hoặc tự chỉnh sửa theo yêu cầu.