วิธีทดสอบประสิทธิภาพมุมมองแบบกำหนดเอง

Aug 19 2020

ฉันต้องการทดสอบประสิทธิภาพการแสดงผล 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 สำหรับมุมมองที่กำหนดเอง

รูปภาพโปรไฟล์ของฉัน

คำตอบ

1 EsjayIT Aug 27 2020 at 16:55

คุณสามารถวัดประสิทธิภาพได้อย่างง่ายดายโดยใช้เครื่องมือสร้างโปรไฟล์ในตัวของ 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)
    }
}
  1. ดำเนินโครงการ
  2. เริ่มสร้างโปรไฟล์รอจนกว่ากราฟจะเป็นปกติ
  3. บนปุ่มคลิก startTest () คุณจะเห็นกราฟกลายเป็นปกติถึงสูง
  4. เลือกพื้นที่ที่ครอบคลุมพื้นที่สูงของกราฟและดูเวลาเริ่มต้นและเวลาสิ้นสุด
  5. ใช้เครื่องคิดเลขอย่างง่ายและวัดความแตกต่าง

ผลการทดสอบของฉัน: การเพิ่ม textview 10,000 ครั้งใน linearlayout ใช้เวลา 32.411 วินาที (ข้อมูลอุปกรณ์ที่ระบุไว้ด้านบน)