คุณใช้โปรไฟล์อะไรเมื่อทำงานกับโปรแกรม. net และแนะนำโดยเฉพาะอย่างยิ่ง
คุณใช้โปรไฟล์อะไรเมื่อทำงานกับโปรแกรม. net และแนะนำโดยเฉพาะอย่างยิ่ง
คำตอบ:
ฉันใช้JetBrains dotTraceและRedgate ANTSอย่างกว้างขวาง พวกเขาค่อนข้างคล้ายกันในคุณสมบัติและราคา พวกเขาทั้งสองนำเสนอการทำโปรไฟล์ประสิทธิภาพที่มีประโยชน์และการทำโปรไฟล์หน่วยความจำพื้นฐานค่อนข้าง
dotTrace ทำงานร่วมกับ Resharper ซึ่งสะดวกมากเพราะคุณสามารถบันทึกประสิทธิภาพของการทดสอบหน่วยได้ด้วยคลิกเดียวจาก IDE อย่างไรก็ตาม dotTrace มักจะให้ผลลัพธ์ที่น่าเกรงขาม (เช่นบอกว่าวิธีการใช้เวลาหลายปีกว่าจะทำงานได้)
ฉันชอบวิธีที่ ANTS นำเสนอผลลัพธ์การทำโปรไฟล์ มันแสดงให้คุณเห็นซอร์สโค้ดและด้านซ้ายของแต่ละบรรทัดจะบอกคุณว่าต้องใช้เวลานานแค่ไหนในการรัน dotTrace มีมุมมองแบบต้นไม้
ผู้สร้างโปรไฟล์ EQATECนั้นค่อนข้างเรียบง่ายและต้องการให้คุณรวบรวมแอสเซมบลีรุ่นพิเศษของคุณซึ่งสามารถเรียกใช้ในตัวสร้างโปรไฟล์ EQATEC ได้ อย่างไรก็ตามมันฟรี
โดยรวมแล้วฉันชอบ ANTS สำหรับการทำโปรไฟล์ประสิทธิภาพแม้ว่าถ้าคุณใช้ Resharper การรวมกันของ dotTrace นั้นเป็นคุณสมบัตินักฆ่าและหมายความว่ามันจะใช้ ANTS ในการใช้งาน
Profiles Microsoft CLR ฟรี ( .Net Framework 2.0 / .Net Framework 4.0 ) เป็นสิ่งที่คุณต้องการสำหรับการทำโปรไฟล์หน่วยความจำ. NET
ปรับปรุง 2011:
Profiler หน่วยความจำ Scitechมีค่อนข้าง UI พื้นฐาน แต่จำนวนของข้อมูลที่เป็นประโยชน์รวมทั้งข้อมูลเกี่ยวกับหน่วยความจำที่ไม่มีการจัดการที่ dotTrace และมดขาด - คุณอาจพบว่ามีประโยชน์ถ้าคุณกำลังทำ interop COM แต่ฉันยังไม่พบ Profiler ใด ๆ ที่ทำให้ COM ปัญหาหน่วยความจำง่ายในการวินิจฉัย - windbg.exe
คุณมักจะมีการแบ่งออก
ตัวสร้าง ANTS เกิดขึ้นอย่างก้าวกระโดดในไม่กี่ปีที่ผ่านมาและตัวสร้างหน่วยความจำของมันมีคุณสมบัติที่มีประโยชน์จริง ๆ ซึ่งตอนนี้ผลักมันไปข้างหน้าของ dotTrace เป็นแพ็คเกจในการประมาณของฉัน ฉันโชคดีพอที่มีใบอนุญาตสำหรับทั้งคู่ แต่ถ้าคุณจะซื้อ. profiler สุทธิสำหรับทั้งประสิทธิภาพและหน่วยความจำให้ทำ ANTS
คนอื่น ๆ ได้ครอบคลุมถึงการทำโปรไฟล์ประสิทธิภาพ แต่เกี่ยวกับการทำโปรไฟล์หน่วยความจำ ฉันกำลังประเมินทั้ง Scitech .NET Memory Profiler 3.1 และ ANTS Memory Profiler 5.1 (รุ่นปัจจุบัน ณ เดือนกันยายน 2009) ฉันลอง JetBrains เมื่อหนึ่งหรือสองปีก่อนและมันก็ไม่ดีเท่า ANTS (สำหรับการทำโปรไฟล์ความจำ) ดังนั้นฉันจึงไม่ได้ใส่ใจในครั้งนี้ จากการอ่านเว็บไซต์ดูเหมือนว่ามันจะไม่มีคุณสมบัติการทำโปรไฟล์หน่วยความจำเหมือนกับอีกสองอย่าง
ทั้ง ANTS และผู้สร้างโปรไฟล์หน่วยความจำ Scitech มีคุณสมบัติที่อื่น ๆ ไม่ได้ดังนั้นสิ่งที่ดีที่สุดจะขึ้นอยู่กับความต้องการของคุณ โดยทั่วไปแล้ว Scitech one จะให้ข้อมูลที่มีรายละเอียดมากขึ้นในขณะที่ ANTS one นั้นเหลือเชื่อมากในการระบุวัตถุที่รั่ว โดยรวมแล้วฉันชอบ ANTS มากกว่าเพราะมันรวดเร็วมากในการระบุรอยรั่วที่เป็นไปได้
นี่คือข้อดีข้อเสียของแต่ละคนจากประสบการณ์ของฉัน:
คุณสมบัติทั่วไปของ ANTS และ Scitech .NET Memory Profiler
มด
Scitech .NET Memory Profiler
โดยสรุปแล้วฉันคิดว่า ANTS ช่วยให้คุณค้นพบสิ่งที่รั่วไหลเร็วขึ้นในขณะที่ Scitech ให้รายละเอียดเพิ่มเติมเล็กน้อยเกี่ยวกับประสิทธิภาพหน่วยความจำแอปพลิเคชันโดยรวมของคุณและวัตถุแต่ละชิ้นเมื่อคุณรู้ว่าต้องมองอะไร หากมีการเพิ่มการติดตามสแต็กและการติดตามวัตถุที่ไม่ใช้แล้วทิ้งลงใน ANTS ฉันจะไม่เห็นความต้องการใช้สิ่งอื่น
ฉันเพิ่งค้นพบ EQATEC Profiler http://www.eqatec.com/tools/profiler มันทำงานได้กับ. NET เวอร์ชั่นส่วนใหญ่และในหลาย ๆ แพลตฟอร์ม มันใช้งานง่ายและชิ้นส่วนของมันฟรีแม้จะใช้เพื่อการค้า
[การเปิดเผยแบบเต็ม ]
ในขณะที่ยังไม่ได้เป็นเต็มรูปแบบเป็นบางส่วนของหน่วยความจำโปร .NET อื่น ๆ อยู่ที่นี่มีรายการใหม่ในตลาดที่เรียกว่าJustTrace มันทำโดย Telerik และเป้าหมายหลักคือการทำให้การสืบค้นกลับ / การทำโปรไฟล์ง่ายขึ้นและเร็วขึ้นสำหรับแอปทุกประเภท (เว็บ / Silverlight / เดสก์ท็อป)
หากคุณเคยพบโปรไฟล์และการเพิ่มประสิทธิภาพที่น่ากลัวหรือช้าด้วยเครื่องมืออื่น ๆJustTraceอาจคุ้มค่าที่จะดู
อย่าลืมnProf - ดีฟรีแวร์ profiler
ฉันพบว่าdotTrace ProfilerโดยJetBrainsเป็นเครื่องมือการทำโปรไฟล์ที่ยอดเยี่ยมสำหรับ. NET และโหมด ASP.NET ของพวกเขานั้นมีคุณภาพ
ANTS Profiler ฉันไม่ได้ใช้มาก แต่ฉันไม่ได้มีข้อร้องเรียนใด ๆ เกี่ยวกับมด การสร้างภาพข้อมูลนั้นมีประโยชน์จริงๆ
AutomatedQA AQTimeสำหรับจับเวลาและSciTech MemProfilerสำหรับหน่วยความจำ
หากคุณกำลังมองหาบางสิ่งที่รวดเร็วง่ายและฟรีhttp://code.google.com/p/slimtune/ดูเหมือนว่าจะทำงานได้ดี
ฉันทำงานกับJetBrains dotTraceสำหรับ WinForms และแอพคอนโซล (ยังไม่ได้ทดสอบบน ASP.net) และมันใช้งานได้ดี:
พวกเขาเพิ่งเพิ่ม "ใบอนุญาตส่วนบุคคล" ที่มีราคาถูกกว่าของ บริษัท อย่างมาก ยังถ้าใครรู้บางคนที่ถูกกว่าหรือฟรีฉันอยากได้ยินเช่นกัน :-)
อย่าลืมโปรไฟล์หน่วยความจำ. net scitech ที่ยอดเยี่ยม
เป็นเรื่องที่ยอดเยี่ยมสำหรับการติดตามว่าทำไมแอป. net ของคุณถึงหน่วยความจำไม่เพียงพอ
ฉันจะเพิ่มความสามารถของ dotTrace ในการกระจายหน่วยความจำและเซสชันการติดตามประสิทธิภาพเป็นสิ่งที่มีค่าอย่างยิ่ง (ANTS อาจมีคุณลักษณะ diff memory แต่ฉันไม่เห็นประสิทธิภาพต่างกัน)
ความสามารถในการเรียกใช้เซสชั่นการทำโปรไฟล์ก่อนและหลังการแก้ไขข้อผิดพลาดหรือการเพิ่มประสิทธิภาพแล้วเปรียบเทียบผลลัพธ์ที่มีคุณค่าอย่างไม่น่าเชื่อโดยเฉพาะอย่างยิ่งกับแอปพลิเคชันแมมมอ ธ . NET ดั้งเดิม (ดังในกรณีของฉัน) น่าเบื่อมาก ทำก่อนและหลังต่างช่วยให้คุณสามารถที่จะเห็นการเปลี่ยนแปลงในการนับการเรียกร้องให้แต่ละวิธีและการเปลี่ยนแปลงในระยะเวลาสำหรับแต่ละวิธี
สิ่งนี้มีประโยชน์ไม่เพียง แต่ในระหว่างการเปลี่ยนรหัส แต่ถ้าคุณมีแอปพลิเคชันที่ใช้ฐานข้อมูลที่แตกต่างกันให้บอกว่าสำหรับลูกค้า / ลูกค้าแต่ละราย หากลูกค้ารายหนึ่งร้องเรียนถึงความช้าคุณสามารถเรียกใช้เซสชันการทำโปรไฟล์โดยใช้ฐานข้อมูลของพวกเขาและเปรียบเทียบผลลัพธ์กับฐานข้อมูล "เร็ว" เพื่อพิจารณาว่าการดำเนินงานใดที่มีส่วนทำให้เกิดความช้า แน่นอนว่ามีเครื่องมือประสิทธิภาพด้านฐานข้อมูลจำนวนมาก แต่บางครั้งฉันช่วยดูการวัดประสิทธิภาพจากด้านแอปพลิเคชัน (เนื่องจากใกล้เคียงกับที่ผู้ใช้เห็นจริง)
Bottom line: dotTrace ใช้งานได้ดีและความแตกต่างนั้นประเมินค่าไม่ได้
AQTimeนั้นสมเหตุสมผล แต่มีช่วงของการเรียนรู้เล็กน้อยและไม่ได้ใช้งานง่ายเหมือนในตัวใน Team Suite
ในอดีตผมเคยใช้ Profiler ที่มาพร้อมกับVisual Studio ระบบทีม
รุ่นปัจจุบันของSharpDevelop (3.1.1)มีตัวสร้างโปรไฟล์ที่ดี มันค่อนข้างเร็วและรวมเข้ากับ SharpDevelop IDE และ NUnit ได้เป็นอย่างดี ผลลัพธ์จะแสดงในรูปแบบต้นไม้ / รายการที่ยืดหยุ่น (ใช้ LINQ เพื่อสร้างการเลือกของคุณเอง) การคลิกสองครั้งที่วิธีการที่แสดงนั้นกระโดดลงในซอร์สโค้ดโดยตรง
ฉันเคยทำงานกับ profiler ของ RedGate ในอดีต ทำงานให้ฉันหรือเปล่า
ฉันสงสัยว่า profiler ที่มาพร้อมกับ Visual Studio Team System นั้นเป็น profiler ที่ดีที่สุด แต่ฉันพบว่ามันดีพอในหลาย ๆ ครั้ง คุณต้องการอะไรเป็นพิเศษนอกเหนือจากที่ VS เสนอให้
แก้ไข: น่าเสียดายที่มันมีให้เฉพาะในระบบทีม VS แต่ถ้าคุณมีการเข้าถึงที่คุ้มค่าการตรวจสอบ
เวอร์ชันล่าสุดของ ANTS memory profiler (ฉันคิดว่ามันคือ 5) เพียงแค่หิน !!! ฉันหลอกหลอนการรั่วไหลโดยใช้ WinDbg และ SOS เพราะมันพิสูจน์แล้วว่าเป็นวิธีที่ดีที่สุดมาก่อนจากนั้นฉันก็ลอง ANTS และฉันได้มันในไม่กี่นาที เป็นซอฟต์แวร์ที่ยอดเยี่ยมจริงๆ
ฉันต้องการเพิ่มyourkit java และ. net profiler ฉันชอบมันสำหรับ Java แต่ไม่ได้ลองใช้. NET version
น่าเสียดายที่โปรไฟล์ส่วนใหญ่ที่ฉันลองใช้ล้มเหลวเมื่อใช้กับการเรียกแบบหางซึ่งเป็น ANTS ที่สะดุดตาที่สุด ฉันเพิ่งจบการเขียนของตัวเอง มีการติดตั้งอย่างง่ายบน CodeProject ที่คุณสามารถใช้เป็นฐานได้
Intel® VTune ™ Performance Analyzer สำหรับการสุ่มตัวอย่างอย่างรวดเร็ว
ฉันต้องนำเครื่องมือที่น่าทึ่งมาให้คุณสังเกตซึ่งฉันได้ใช้ไปแล้วในบางครั้ง AVICode Interceptor สตูดิโอ ใน บริษัท ก่อนหน้าของฉันเราใช้เครื่องมือที่ยอดเยี่ยมนี้ในการทำเว็บแอพพลิเคชั่น ( นี่น่าจะเป็นเว็บแอปพลิเคชั่นที่ใหญ่ที่สุดในโลกและเป็นโครงการไอทีที่ใหญ่ที่สุดที่เคยทำมา ) ทีมงานแสดงสงสัยด้วยความช่วยเหลือของเครื่องมืออันงดงามนี้ มันเป็นความเจ็บปวดในการกำหนดค่า แต่นั่นเป็นกิจกรรมครั้งเดียวและฉันอยากจะบอกว่ามันคุ้มค่ากับเวลา ชำระเงินที่หน้านี้สำหรับรายละเอียด
ขอบคุณเจมส์
สำหรับฉัน SpeedTrace เป็นเครื่องมือที่ดีที่สุดในตลาดเพราะไม่เพียง แต่ช่วยคุณค้นหาคอขวดภายในแอปพลิเคชันของคุณ นอกจากนี้ยังช่วยคุณในสถานการณ์การแก้ไขปัญหาเพื่อค้นหาสาเหตุที่แอปพลิเคชันของคุณหยุดทำงานการตั้งค่าของคุณไม่ได้ติดตั้งแอปพลิเคชันของคุณค้างบางครั้งประสิทธิภาพการทำงานของแอปพลิเคชันของคุณไม่ดีขึ้นอยู่กับการป้อนข้อมูล
ฉันได้ทำการทดสอบ JustTrace ของ Telerik เมื่อเร็ว ๆ นี้และแม้ว่ามันจะห่างไกลจากผลิตภัณฑ์สำเร็จรูป แต่พวกมันไปในทิศทางที่ถูกต้อง
หากการออกใบอนุญาตเป็นปัญหาคุณสามารถลองใช้ WINDBG เพื่อทำโปรไฟล์หน่วยความจำ
Profiler NuMega True Time อาศัยอยู่ที่ DevPartner Studio โดย Micro Focus ให้รายละเอียดระดับบรรทัดและวิธีการสำหรับแอป. NET ที่ต้องการเฉพาะ PDB เท่านั้นไม่ต้องใช้แหล่งที่มา (แต่ช่วยได้) สามารถแยกแยะระหว่างรูทีนที่หนักกว่าอัลกอริธึมเทียบกับที่รอ I / O ยาวโดยใช้กรรมสิทธิ์ เวอร์ชัน 10.5 มาพร้อมกับการสนับสนุน 64 กระบวนการใหม่ในวันที่ 4 กุมภาพันธ์ 2011 ปลั๊กไร้ยางอาย: ฉันทำงานกับสายผลิตภัณฑ์ DevPartner ติดตามได้ที่http://www.DevPartner.comสำหรับข่าวการเปิดตัว 10.5
ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้จัดการผลิตภัณฑ์ของ DevPartner ที่ Micro Focus
ฉันได้พบความอุดมสมบูรณ์ของปัญหาในการใหญ่ C # app ใช้นี้
โดยปกติแล้วปัญหาจะเกิดขึ้นระหว่างการเริ่มต้นหรือปิดระบบขณะที่กำลังโหลดปลั๊กอินและโครงสร้างข้อมูลขนาดใหญ่กำลังถูกสร้างทำลายทำลายต่อเนื่อง บ่อยครั้งที่พวกเขาสร้างและเริ่มต้นมากกว่าหนึ่งครั้งและตัวจัดการการเปลี่ยนแปลงได้รับการเพิ่มหลายครั้งรวมปัญหาเพิ่มเติม
ในกรณีเช่นนี้โปรแกรมอาจมีความเฉื่อยชาว่ามีเพียง 2 ตัวอย่างเท่านั้นที่สามารถระบุตำแหน่งไซต์การเรียกใช้เมธอด / ฟังก์ชัน / คุณสมบัติความผิด
เราเลือก YourKit Profiler สำหรับ. NET ใน บริษัท ของฉันเนื่องจากเป็นราคาที่ดีที่สุด (เทียบกับฟีเจอร์) สำหรับ บริษัท ขนาดเล็กที่ต้องการมีสิทธิ์ใช้งานแบบยืดหยุ่น (สิทธิ์การใช้งานแบบลอยตัว) มันเป็นตัวเลือกที่สมบูรณ์แบบ - ANTS คือล็อกเกตนักพัฒนาซอฟต์แวร์ในเวลานั้น
นอกจากนี้ยังทำให้เรามีความสามารถในการแนบกับกระบวนการทำงานซึ่งไม่สามารถทำได้ด้วย dotTrace ระวังแม้ว่าการติดไม่ใช่ตัวเลือกที่ดีที่สุดเพราะทุกอย่าง. NET จะชะลอตัวลง แต่นี่เป็นวิธีเดียวที่จะสร้างโปรไฟล์แอปพลิเคชั่น. NET ที่เริ่มต้นด้วยกระบวนการอื่น คุณสมบัติฉลาด, ANTS และ dotTrace นั้นดีกว่า - แต่ในที่สุด YourKit ก็ดีพอ
หากคุณใช้ ASP.NET MVC คุณสามารถลอง MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)