ประสิทธิภาพได้รับผลกระทบอย่างไรจากคำสั่งที่ไม่ได้ใช้งาน?


111

Visual Studio จะสร้างโดยใช้คำสั่งให้คุณโดยอัตโนมัติเมื่อใดก็ตามที่คุณสร้างเพจหรือโครงการใหม่ บางส่วนคุณจะไม่เคยใช้

Visual Studio มีคุณสมบัติที่เป็นประโยชน์ในการ "ลบการใช้งานที่ไม่ได้ใช้"

ฉันสงสัยว่าจะมีผลเสียต่อประสิทธิภาพของโปรแกรมหรือไม่หากคำสั่งการใช้งานที่ไม่เคยเข้าถึงยังคงถูกกล่าวถึงที่ด้านบนของไฟล์


ฉันค้นหามันก่อนที่จะถาม แต่มันก็ไม่ปรากฏขึ้น
KdgDev

6
FWIW โพสต์นี้มี SEO ที่ดีขึ้นซึ่งเป็นผลลัพธ์แรกใน Google สำหรับฉัน จากต้นฉบับ 2 รายการที่เชื่อมโยงกันรายการหนึ่งไม่พร้อมใช้งาน (ลบออก) และอีกรายการมีคำแตกต่างกันพอที่จะเพิ่มคุณค่าให้กับโพสต์นี้แม้ว่าจะเป็นการเปลี่ยนเส้นทางก็ตาม
DaveD

@DaveD เป็นอันดับแรกสำหรับคุณเพราะ Google รู้ค่ากำหนดและประวัติการค้นหาที่แน่นอนของคุณ ในคอมพิวเตอร์ของเพื่อนไม่ใช่เครื่องแรก
ilias iliadis

คำตอบ:


134

การใช้งานที่ไม่ได้ใช้จะไม่มีผลกระทบต่อประสิทธิภาพรันไทม์ของแอปพลิเคชันของคุณ

อาจส่งผลต่อประสิทธิภาพของ IDE และเฟสการคอมไพล์โดยรวม สาเหตุที่สร้างเนมสเปซเพิ่มเติมซึ่งต้องมีการแก้ปัญหาชื่อ อย่างไรก็ตามสิ่งเหล่านี้มีแนวโน้มเล็กน้อยและไม่ควรส่งผลกระทบอย่างเห็นได้ชัดต่อประสบการณ์ IDE ของคุณสำหรับสถานการณ์ส่วนใหญ่

นอกจากนี้ยังสามารถส่งผลต่อประสิทธิภาพของการประเมินนิพจน์ในดีบักเกอร์ด้วยเหตุผลเดียวกัน


39
ยิ่งมีการใช้งานมาก
เท่าไหร่

14

ไม่มันเป็นเพียงรูปแบบการรวบรวมเวลา / การเข้ารหัส ไบนารี. NET ใช้ชื่อแบบเต็มภายใต้ประทุน


3
นี่หมายความว่าชื่อคลาสและเมธอดที่ยาวขึ้นมีผลกระทบเล็กน้อย (ถ้าวัดไม่ได้) ต่อเวลาในการคอมไพล์ JIT หรือไม่?
Jared Updike

8

ไม่มีผลกระทบต่อความเร็วในการดำเนินการ แต่อาจมีผลเล็กน้อยต่อความเร็วในการคอมไพล์ / อินเทลลิเซนส์เนื่องจากมีเนมสเปซที่เป็นไปได้มากกว่าในการค้นหาคลาสที่เหมาะสม ฉันจะไม่กังวลมากเกินไป แต่คุณสามารถใช้รายการเมนูจัดระเบียบการใช้งานเพื่อลบและจัดเรียงข้อความโดยใช้


8

ลิงค์ต่อไปนี้การอ่านที่ดีเกี่ยวกับสาเหตุที่ต้องลบการอ้างอิงที่ไม่ได้ใช้จะอธิบายว่าการลบการอ้างอิงที่ไม่ได้ใช้ออกจากแอปพลิเคชันมีประโยชน์อย่างไร

ด้านล่างนี้เป็นข้อความที่ตัดตอนมาบางส่วนจากลิงค์:

  1. การลบการอ้างอิงที่ไม่ได้ใช้ออกในแอปพลิเคชันของคุณจะเป็นการป้องกันไม่ให้CLRโหลดโมดูลอ้างอิงที่ไม่ได้ใช้ในรันไทม์ ซึ่งหมายความว่าคุณจะลดเวลาในการเริ่มต้นแอปพลิเคชันของคุณเนื่องจากต้องใช้เวลาในการโหลดแต่ละโมดูลและหลีกเลี่ยงการโหลดข้อมูลเมตาของคอมไพลเลอร์ที่จะไม่ถูกใช้ คุณอาจพบว่าขึ้นอยู่กับขนาดของห้องสมุดแต่ละแห่งเวลาเริ่มต้นของคุณจะลดลงอย่างเห็นได้ชัด นี่ไม่ได้หมายความว่าแอปพลิเคชันของคุณจะเร็วขึ้นเมื่อโหลด แต่ก็ค่อนข้างสะดวกที่จะทราบว่าเวลาเริ่มต้นของคุณอาจลดลง

  2. ข้อดีอีกประการหนึ่งของการลบการอ้างอิงที่ไม่ได้ใช้คือคุณจะลดความเสี่ยงของการขัดแย้งกับเนมสเปซ ตัวอย่างเช่นหากคุณมีทั้งสองอย่างSystem.DrawingและSystem.Web.UI.WebControlsอ้างอิงคุณอาจพบว่าคุณมีความขัดแย้งเมื่อพยายามอ้างอิง Imageชั้นเรียน หากคุณใช้คำสั่งในชั้นเรียนที่ตรงกับการอ้างอิงเหล่านี้คอมไพเลอร์จะไม่สามารถบอกได้ว่าจะใช้คำสั่งใด หากคุณใช้การเติมข้อความอัตโนมัติเป็นประจำในการพัฒนาการลบเนมสเปซที่ไม่ได้ใช้จะช่วยลดจำนวนค่าการเติมข้อความอัตโนมัติในโปรแกรมแก้ไขข้อความของคุณขณะที่คุณพิมพ์


5

ไม่ได้มีหลายกระบวนการที่เกี่ยวข้องในการคอมไพล์โปรแกรม เมื่อคอมไพลเลอร์เริ่มค้นหาการอ้างอิง (คลาสวิธีการ) จะใช้เฉพาะที่ใช้กับโค้ดเท่านั้น คำสั่งการใช้งานจะบอกเฉพาะคอมไพเลอร์ว่าต้องดูที่ไหน คำสั่งการใช้งานที่ไม่ได้ใช้จำนวนมากอาจมีปัญหาด้านประสิทธิภาพ แต่ในเวลาคอมไพล์ ในรันไทม์โค้ดภายนอกทั้งหมดจะถูกเชื่อมโยงอย่างเหมาะสมหรือรวมเป็นส่วนหนึ่งของไบนารี


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