You are on page 1of 41

TỐI ƯU PHẦN MỀM DI ĐỘNG

NGHIÊN CỨU BÀI BÁO


PERFORMANCE AND

10 ENERGY OPTIMIZATION
Thực hiện: Nhóm 10
Vũ Hoài Anh – CT040205
Nguyễn Văn Thắng – CT040245
Đào Thị Hằng Nga – CT040233
Nội dung trình bày
Tổng quan về bài báo “Performance and energy optimization”

Quá trình nghiên cứu và kết quả do bài báo đưa ra

Kết quả thực tế khi thực nghiệm

Tổng kết và kết luận


Tổng quan về bài báo “Performance and energy optimization”
Tổng quan về bài báo “Performance and energy optimization”
Tổng quan về bài báo “Performance and energy optimization”

Hiệu suất của thiết bị di động là gì?


 Khái niệm: Hiệu suất (performance) đo lường khả năng của ứng dụng thực thi nhanh
chóng và phản hồi mượt mà đối với người dùng
 Yếu tố ảnh hưởng: thời gian phản hồi, độ trễ, tốc độ thực thi các tác vụ, khả năng xử
lý đồng thời

Năng lượng của thiết bị di động là gì?


 Khái niệm: Năng lượng (Energy) liên quan đến lượng điện năng mà ứng dụng tiêu
thụ khi hoạt động, ảnh hưởng đến thời lượng pin và sự tiện lợi của người dùng di
động.
 Yếu tố ảnh hưởng: Các thiết bị như màn hình, CPU, cảm biến và việc truyền dữ liệu
qua mạng…
Tổng quan về bài báo “Performance and energy optimization”

Những yếu tố nào ảnh hưởng đến hiệu suất và mức độ tiêu thụ điện năng của các ứng dụng di động?

Những tiếp cận nào đã được đề xuất để tối ưu hiệu suất và năng lượng của ứng dụng Android?

Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức tiêu thụ điện năng trên các ứng dụng
Android gần đây?
Quá trình nghiên cứu và kết quả do bài báo đưa ra

01 Những khía cạnh nào ảnh hưởng đến hiệu suất và mức tiêu thụ năng lượng
của các ứng dụng di động ?

Þ trả về hàng trăm kết quả sau tìm kiếm

Þ Bài nghiên cứu sắp xếp mức độ liên quan và phù hợp => có cái nhìn tổng quát để
phân tích
Quá trình nghiên cứu và kết quả do bài báo đưa ra

Những khía cạnh nào ảnh hưởng đến hiệu suất và mức tiêu thụ năng
01
lượng của các ứng dụng di động ?

Màn hình (35%) CPU ( 13%) Kết nối mạng (11%)


Quá trình nghiên cứu và kết quả do bài báo đưa ra

02 Những tiếp cận nào đã được đề xuất để tối ưu hiệu suất và năng lượng ứng
dụng android ?

Þ Có 114 kết quả trả về


Quá trình nghiên cứu và kết quả do bài báo đưa ra
ANDROID NDK
02 Những tiếp cận nào đã được đề xuất để tối ưu hiệu suất và năng
lượng ứng dụng android ?

- Tránh sử dụng màn hình và CPU để tránh tiêu tốn năng lượng

=> giảm dần độ sáng màn hình + cải tiến DFS => giảm tổng tiêu thụ pin 10%

=> 75 % người dùng không thấy bất thường => không hiệu quả với game

- Yêu cầu nén đặt ở phần đầu HTTP

=> giảm thời gian hoạt động của mạng và tiêu thụ năng lượng

=> wifi được khuyên dùng khi trao đổi các dữ liệu lớn
Quá trình nghiên cứu và kết quả do bài báo đưa ra

02 Những tiếp cận nào đã được đề xuất để tối ưu hiệu suất và năng lượng ứng
dụng android ?

- Hệ thống cảm biến cho phép biết người dùng đang ở trong nhà hay ngoài trời, đang di chuyển
hay không, dựa vào các hành vi khác nhau => thiết lập các chế độ khác nhau

