c# - DivideByZeroException too slow -


यह बहुत धीमा है:

  कोशिश {x = k / y; } पकड़ (डिवाइडबीज़ियरएक्सेप्शन) {}  

यह लगभग 5x तेज है:

  यदि (y & gt; 0) x = k / y;  

क्या कोई मुझे बता सकता है?

केवल 5 गुना तेज ? तुम मुझे आश्चर्यचकित करते हो संभवत: इसका मतलब है कि आपके नमूना डेटा में इसमें कई शून्य नहीं हैं।

अपवाद सरल तुलना से ज्यादा महंगे हैं। जब सही तरीके से उपयोग किया जाता है (यानी असाधारण परिस्थितियों के लिए) वे प्रदर्शन में काफी हद तक नज़र नहीं आते हैं - क्योंकि यदि आप बड़े प्रभाव बनाने के लिए पर्याप्त अपवाद फेंक रहे हैं, तो संभावना है कि आपकी सेवा पहले से ही बंद हो गई है करता है एक समस्या का कारण बनता है जब आप ऐसे परिस्थितियों को अनदेखा करने की कोशिश करने के लिए अपवादों का उपयोग करते हैं जो आप आसानी से शुरू करने के लिए परीक्षण कर सकते हैं - इस तरह से।

अपवाद: डीबगर में जुड़ा हुआ डिबगर के बिना चलने के मुकाबले उन्हें बहुत ज्यादा लागत होती है; विशेष रूप से पहला अपवाद जो संसाधनों का एक गुच्छा लोड करने की जरूरत है, माइक्रो / मिलिसेकंड्स के बजाय सेकंड ले सकते हैं। यदि आप बेंचमार्क कोड पर जा रहे हैं, तो यह महत्वपूर्ण है कि आप इसे डिबगर में नहीं करते हैं - यह सामान्य रूप से सही है, लेकिन विशेष रूप से अपवादों के लिए।


Comments

Popular posts from this blog

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

php - What is the best way to get the URL of a 404'd file after redirect? -