Mar 4 2009

ทดลองใช้ ANTS Profiler

Category: .NET | Toolsm3rLinEz @ 21:24

เหมือนที่ชื่อบอกครับว่ามันคงเป็นผลิตภัณฑ์ในตระกูล Profiler นั่นแหละ

Profiler เป็นโปรแกรมที่ไว้วัดประสิทธิภาพในการทำงานของโปรแกรม โดยอาจจะวัดในแง่เวลาการทำงาน หรือหน่วยความจำที่ใช้ โดยวัดกันได้ถึงระดับ Class, Method เลยทีเดียว ตัวที่เอามาลองวันนี้เป็นของ Redgate ทดลองใช้แบบ Evaluation ได้ 14 วันครับ

โปรเจคที่เอามาลองเป็นโปรเจค C# ในวิชา Game Programming ซึ่งเป็นเกม 3D ที่ใช้ Graphics Engine ตัวหนึ่งชื่อ OGRE3D (หรือสั้นๆว่า OGRE : Object-Oriented Graphics Rendering Engine) ตัวเดียวกับที่ใช้ทำ Senior Project

ตอนแรกก็สงสัยเหมือนกันว่าแล้วเราใช้ Library เสริมในลักษณะนี้ แล้วตอนทำ Profile โปรแกรมมันจะไม่อืดน่าดูเหรอ (ยิ่งเป็น Application ประเภทเกมด้วย) ปรากฎว่าตอนลองทำ Profile ดูแทบไม่เห็นความแตกต่างเลยครับ ตัวโปรแกรมก็ใช้ง่ายมาก มีการทำ Profile ได้หลายแบบ ทำไปสองแบบคือ Profile Performance และ Profile Memory เอามาให้ดูเฉพาะ Profile Performance

ส่วนอันนี้เป็นการดูรายละเอียดแต่ละ method ดูได้ว่าเข้ามาจากทางไหนบ้าง กระโดดไปทำงานต่อที่ไหนบ้าง แต่ละส่วนใช้เวลาเท่าไหร่

สรุปว่าก็เป็น Tool ที่มีประโยชน์ครับ ไว้หาคอขวดของโปรแกรม คือส่วนที่ทำงานช้าที่สุด (ในเคมีเรียกว่าขั้นตอนกำหนดปฎิกริยาสินะ) และ Profile Memory ก็เอามาไว้ช่วยหา Memory Leak ได้ (ยังใช้ไม่เป็น - -‘a)

Tags:

Comments

1.
กร กร says:

C# มี mem leak ด้วยเหรอ???

2.
chakrit chakrit says:

ดูทำ visualize ได้ดีนะ เคยลองแต่ JetBrains dotTrace ไม่ค่อยดีเท่าไหร่

อันนี้ดูดีกว่าเยอะ

โหลดมาลองมั่ง!

3.
m3rlinez m3rlinez says:

@กร มีฮะ มันเป็นเคสแบบอะไรที่เราคิดว่าไม่ใช้แล้ว ไม่มีอะไร reference ไปถึงแล้ว น่าจะถูก garbage collect ไปในไม่ช้า แต่จริงๆยังมี reference ไปถึงอยู่ ก็เลยไม่โดนเก็บไปซะที

เวลาพูดถึง memory leak ใน C# แล้วมักจะนึกถึงทีมแข่งรถไร้คนขับของ DARPA ทีมนึงที่เขียนโปรแกรมบังคับรถแล้วรถวิ่งไปชั่วโมงกว่าๆก็หยุดทำงานซะเฉยๆ แต่ถ้าเปิดขึ้นมาทำงานใหม่ก็หาย (โค้ดบังคับรถเค้าเขียนด้วย C#) จนวันใกล้แข่งไม่รู้จะแก้ปัญหายังไงก็เลยทำนาฬิกาไว้ reset เครื่องเปิดใหม่อัตโนมัติ -.-' ผลปรากกฎว่าทีมนี้เกือบชนะการแข่งแล้ว แต่ก็มีปัญหาเรื่องหยุดทำงานซะเฉยๆนี่แหละเลยทำให้ไม่ถึงเส้นชัย มาเจอตอนหลังแข่งอีกทีว่า เกิด memory leak (เพิ่งไปอ่านมาอีกรอบปรากฎว่าเค้าใช้ ANTS เหมือนกัน!) ลองไปอ่านเต็มๆที่ www.codeproject.com/.../...edUsedANTSProfiler.aspx สนุกดี

4.
กร กร says:

เรื่องนี้เคยลงในบอร์ดรุ่นใช่มะ

C# ไม่ผิดนะคร้าบบบบ

Comments are closed