=> VD: khi ở nhà thì GPS sẽ tắt và CPU sẽ giảm xung nhịp để tiết kiệm pin

- Viết ra bộ mã tiết kiệm năng lượng

=> viết chương trình hoàn toàn hoặc một phần bằng native code
Quá trình nghiên cứu và kết quả do bài báo đưa ra

Tìm hiểu thêm : tối ưu điện năng

Dữ liệu về vị trí được cập nhật liên tục


Quá trình nghiên cứu và kết quả do bài báo đưa ra

Tìm hiểu thêm : tối ưu điện năng

Biểu đồ mức tiêu thụ điện năng khi ứng dụng vừa khởi chạy
Quá trình nghiên cứu và kết quả do bài báo đưa ra

Tìm hiểu thêm : tối ưu điện năng

Sử dụng Broadcast Receive để lắng nghe tình trạng pin thay đổi Đăng ký/ Hủy đăng ký receive trong onResume / onPause
Sử dụng Location Listener để lắng nghe các thay đổi về vị trí Hủy bỏ Location Listener bằng phương thức removeUpdates()
Quá trình nghiên cứu và kết quả do bài báo đưa ra
Quá trình nghiên cứu và kết quả do bài báo đưa ra

Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
03
năng lượng của các ứng dụng android gần đây?

Lựa chọn thuật toán

Thuật toán tính toán số nguyên

Thuật toán tính toán dấu phẩy động

Hoạt động truy cập bộ nhớ

Hoạt động đệ quy


Quá trình nghiên cứu và kết quả do bài báo đưa ra

Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
03 năng lượng của các ứng dụng android gần đây?
Phép đo hiệu suất
public void onClick(View v) {
long startTime = System.nanoTime();
String result = sangSNT();
System.out.println( "Total Time: " +
(System.nanoTime() - startTime) / 1000000);
tv.setText("Total Time Java: " +
(System.nanoTime() - startTime) / 1000000);
}
});

8000 phép đo thời gian đã được thực hiện


Quá trình nghiên cứu và kết quả do bài báo đưa ra

03 Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
năng lượng của các ứng dụng android gần đây?
Phép đo năng lượng

PowerTutor
Quá trình nghiên cứu và kết quả do bài báo đưa ra

03 Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
năng lượng của các ứng dụng android gần đây?
Ứng dụng để so sánh thuật toán
Quá trình nghiên cứu và kết quả do bài báo đưa ra
ANDROID NDK
Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
03
năng lượng của các ứng dụng android gần đây?
Phép tính toán số nguyên
- Android 2.3 và 2.1 : native code nhanh hơn java 3 lần
- Thiết bị thực tế: native code nhanh hơn 2-3 lần so với java
- Android 2.2: native code gần với java

Hoạt động truy cập bộ nhớ (sử dụng thuật toán bubble sort)
- Native code nhanh hơn java 30 lần

Tính toán dấu phẩy động


- Android 2.1 : Java mất thêm 30% thời gian
- Android 2.2 : Native code chậm hơn đáng kể so với Java => do Java tận dụng bộ đồng xử lý
dấu phẩy động chuyên dụng

Xử lý chuỗi
- Hiệu suất giảm đáng kể khi sử dụng native code
=> do Java và C sử dụng hệ thống mã hóa ký tự khác nhau
=> native code yêu cầu kiểu chuyển đổi có tác động tiêu cực đến hiệu suất tổng
Quá trình nghiên cứu và kết quả do bài báo đưa ra

Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
03
năng lượng của các ứng dụng android gần đây?
Phân tích kết quả tiêu thụ năng lượng

-Hầu hết kết quả thu được cho thấy mối tương quan
giữa thời gian thực hiện và mức tiêu thụ năng lượng.
-Đa phần, năng lượng tiêu thụ tỷ lệ thuận với thời gian
thực hiện.
-Nhưng độ chính xác của công cụ đo không thể xác
định => có một số sai lệch trong kết quả.

