วิธีทดสอบประสิทธิภาพมุมมองแบบกำหนดเอง
ฉันต้องการทดสอบประสิทธิภาพการแสดงผล UI ของคอมโพเนนต์ที่กำหนดเอง ฉันใช้กรณีทดสอบต่อไปนี้เพื่อตรวจสอบประสิทธิภาพการแสดงผล
private long getLayoutTime(int layoutRes) {
final Context targetContext = getInstrumentation().getTargetContext();
final LayoutInflater layoutInflater = LayoutInflater.from(targetContext);
final long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
final View view = layoutInflater.inflate(layoutRes, null);
view.setLayoutParams(new ViewGroup.LayoutParams(0, 0));
view.measure(View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
final int measuredHeight = view.getMeasuredHeight();
final int measuredWidth = view.getMeasuredWidth();
view.layout(0, 0, measuredWidth, measuredHeight);
}
return System.currentTimeMillis() - startTime;
}
การใช้รหัสนี้ฉันสามารถทดสอบเวลาในการแสดงเค้าโครง ดังนั้นฉันจึงเปลี่ยนการออกแบบเค้าโครงเพื่อประสิทธิภาพที่ดีขึ้น ตอนนี้ฉันกำลังสร้างคลาสมุมมองแบบกำหนดเองที่มีเค้าโครงและส่วนประกอบหลายอย่างเช่นรูปภาพมุมมองข้อความและอื่น ๆ ฉันจะแนบคลาสในขณะทำงานและส่วนประกอบจะสร้างตามเวลาทำงานตามการตอบสนองของเซิร์ฟเวอร์ ฉันจะไม่แนบส่วนประกอบที่กำหนดเองนี้ใน XML ตอนนี้ฉันต้องการทดสอบประสิทธิภาพการแสดงผลของมุมมองแบบกำหนดเองนี้ โปรดแนะนำเครื่องมือหรือวิธีใด ๆ ในการคำนวณเวลาในการแสดงผล UI สำหรับมุมมองที่กำหนดเอง
รูปภาพโปรไฟล์ของฉัน

คำตอบ
คุณสามารถวัดประสิทธิภาพได้อย่างง่ายดายโดยใช้เครื่องมือสร้างโปรไฟล์ในตัวของ android studio (ที่แผงด้านล่างซ้าย) สำคัญ: ประสิทธิภาพของมุมมองของลูกค้าขึ้นอยู่กับอุปกรณ์ที่ใช้งานอยู่นี่คือตัวอย่างที่ฉันได้ทดสอบสำหรับ redmi 7a
อุปกรณ์: redmi 7a RAM: 2GB
private fun startTest() {
for (x in 0..10000) {
val textview = TextView(this)?.apply { text = "Dummy Text $x" }
mLinearLayout?.addView(textview)
}
}
- ดำเนินโครงการ
- เริ่มสร้างโปรไฟล์รอจนกว่ากราฟจะเป็นปกติ
- บนปุ่มคลิก startTest () คุณจะเห็นกราฟกลายเป็นปกติถึงสูง
- เลือกพื้นที่ที่ครอบคลุมพื้นที่สูงของกราฟและดูเวลาเริ่มต้นและเวลาสิ้นสุด
- ใช้เครื่องคิดเลขอย่างง่ายและวัดความแตกต่าง
ผลการทดสอบของฉัน: การเพิ่ม textview 10,000 ครั้งใน linearlayout ใช้เวลา 32.411 วินาที (ข้อมูลอุปกรณ์ที่ระบุไว้ด้านบน)
