ฉันจะสร้างโปรไฟล์แอพ Android ของฉันได้อย่างไร [ปิด]


93

ฉันต้องการค้นหาว่าคอขวดอยู่ที่ใดในแอป Android ของฉัน

ฉันสามารถใช้เครื่องมือหรือเทคนิคการทำโปรไฟล์อะไรได้บ้าง?


ฉันไม่คุ้นเคยกับ Android คุณสามารถเรียกใช้แอปภายใต้ดีบักเกอร์ที่คุณสามารถขัดขวางได้หรือไม่? ถ้าเป็นเช่นนั้นวิธีนี้ใช้ได้: stackoverflow.com/questions/375913/…
Mike Dunlavey

อืมน่าสนใจ ใช้แรงงานค่อนข้างมาก แต่อาจมีประโยชน์ในการระบุปัญหาด้านประสิทธิภาพที่เห็นได้ชัดเจน ขอบคุณ.
teedyay

ฉันเข้าใจว่าคุณคิดอย่างนั้นได้อย่างไร: stackoverflow.com/questions/2624667/…
Mike Dunlavey

ทุกวันนี้คุณสามารถสร้างโปรไฟล์ที่ดีภายใน Eclipse ได้ ลืมการเปิด TraceView แบบสแตนด์อโลน / ด้วยตนเอง ฯลฯ ฉันหวังว่าจะเขียนบทความบล็อกเกี่ยวกับเรื่องนี้พร้อมรายละเอียดเพิ่มเติม Ping me ถ้าคุณต้องการรายละเอียดเพิ่มเติม
KarolDepka

2
คุณแนะนำว่ามีอะไรที่ดีกว่า TraceView หรือ DDMS มันคืออะไร?
Peri Hartman

คำตอบ:


37

คุณสามารถใช้ Traceview มันห่างไกลจากอุดมคติ แต่ใช้ได้ผล บทความนี้อธิบายวิธีการใช้งาน


2
เมื่อฉันเรียกใช้สิ่งนี้จะแจ้งว่าเวอร์ชันบรรทัดคำสั่งเลิกใช้งานแล้วจึงออก วิธีการใหม่คืออะไร?
gonzobrains

18

DDMS ดีที่สุดสำหรับ Android โดยค่าเริ่มต้นจะรวมอยู่ในปลั๊กอิน ADT

เอกสารนี้พร้อมตัวอย่างโดยละเอียดจะช่วยคุณจัดการกับ DDMS


สำหรับการวิเคราะห์หน่วยความจำลองใช้ Eclipse MAT


4
เอกสาร Android เกี่ยวกับ DDMS: developer.android.com/tools/debugging/ddms.html
sulai

11

ขึ้นอยู่กับว่าคุณจะทดสอบอะไร

ในกรณีที่คุณพัฒนาแอปพลิเคชันสำหรับ 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 ได้เช่นกัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.