ประสิทธิภาพ System.Diagnostics.StackFrame ลดลงใน Windows 10
หากหลังจากที่คุณอัปเกรดเป็น Windows 10 หรือ.NET Framework 4.7.1และคุณสังเกตเห็นประสิทธิภาพการทำงานลดลงอย่างมากเมื่อคุณเรียกใช้ แอปพลิเคชัน .NET Framework ที่ใช้ คลาส System.Diagnostics.StackFrameโพสต์นี้อาจสนใจคุณ เราจะพิจารณาสาเหตุ แล้วเสนอการแก้ไขข้อผิดพลาดที่ทราบ
System.Diagnostics.StackFrame ประสิทธิภาพลดลง
แอปพลิเคชันที่มีประสิทธิภาพการทำงานที่ยอมรับได้ที่ทำงานบน.NET Framework 4.7หรือเวอร์ชันก่อนหน้าทำงานช้ากว่าเมื่อทำงานบน. NET Framework 4.7.1 แอปพลิเคชันมักใช้ StackFrame เมื่อมีข้อยกเว้น .NET หากสิ่งนี้เกิดขึ้นในอัตราที่สูง (มากกว่า 10 เหตุการณ์ต่อวินาที) แอปพลิเคชันอาจช้าลงอย่างมาก (สิบเท่า) และทำงานช้ากว่าเมื่อก่อนอย่างเห็นได้ชัด
สาเหตุของประสิทธิภาพของ System.Diagnostics.StackFrame ลดลง(Cause of the System.Diagnostics.StackFrame performance degrade)
.NET Framework 4.7.1ในWindows 10 เพิ่ม การรองรับสำหรับการตรวจจับและแยกวิเคราะห์รูปแบบไฟล์ Portable PDBเพื่อแสดงข้อมูลไฟล์และหมายเลขบรรทัดในสแต็กเทรซ ส่วนหนึ่งของการเปลี่ยนแปลงนี้ แต่ละฟังก์ชันในการติดตามสแต็กจะมีการตรวจสอบโมดูลที่กำหนดเพื่อตรวจสอบว่าโมดูลนั้นใช้รูปแบบ Portable PDB หรือไม่ (PDB)เนื่องจาก(Due)ความแตกต่างบางประการในนโยบายการแคชภายใน รันไทม์จึงใช้เวลาค้นหาPortable PDB(Portable PDBs)มากกว่า .NET Frameworkเวอร์ชันก่อนหน้าที่ใช้ค้นหาWindows PDB(Windows PDBs) แบบคลาสสิ ก
ซึ่งทำให้การสืบค้นกลับสแต็กที่จัดรูปแบบช้ากว่าเมื่อก่อน
ปัญหานี้ไม่ได้เปลี่ยนจำนวนของข้อยกเว้นที่เกิดขึ้น อย่างไรก็ตาม จะลดความสามารถของแอปพลิเคชันในการจัดการข้อยกเว้นเหล่านั้นลงอย่างมาก
แอปพลิเคชันที่ใช้ ไลบรารี IKVMจะได้รับผลกระทบจากปัญหานี้หากตรวจสอบหาแอสเซมบลี การตรวจสอบสำหรับแอสเซมบลีเป็นที่ทราบกันว่าทำให้เกิดข้อยกเว้น
แก้ไขปัญหาประสิทธิภาพของ System.Diagnostics.StackFrame(Fix System.Diagnostics.StackFrame)ลดลง
เพื่อแก้ไขปัญหานี้Microsoftแนะนำให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
1] ใช้ตัวสร้างอื่นสำหรับ StackFrame ที่ใช้อาร์กิวเมนต์บูลีน(1] Use a different constructor for StackFrame that takes a Boolean argument)
นี่เป็นวิธีแก้ปัญหาที่ต้องการ
หากนักพัฒนาแอปพลิเคชันสามารถเปลี่ยนแปลงแอปพลิเคชันของตนได้ ให้เรียก(call the) System.Diagnostics.StackTrace #ctor( บูลีน(Boolean) ) ตัวสร้างโดยใช้อาร์กิวเมนต์เท็จเพื่อหลีกเลี่ยงการรวบรวมข้อมูลต้นฉบับ ซึ่งจะหลีกเลี่ยงส่วนของโค้ดที่ประสิทธิภาพลดลง
2] ย้อนกลับหรืออัปเกรดเป็น Windows 10 เวอร์ชันล่าสุด(2] Rollback or upgrade to the latest Windows 10 version)
ในวิธีนี้ ให้ย้อนกลับไปเป็นเวอร์ชันก่อนหน้า/บิ วด์ หรือupgrade to the latest version/build ด์ ของWindows 10 หากคุณประสบปัญหานี้และคุณไม่ได้ใช้ (Windows 10)Windows 10เวอร์ชันล่าสุด นอกจากนี้ถอนการติดตั้ง .NET Framework 4.7.1หากมี จากคอมพิวเตอร์ของคุณ จากนั้นดาวน์โหลด และติดตั้งเวอร์ชันก่อนหน้าหรือ (download).NET Frameworkเวอร์ชันล่าสุด
Hope this helps!
Related posts
วิธีการตรวจสอบ .NET Framework version ติดตั้งบน Windows 10 PC
Fix Error 0x800F080C เมื่อติดตั้ง .NET Framework บน Windows 10
เลือกที่จะรับตัวเลือกแอปสีเทาในการตั้งค่า Windows 10
CMAK จาก VPN ไม่ทำงานหลังจากอัพเกรด Windows 10
Cloud Clipboard (Ctrl+V) ไม่ทำงานหรือซิงค์ใน Windows 10
แก้ไขปัญหาการเชื่อมต่ออินเทอร์เน็ตใน Windows 10
เปิดไฟล์ได้อย่างง่ายดายด้วย MyLauncher สำหรับคอมพิวเตอร์ Windows 10
Cast to Device ไม่ทำงานใน Windows 10
วิธีการติดตั้ง NumPy โดยใช้ PIP บน Windows 10
ตรวจพบ Windows Update Database error ที่มีศักยภาพใน Windows 10
MSVCR71.dll หายไปจากคอมพิวเตอร์ Windows 10
Microsoft Solitaire collection จะไม่เปิดใน Windows 10
Remote Desktop tab ใน RDWEB หายไปจาก Edge browser ใน Windows 10
วิธีปิดใช้งานคลาสเก็บข้อมูลที่ถอดออกได้และการเข้าถึงใน Windows 10
Microphone ภายนอกได้รับการยอมรับว่าเป็นหูฟังใน Windows 10
Ashampoo WinOptimizer เป็นซอฟต์แวร์ฟรีที่จะเพิ่มประสิทธิภาพ Windows 10
เสียงอย่างน้อยหนึ่งเสียง service isn ไม่ทำงานบนอุปกรณ์ Windows 10
วิธีการเปิดไฟล์ .aspx บนคอมพิวเตอร์ Windows 10
วิธีใช้ Network Sniffer Tool PktMon.exe ใน Windows 10
โปรแกรมเริ่มทำงานไม่ได้เพราะ MSVCP140.dll หายไปใน Windows 10