-Khi nói đến kết quả tiêu thụ năng lượng, Java và Integer calculations: prime numbers
native code dường như ngang nhau.
Quá trình nghiên cứu và kết quả do bài báo đưa ra

Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
03
năng lượng của các ứng dụng android gần đây?

Các yếu tố ảnh hưởng đến kết quả

Môi trường Android

Các phép đo không đủ chính xác

Sự khác biệt về phần cứng và các thiết bị

Khó khăn trong viết mã tương tự trong java và native code


Quá trình nghiên cứu và kết quả do bài báo đưa ra

Việc sử dụng native code ảnh hưởng như thế nào đến hiệu suất và mức sử dụng
03
năng lượng của các ứng dụng android gần đây?

Khám phá mở rộng

Sự khác biệt hiệu suất giữa Java và native code

Sự khác biệt giữa các phiên bản android

Sự khác biệt giữa thiết bị vật lý và trình mô phỏng

Ảnh hưởng thời gian thực hiện và mức tiêu thụ


Kết quả thực tế khi thực nghiệm

Lựa chọn 3 thuật toán

Thuật toán Sàng số nguyên tố

Thuật toán Fibonacci

Thuật toán Sắp xếp nổi bọt Bubble sort


Kết quả thực tế khi thực nghiệm

C
JAVA
Kết quả thực tế khi thực nghiệm

Java Native
Kết quả thực tế khi thực nghiệm

C
JAVA
Kết quả thực tế khi thực nghiệm

Java Native
Kết quả thực tế khi thực nghiệm

C
JAVA
Kết quả thực tế khi thực nghiệm

Java Native
Kết quả thực tế khi thực nghiệm

THỐNG KÊ SO SÁNH HIỆU SUẤT THỰC HIỆN GIỮA JAVA VÀ NATIVE CODE

Fibonacci
Kết quả thực tế khi thực nghiệm

THỐNG KÊ SO SÁNH HIỆU SUẤT THỰC HIỆN GIỮA JAVA VÀ NATIVE CODE

Bubble sort
Kết quả thực tế khi thực nghiệm

THỐNG KÊ SO SÁNH HIỆU SUẤT THỰC HIỆN GIỮA JAVA VÀ NATIVE CODE

Prime
Kết quả thực tế khi thực nghiệm

TẠI SAO VIỆC SỬ DỤNG NATIVE CODE


LẠI NHANH HƠN KHI SỬ DỤNG JAVA?
Kết quả thực tế khi thực nghiệm

SO SÁNH NĂNG LƯỢNG TIÊU THỤ GIỮ JAVA VÀ NATIVE CODE


Thuật toán sàng số
nguyên tố

Java Native
Kết quả thực tế khi thực nghiệm

SO SÁNH NĂNG LƯỢNG TIÊU THỤ GIỮ JAVA VÀ NATIVE CODE

Thuật toán Bubble


sort
Kết quả thực tế khi thực nghiệm

SO SÁNH NĂNG LƯỢNG TIÊU THỤ GIỮ JAVA VÀ NATIVE CODE

Thuật toán
Fibonacci
Kết quả thực tế khi thực nghiệm

MỐI TƯƠNG QUAN GIỮA HIỆU SUẤT VÀ NĂNG LƯỢNG Fibonacci


Prime

Bubble sort
Kết quả thực tế khi thực nghiệm
Kết Luận

 Tất cả các thí nghiệm đều liên quan đến chủ đề chính của bài báo này: so sánh
hiệu suất và hiệu quả năng lượng giữa Java và Native code trên Android.
 Việc sử dụng native code là hợp lý nếu một ứng dụng liên quan đến xử lý số
lượng lớn dữ liệu và thực hiện các phép tính số nguyên, hoạt động bộ nhớ cường
độ cao hoặc đệ quy sâu
 Kết quả từ các phép đo năng lượng cho thấy mối tương quan chặt chẽ giữa thời
gian thực hiện và mức tiêu thụ năng lượng.

Năng lượng tỉ lệ thuận với thời gian thưc hiện


=> Hiệu suất tăng => Năng lượng giảm
DEMO

You might also like