ผลของข้อยกเว้นต่อประสิทธิภาพใน Java คืออะไร
คำถาม: การจัดการข้อยกเว้นใน Java ช้าจริงหรือไม่ ภูมิปัญญาดั้งเดิมรวมถึงผลการค้นหาของ Google จำนวนมากกล่าวว่าไม่ควรใช้ตรรกะพิเศษสำหรับการไหลเวียนของโปรแกรมปกติใน Java โดยปกติจะมีสองเหตุผล มันช้ามาก - แม้ลำดับความสำคัญจะช้ากว่ารหัสปกติ (เหตุผลที่ให้แตกต่างกันไป) และ มันยุ่งเพราะคนคาดหวังว่าข้อผิดพลาดเท่านั้นที่จะจัดการในรหัสพิเศษ คำถามนี้เกี่ยวกับ # 1 ตัวอย่างเช่นหน้านี้อธิบายการจัดการข้อยกเว้น Java ว่า "ช้ามาก" และเกี่ยวข้องกับความช้าในการสร้างสตริงข้อความข้อยกเว้น - "สตริงนี้จะใช้ในการสร้างวัตถุยกเว้นที่ถูกโยนนี่ไม่เร็ว" บทความการจัดการข้อยกเว้นที่มีประสิทธิภาพใน Javaกล่าวว่า "เหตุผลนี้เกิดจากการสร้างวัตถุของการจัดการข้อยกเว้นซึ่งทำให้การโยนข้อยกเว้นช้าโดยเนื้อแท้" อีกเหตุผลหนึ่งคือการสร้างการติดตามสแต็กคือสิ่งที่ทำให้ช้าลง การทดสอบของฉัน (โดยใช้ Java 1.6.0_07, Java HotSpot 10.0, บน 32 บิต Linux) ระบุว่าการจัดการข้อยกเว้นไม่ช้ากว่าโค้ดปกติ ฉันลองใช้วิธีการในวงที่รันรหัสบางอย่าง ในตอนท้ายของวิธีการที่ผมใช้บูลที่จะบ่งชี้ว่าจะกลับมาหรือโยน วิธีนี้การประมวลผลจริงจะเหมือนกัน ฉันลองใช้วิธีการตามคำสั่งต่าง ๆ และหาค่าเฉลี่ยเวลาทดสอบของฉันโดยคิดว่า JVM อาจร้อนขึ้น ในการทดสอบทั้งหมดของฉันการขว้างอย่างน้อยเท่ากับการส่งคืนถ้าไม่เร็วขึ้น …