ฉันต้องการค้นหาว่าคอขวดอยู่ที่ใดในแอป Android ของฉัน
ฉันสามารถใช้เครื่องมือหรือเทคนิคการทำโปรไฟล์อะไรได้บ้าง?
ฉันต้องการค้นหาว่าคอขวดอยู่ที่ใดในแอป Android ของฉัน
ฉันสามารถใช้เครื่องมือหรือเทคนิคการทำโปรไฟล์อะไรได้บ้าง?
คำตอบ:
คุณสามารถใช้ Traceview มันห่างไกลจากอุดมคติ แต่ใช้ได้ผล บทความนี้อธิบายวิธีการใช้งาน
DDMS ดีที่สุดสำหรับ Android โดยค่าเริ่มต้นจะรวมอยู่ในปลั๊กอิน ADT
เอกสารนี้พร้อมตัวอย่างโดยละเอียดจะช่วยคุณจัดการกับ DDMS
สำหรับการวิเคราะห์หน่วยความจำลองใช้ Eclipse MAT
ขึ้นอยู่กับว่าคุณจะทดสอบอะไร
ในกรณีที่คุณพัฒนาแอปพลิเคชันสำหรับ Android คุณควรลองใช้คลาส TimingLogger ดูบทความนี้เกี่ยวกับการใช้คลาสตัวช่วย TimingLogger
เครื่องมือที่ดีมากคือJMeterและมีปลั๊กอินสำหรับ Androidด้วย
หากคุณไม่ต้องการใช้เครื่องมือภายนอก แต่เป็นวิธีมาตรฐานมากในการวัดเวลาที่ผ่านไปคุณต้องใช้ System.nanoTime () คุณไม่ควรใช้ currentTimeMillis เพราะจะวัดเวลาแบบนาฬิกาแขวนเนื่องจากไม่มีนาฬิกาของคอมพิวเตอร์ที่สมบูรณ์แบบ (จำเป็นต้องได้รับการแก้ไขเป็นครั้งคราว) มีกระบวนการที่ทำงานและออกการแก้ไขเล็กน้อยกับนาฬิการะบบอย่างต่อเนื่อง ไม่ต้องพูดถึงการแก้ไขอธิกวินาที
แม้ว่าจะมีการใช้ currentTimeMillis บ่อยครั้ง แต่การวัดเวลาและเวลาที่ผ่านไปยังไม่ถูกต้อง อย่างไรก็ตามเนื่องจากการร้องขอใช้เวลาพอสมควรคุณไม่ควรคาดหวังว่าจะทำเวลาได้อย่างถูกต้องในช่วงเวลาที่น้อยมาก แต่นั่นไม่ควรเป็นปัญหาในการทำงานกับ Android
ฉันจะแสดงตัวอย่าง:
long startTime = System.nanoTime();
// run/call the method
long endTime = System.nanoTime();
long diff = endTime - startTime ;
System.out.println("Elapsed milliseconds: " + diff /1000000);
คุณสามารถดูได้ที่ห้องสมุดนี้เช่นกัน: http://jetm.void.fm/
คุณสามารถค้นหาบทช่วยสอนสำหรับJMeter ได้เช่นกัน
เครื่องมืออื่นแนะนำในhttp://developer.android.com/training/articles/perf-tips.htmlเป็น Caliper: https://code.google.com/p/caliper/ (ยังไม่ได้ใช้งานเลยไม่ค่อยรู้เรื่อง)