Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 64 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
64
Dung lượng
1,67 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - PHẠM XUÂN KIÊN NGHIÊN CỨU THỬ NGHIỆM MỘT SỐ KỸ THUẬT TỐI ƯU HIỆU NĂNG ỨNG DỤNG TRÊN ANDROID LUẬN VĂN THẠC SĨ KỸ THUẬT KỸ THUẬT PHẦN MỀM Hà Nội- 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - PHẠM XUÂN KIÊN NGHIÊN CỨU THỬ NGHIỆM MỘT SỐ KỸ THUẬT TỐI ƯU HIỆU NĂNG ỨNG DỤNG TRÊN ANDROID Chuyên ngành: Kỹ thuật phần mềm LUẬN VĂN THẠC SĨ KỸ THUẬT KỸ THUẬT PHẦN MỀM NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN HẢI THANH Hà Nội - 2016 LỜI CAM ĐOAN Tơi xin cam đoan tơi viết hồn tồn thống khơng chép, kết đo đạc mơ có luận văn chưa công bố từ tài liệu hình thức Các thơng tin sử dụng luận văn có nguồn gốc trích dẫn rõ ràng Tơi xin hồn tồn chịu trách nhiệm có dấu hiệu chép kết từ tài liệu khác Hà Nội, ngày 29 tháng năm 2016 TÁC GIẢ PHẠM XUÂN KIÊN LỜI CẢM ƠN Trong thời gian học tập, nghiên cứu hoàn thiện luận văn, em nhận giúp đỡ tận tình chu đáo thầy giáo Viện Công nghệ thông tin – Truyền thông Trường Đại học bách khoa Hà Nội Đầu tiên em xin gửi lời cảm ơn sâu sắc tới TS Nguyễn HảiThanh, người tận tình hướng dẫn giúp đỡ em hồn thành luận văn tốt nghiệp thạc sỹ suốt thời gian vừa qua Em xin cảm ơn quý thầy cô, anh chị bạn Viện Công nghệ thông tin – Truyền thông, Đại học Bách khoa Hà Nội có góp ý kịp thời bổ ích, giúp đỡ em suốt q trình nghiên cứu luận văn Ngoài ra, em xin bày tỏ lịng biết ơn sâu sắc đến gia đình, bạn bè, người ủng hộ em suốt q trình học tập hồn thành chương trình đào tạo Thạc sỹ Viện Công nghệ thông tin Truyền thông, Đại học Bách khoa Hà nội Mặc dù em nỗ lực cố gắng hoàn thiện luận văn tất nhiệt tình lực mình, nhiên khơng thể tránh khỏi thiếu sót, mong nhận đóng góp quý báu quý thầy cô bạn Em xin chân thành cảm ơn Hà Nội, ngày 29 tháng 09 năm 2016 HỌC VIÊN PHẠM XUÂN KIÊN DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT Ký hiệu Nghĩa Từ Viết Tắt Phần mềm quản lý sở liệu SQLite Hệ thống thông tin di động hệ 3G Third Generation Cellular OpenGL Open Graphics Library Tiêu chuẩn kĩ thuật đồ họa Wifi Wireless Fidelity Hệ thống mạng không dây SDK Software Development Kit Bộ công cụ phát triển phần mềm OS Operating system Hệ điều hành API Application Programming Interface Giao diện lập trình ứng dụng MMS Multimedia Messaging Service Dịch vụ nhắn tin đa phương tiện VM Virtual machine Máy ảo XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng Lru Least Recetly Used Sử dụng gần EDGE Enhance Data rates for thứ ba GSM Tốc độ liệu tăng cường cho Evolution mạng GSM cải tiến UI User Interface Giao diện người dùng URL Uniform Resource Locator Định vị tài nguyên vật chất GPU Graphics processing unit Bộ vi xử lý GC Garbage Collection Trình dọn rác FEC Forward Error Correction Sửa lỗi hồi tiếp GSM Global System for Mobile Hệ thống di động toàn cầu P2P Point to Point Điểm đến điểm SMS Short Message Service Tin nhắn ngắn MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT MỤC LỤC DANH MỤC BẢNG DANH MỤC HÌNH ẢNH LỜI MỞ ĐẦU CHƯƠNG 1:TỔNG QUAN VỀ HIỆU NĂNG CỦA ỨNG DỤNG 10 1.1Khái niệm 10 1.2 Tầm quan trọng 10 CHƯƠNG MỘT SỐ PHƯƠNG PHÁP GIÚP TỐI ƯU HÓA HIỆU NĂNG CỦA ỨNG DỤNG 13 2.1 Tối ưu hóa mã nguồn 13 2.1.1 Bộ nhớ cache 13 2.1.2 StrictMode 16 2.2 Sử dụng nhớ cách hiệu 17 2.2.2 Cấp phát thu hồi nhớ 18 2.2.3 Hạn chế sử dụng nhớ 20 2.2.4 Giải phóng tài nguyên thiếu nhớ 21 2.2.5 Tránh lãng phí sử dụng Bitmap 22 2.2.6 Có ý thức sử dụng nhớ 25 2.3 Sử dụng đa luồng đồng 26 2.3.1 Sử dụng Threads[8] 26 2.3.2 Sử dụng Asynctask[8] 28 CHƯƠNG 3: ĐÁNH GIÁ HIỆU NĂNG CỦA ỨNG DỤNG ANDROID 29 3.1Rendering Analysis Tools 30 3.1.1Debug GPU Overdraw Walkthrough 30 3.1.2 Profiling GPU Rendering Walkthrough 32 3.2 Memory Monitor 34 3.2.1 Memory monitor workflow 35 3.2.3 Hiển thị ứng dụng memory monitor 37 3.3 Phân tích hiệu suất UI với SysTrace 38 3.3.1 Tổng quan 38 3.3.2 Tạo Trace 39 3.3.3 Kiểm tra Frames 41 3.3.4 Điều tra Alerts 43 3.3.5 Truy tìm mã ứng dụng 44 CHƯƠNG 4: ÁP DỤNG PHƯƠNG PHÁP VÀO BÀI TOÁN THỰC TẾ 47 4.1 Một số kỹ thuật sử dụng ứng dụng 47 4.1.1 Giải phóng tài nguyên thiếu nhớ 47 RecyclingBitmapDrawable 47 4.1.2 Sử dụng nhớ cache 49 DiskLruCache 49 4.1.3 Tránh lãng phí sử dụng Bitmap 50 ImageResize 50 4.2 Phương pháp đánh giá hiệu 52 Sử dụng Memory Monitor 52 4.3 Phân tích toán 52 4.3.1 Yêu cầu toán 52 4.3.2 Biều đồ ca sử dụng 53 4.3.3 Môi trường thử nghiệm 53 4.4 Đánh giá kết 59 KẾT LUẬN VÀ KIẾN NGHỊ 61 TÀI LIỆU THAM KHẢO 62 DANH MỤC BẢNG Bảng 4.1 Phân tích thơng số Memory 59 Bảng 4.2 Phân tích thơng số Network 59 Bảng Phân tích thơng số CPU 60 DANH MỤC HÌNH ẢNH Hình 1.1 Tỉ lệ trung bình sử dụng ứng dụng 10 Hình 1.2 Tỉ lệ sử dụng ứng dụng tháng 11 Hình 1.3 Tỉ lệ sử dụng ứng dụng tần suất cao sau tháng 12 Hình 2.1 Cấu trúc vật lý hệ thống [10] 13 Hình 2.2 Cách tải hiển thị ảnh thủ công[10] 14 Hình 2.3 Sử dụng nhớ cache [10] 15 Hình 2.4 Cách hoạt động Lru [10] 15 Hình 2.5 Mơ hình chia sẻ nhớ [8] 18 Hình 2.6 Cơ chế đánh dấu điểm gốc tham chiếu 19 Hình 2.7 Kết trình GC 20 Hình 2.8 Danh sách số thiết bị nhớ 21 Hình 2.9 Danh sách thiết bị dung lượng pin tương ứng Error! Bookmark not defined Hình 2.10 Biểu đồ liệu sử dụng dạng liệu khác [13] Error! Bookmark not defined Hình 2.11 Biểu đồ so sánh tốc độ nén liệu [13] Error! Bookmark not defined Hình 2.12 Sơ đồ trạng thái pin sử dụng Error! Bookmark not defined Hình 3.1 Minh họa mức “render ” ứng dụng 30 Hình 4.2 Hướng dẫn cài đặt 31 Hình 3.3 Kết 32 Hình 3.5 So sánh sử dụng GPU OverDrawn 32 Hình 3.6 Hướng dẫn cài đặt Profiling GPU 33 Hình 3.7 Đồ thị kết sử dụng The Profile GPU Rendering Graph 34 Hình 3.8 Kết sử dụng Memory Monitor 37 Hình 3.9 Hình ảnh giây hoạt động ứng dụng hoạt động không tốt 39 Hình 3.10 Màn hình làm việc kiểm tra Frames 42 Hình 3.11 Màn hình làm việc kiểm tra Alert 43 Hình 3.12 Màn hình làm việc kiểm tra Alert lần 44 Hình 4.1 Biểu đồ ca sử dụng 53 Hình 4.2 Hiển thị danh sách ảnh 54 Hình 4.3 Giao diện chờ load ảnh chi tiết 54 Hình 4.4 Giao diện load ảnh 55 Hình 4.1 - Giao diện ảnh chi tiết 55 Hình 4.5 Lỗi 56 Hình 4.6 Có sử dụng phương pháp 57 Hình 4.7 Khơng sử dụng phương pháp 58 Bảng 4.1 Phân tích thơng số Memory 59 Bảng 4.2 Phân tích thơng số Network 59 // synchronized HashSet of references to reusable bitmaps if (Utils.hasHoneycomb()) { mReusableBitmaps = Collections.synchronizedSet(new HashSet()); } mMemoryCache = new LruCache(mCacheParams.memCacheSize) { // Notify the removed entry that is no longer being cached @Override protected void entryRemoved(boolean evicted, String key, BitmapDrawable oldValue, BitmapDrawable newValue) { if (RecyclingBitmapDrawable.class.isInstance(oldValue)) { // The removed entry is a recycling drawable, so notify it // that it has been removed from the memory cache ((RecyclingBitmapDrawable) oldValue).setIsCached(false); } else { // The removed entry is a standard BitmapDrawable if (Utils.hasHoneycomb()) { // We're running on Honeycomb or later, so add the bitmap // to a SoftReference set for possible use with inBitmap later mReusableBitmaps.add (new SoftReference(oldValue.getBitmap())); } } } } 48 4.1.2 Sử dụng nhớ cache DiskLruCache Bộ nhớ đệm cung cấp tốc độ truy cập nhanh tới Bitmap(được nêu chi tiết mục 2.1.1) Lớp LruCache (Sẵn có thư viện hỗ trợ sử dụng API trở lên) đặc biệt phù hợp với nhiệm vụ lưu giữ(caching) Bitmaps, giữ đối tượng gần đầytrong liên kết mạnh (strong references) sử dụng LinkedHashMap trục xuất thành viên sử dụng trước nhớ đệm vượt kích thước định Để chọn kích cỡ phù hợp với LruCache, số yếu tố cần xem xét, ví dụ: - Có hình ảnh hiển thị hình lúc? Có hình ảnh cần phải hiển thị - Kích thước hình mật độ điểm ảnh thiết bị bao nhiêu? Một hình độ phân giải cao (xhdpi) Galaxy Nexus cần nhớ cache lớn để giữ số hình ảnh nhớ so với thiết bị Nexus S (hdpi) - Kích thước cấu hình Bitmap bao nhiêu? Và sau tốn nhớ? Làm cách ảnh truy cập Hình ảnh truy cập thường xun hình ảnh khác? - Bạn cân chất lượng số lượng? Đôi hữu ích để lưu trữ số lượng lớn ảnh bitmap chất lượng thấp hơn, có khả tải phiên chất lượng cao cơng việc (background tasks) - Khơng có kích thước cụ thể cơng thức phù hợp với tất ứng dụng , bạn phải phân tích ứng dụng bạn đưa giải pháp phù hợp - Một nhớ đệm với kích thước nhỏ gây thêm tốn nhớ khơng có lợi ích, bố nhớ đệm với kích thước lớn lần gây ngoại lệ OutOfMemory có q nhớ dành cho phần lại cho ứng dụng bạn 49 4.1.3 Tránh lãng phí sử dụng Bitmap ImageResize Là cách giúp sử dụng nhớ cách hiệu thao tác với Bitmap, giúp tránh lãng phí nhớ mà đáp ứng nhu cầu xem ảnh người dùng(được nêu rõ mục 2.2.5) Lớp BitmapFactory cung cấp số phương pháp giải mã decodeByteArray (), decodeFile (), decodeResource (), vv) để tạo Bitmap từ nhiều nguồn khác nhau.Chọn phương pháp giải mã thích hợp dựa nguồn liệu hình ảnh bạn Những phương pháp cố gắng để cấp phát nhớ cho bitmap xây dựng dễ dàng dẫn đến ngoại lệ OutOfMemory Mỗi loại phương pháp giải mã có chữ ký bổ sung chophép bạn định tùy chọn giải mã thơng qua lớp BitmapFactory.Options Thiết lập thuộc tính inJustDecodeBounds true giải mã tránh cấp phát nhớ, trở null cho đối tượng bitmap thiết outWidth, outHeight outMimeType Kỹ thuật cho phép bạn đọc kích thước kiểu liệu hình ảnh trước xây dựng (và cấp phát nhớ) bitmap BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(getResources(), R.id.myimage, options); int imageHeight = options.outHeight; int imageWidth = options.outWidth; String imageType = options.outMimeType; Bây kích thước hình ảnh biết, họ sử dụng để định xem hình ảnh đầy đủ nên nạp vào nhớ, phiên subsampled nên nạp thay Dưới số yếu tố để xem xét: - Ước tính sử dụng nhớ tải hình ảnh đầy đủ nhớ - Số lượng nhớ mà bạn sẵn sàng cam kết để tải hình ảnh đưa yêu cầu nhớ khác ứng dụng bạn - Kích thước ImageView mục tiêu giao diện người dùng thành phần mà hình ảnh nạp vào 50 - Kích thước hình mật độ thiết bị Ví dụ, khơng phải giá trị tải hình ảnh 1024x768 điểm ảnh vào nhớ cuối hiển thị hình ảnh thu nhỏ 128x96 pixel ImageView Để nói decoder để subsample hình ảnh, tải phiên nhỏ vào nhớ, thiết inSampleSize true BitmapFactory.Options bạn phản đối Ví dụ, hình ảnh với độ phân giải 2048x1536 giải mã với inSampleSize tạo bitmap khoảng 512x384 Đang tải vào nhớ sử dụng 0.75MB 12MB cho hình ảnh đầy đủ (giả sử cấu hình bitmap ARGB_8888) Dưới phương pháp để tính tốn giá trị kích thước mẫu mà sức mạnh hai dựa chiều rộng chiều cao mục tiêu: publicstaticint calculateInSampleSize( BitmapFactory.Options options,int reqWidth,int reqHeight){ // Raw height and width of image finalint height = options.outHeight; finalint width = options.outWidth; int inSampleSize =1; if(height > reqHeight || width > reqWidth){ finalint halfHeight = height /2; finalint halfWidth = width /2; // Calculate the largest inSampleSize value that is a power of and keeps both // height and width larger than the requested height and width while((halfHeight / inSampleSize)>= reqHeight &&(halfWidth / inSampleSize)>= reqWidth){ inSampleSize *=2; } 51 } return inSampleSize; } 4.2 Phương pháp đánh giá hiệu Sử dụng Memory Monitor − Lí sử dụng • Hình ảnh trực quan, dễ dàng đưa nhận xét • Được tích hợp sẵn vào Android Studio • Thể thơng số quan tâm tới CPU, nhớ mạng − Cách thức sử dụng • Sử dụng phân tích chế hoạt động trình dọn rác GC để đánh giá hiệu ứng dụng, thể qua đường biểu đồ Memory • So sánh thời gian tải hiển thị ảnh điều kiện mạng 4.3 Phân tích tốn 4.3.1 u cầu tốn − Chạy − Đáp ứng chức xem ảnh − Trực quan, dễ sử dụng − Đáp ứng yêu cầu hiệu 52 4.3.2 Biều đồ ca sử dụng Hình 4.1 Biểu đồ ca sử dụng 4.3.3 Môi trường thử nghiệm Trong thực nghiệm, sử dụng phần mềm Android Studio phiên 2.2.2.0 để xây dựng hai ứng dụng có chức tải hiển thị ảnh Ta sử dụng thông số sau để so sánh hai ứng dụng: − Thời gian tải ảnh − Trạng thái ứng dụng tải ảnh(có tượng giật, hay khơng ) − Hoạt động ứng dụng người dùng muốn xem lại điều kiện khơng có mạng 53 Giao diện chương trình Hình 4.2 Hiển thị danh sách ảnh Hình 4.3 Giao diện chờ load ảnh chi tiết 54 Giao diện chương trình so sánh (khơng sử dụng kỹ thuật) Hình 4.1 - Giao diện ảnh chi tiết Hình 4.4 Giao diện load ảnh 55 Hình 4.5 Lỗi 56 Hình ảnh Android monitor ứng dụng Có sử dụng phương pháp 21 Hình 4.6 Có sử dụng phương pháp 57 Hình 4.7 Khơng sử dụng phương pháp 58 4.4 Đánh giá kết − Xét thơng số Memory Có sử dụng phương pháp Không sử dụng phương pháp Đường biểu đồ khơng có nét Đường biểu đồ có nhiều nét gập gập xuống xuống Bảng 4.1 Phân tích thơng số Memory Qua bảng 4.1 ta thấy áp dụng phương pháp tối ưu hiệu năng, trình dọn rác GC hoạt động tình trạng nhớ trạng thái đủ dùng Ngược lại, khơng sử dụng phương pháp, trình dọn rác bị kêu gọi liên tục tình trạng nhớ trạng thái thiếu − Xét thông số Network Thời gian tải hiển thị lần đầu Có sử dụng phương Không sử dụng phương pháp pháp Chậm Nhanh Thời gian tải hiển Không thời gian tải thị ảnh lần lại ảnh Mất thời gian tải lại ảnh Trong điều kiện khơng có mạng(khi người dùng muốn Vẫn hiển thị ảnh Không hiển thị ảnh xem lại ảnh) Bảng 4.2 Phân tích thơng số Network Qua bảng 4.2, ta thấy phương pháp có ưu nhược điểm riêng, nhiên, theo đánh giá cá nhân việc áp dụng phương pháp tối ưu hiệu hiệu đáp ứng yêu cầu đa số người dùng 59 − Xét thông số CPU: Kernel mode user mode giây thứ Có sử dụng phương pháp tối ưu hiệu Không sử dụng phương pháp tối ưu hiệu Kernel mode 5% 9% User mode 8% 24% Tổng số 13% 33% Bảng Phân tích thơng số CPU Qua bảng 4.3, ta thấy khơng sử dụng phương pháp tối ưu hiệu lượng CPU mà ứng dụng chiếm thiết bị lớn hẳn so với ứng dụng có sử dụng phương pháp tối ưu hiệu Nhận xét: Dựa vào so sánh bảng 4.1, 4.2, 4.3 ta rút kết luận sử dụng phương pháp tối ưu hiệu ứng dụng cao so với không sử dụng, điều thể rõ thông số Memory, CPU, Netwwork Về thời gian tải hiển thị ảnh lần chậm so với việc không áp dụng phương pháp tối ưu song lần hiển thị ảnh không cần tốn thời gian để tải lại ảnh, thời gian hiển thị ảnh lần sau nhanh hiển thị ảnh mơi trường khơng có mạng 60 KẾT LUẬN VÀ KIẾN NGHỊ A KẾT LUẬN Về báo cáo sản phẩm đạt yêu cầu đặt đề tài, là: Đưa khái niệm đánh giá tầm quan trọng hiệu ứng dụng Nêu số phương pháp làm tăng hiệu ứng dụng cách áp dụng chúng vào ứng dụng cụ thể Tìm hiểu số cơng cụ giúp đánh giá hiệu ứng dụng Thiết kế ứng dụng minh họa cho tính hiệu phương pháp làm tăng hiệu năng, giúp tối ưu ứng dụng Những khó khăn hướng giải Những khó khăn gặp phải q trình thực đề tài: - Hầu hết tài liệu tiếng anh nên việc tìm hiểu, nghiên cứu cịn gặp nhiêù trở ngại - Việc áp dụng kỹ thuật tối ưu vào toán cụ thể nhiều thời gian chưa có nhiều kinh nghiệm lập trình Hướng giải quyết: - Trau dồi thêm kỹ lập trình ngoại ngữ B HƯỚNG PHÁT TRIỂN ĐỀ TÀI Do điều kiện cá nhân hạn chế nên nghiên cứu số kỹ thuật tối ưu hiệu ứng dụng Android khuân khổ luận văn cịn chưa đầy đủ tất phương pháp Vì nghiên cứu vấn đề tập trung triển khai theo hướng tiếp theo: - Nghiên cứu thêm kỹ thuật tối ưu hiệu khác - Áp dụng kỹ thuật vào toán phức tạp - Tiến hành kiểm thử, so sánh hiệu phương pháp - Có kế hoạch lồng ghép việc giảng dạy kỹ thuật tối ưu nhằm phổ biến rộng rãi tới em sinh viên 61 TÀI LIỆU THAM KHẢO [1] http://stackoverflow.com/questions/5626947/optimizing-android-application- before-release [2] http://developer.android.com/training/efficient-downloads/efficient-network- access.html#PrefetchData [3] Marko Gargenta, Learning Android - Building Applications for the Android, Publisher: O'Reilly Media, 2011, 270 pages [4] https://developer.android.com/training/basics/activity-lifecycle/stopping.html [5] Frank Ableson, Charlie Collins, Robi Sen (2009), Unlocking Android: A Developer's Guide, Manning Pubs Co Series, 2009, 392 pages [6] O’Reily (2012), High Performance Android Apps, 264 pages [7] Enrique Lopez Manaz (2016) , Diego Grancini,Android High Performance Programming, 412 pages [8] Hervé Guihot ( 2012), Pro Android Apps Performance Optimization, 284 pages [9] Jim Handy (1998),The Cache Memory book, 229 pages [10] The Magic of LRU Cache (100 Days of Google Dev), Google Developer, 2015, https://www.youtube.com/watch?v=R5ON3iwx78M [11] Using LINT for Performance Tips (100 Days of Google Dev), Pre-scaling Bitmaps (100 Days of Google Dev), Google Developer, 2015, https://www.youtube.com/watch?v=R5ON3iwx78M 62 ... - PHẠM XUÂN KIÊN NGHIÊN CỨU THỬ NGHIỆM MỘT SỐ KỸ THUẬT TỐI ƯU HIỆU NĂNG ỨNG DỤNG TRÊN ANDROID Chuyên ngành: Kỹ thuật phần mềm LUẬN VĂN THẠC SĨ KỸ THUẬT KỸ THUẬT PHẦN MỀM NGƯỜI HƯỚNG... hiểu trình bày số phương pháp nâng cao hiệu ứng dụng, từ áp dụng phương pháp cách phù hợp vào ứng dụng cụ thể Nội dung luận văn ? ?Nghiên cứu thử nghiệm số kỹ thuật tối ưu hiệu ứng dụng Android? ?? gồm... Android? ?? gồm phần sau: Chương 1: Tổng quan hiệu ứng dụng Chương : Một số phương pháp tối ưu hóa hiệu ứng dụng Chương : Đánh giá hiệu ứng dụng Android Chương : Áp dụng phương pháp vào toán thực tế Để