जावा स्रोतों से, यह देशी कोड में गिरने जैसा लगता है। क्या लागत लगभग अस्थिर पढ़ने के बराबर है या क्या इसे किसी प्रकार का लॉक प्राप्त करने की आवश्यकता है?Thread.isInterrupted() को कॉल करने की प्रदर्शन लागत क्या है?
उत्तर
Thread.isInterrupted()
कॉल करने के लिए एक बहुत ही सस्ता काम है। कुछ और संकेत हैं लेकिन सभी कॉल पर्याप्त तेज़ हैं। संक्षेप में:
यह जावा डबल अविवेक
Thread::current()->_osthread->_interrupted
प्रदर्शन सेThread.currentThread().isInterrupted()
का अनुकरण करने के लिए संभव होना चाहिए।
bool os::is_interrupted(Thread* thread, bool clear_interrupted) {
assert(Thread::current() == thread || Threads_lock->owned_by_self(),
"possibility of dangling Thread pointer");
OSThread* osthread = thread->osthread();
bool interrupted = osthread->interrupted();
if (interrupted && clear_interrupted) {
osthread->set_interrupted(false);
// consider thread->_SleepEvent->reset() ... optional optimization
}
return interrupted;
}
OSThread
इस तरह कार्यान्वित किया जाता है:
volatile jint _interrupted; // Thread.isInterrupted state
// Note: _interrupted must be jint, so that Java intrinsics can access it.
// The value stored there must be either 0 or 1. It must be possible
// for Java to emulate Thread.currentThread().isInterrupted() by performing
// the double indirection Thread::current()->_osthread->_interrupted.
....
volatile bool interrupted() const { return _interrupted != 0; }
मैं नहीं पता है कि क्या यह एक लॉक या नहीं प्राप्त कर लेता है, लेकिन मैं एक त्वरित परीक्षण भाग गया और मेरे लिए isInterrupted()
मोटे तौर पर 100 बार एक अस्थिर चर पढ़ने की तुलना में धीमी । अब चाहे वह आपके आवेदन में मायने रखता है या नहीं, मैं आपको नहीं बता सकता।
क्या आप उस बेंचमार्क को पोस्ट कर सकते हैं जिसका आपने उपयोग किया था? –
@ माइकल: मैंने बहुत क्रूड परीक्षण किया था। असल में बस कुछ मिलियन बार लूपिंग और लूप कॉलिंग में पहले टेस्ट के लिए अवरुद्ध() है, और दूसरे के लिए चर पढ़ने। कोई अन्य धागे शामिल नहीं है। मैंने मूल्य का संदर्भ भी रखा ताकि लूप को अनुकूलित नहीं किया जा सके। – JRL
माइक्रो-बेंचमार्क से सावधान रहें! खासकर एक जेवीएम पर। ऐसे कई कारक हैं जो परिणामों को आसानी से छोड़ सकते हैं। ऐसा करने के लिए आदर्श बात यह है कि इसे अपने आवेदन में लागू करें और इसे वास्तविक के लिए जांचें। Http://www.ibm.com/developerworks/java/library/j-jtp02225.html पर अधिक जानकारी। – mdma
- 1. प्रकार तुलना की प्रदर्शन लागत
- 2. क्या मुझे ग्राफिक्स को कॉल करने की आवश्यकता है। प्रदर्शन()?
- 3. PHP में "शामिल" की प्रदर्शन लागत क्या है?
- 4. #define की लागत क्या है?
- 5. लागत/एक String.indexof() फ़ंक्शन कॉल की जटिलता क्या है
- 6. ओआरएम प्रदर्शन लागत
- 7. autoeventwireup प्रदर्शन लागत
- 8. प्रदर्शन आज़माएं/कैच ब्लॉक की लागत
- 9. क्या गेटटर की शून्य लागत है?
- 10. .NET प्रतिबिंब की "लागत" क्या है?
- 11. मेमोरी एक्सेस की लागत क्या है?
- 12. खाली वेक्टर की ओवरहेड लागत क्या है?
- 13. अक्का में अभिनेताओं को बनाने की लागत क्या है?
- 14. ओवरफ्लो की प्रदर्शन लागत से कैसे बचें: छुपा हुआ?
- 15. बिंग मानचित्रों की लागत पैसे?
- 16. मल्टीप्रोसेसर सिस्टम में अस्थिर कीवर्ड की लागत क्या है?
- 17. लागत के लायक पायथन का प्रदर्शन?
- 18. तुल्यकालन की लागत
- 19. स्थानीय स्टोरेज की गति/लागत
- 20. उद्देश्य-सी में अपवादों का उपयोग करने की लागत क्या है?
- 21. समान प्रकार लौटने की बजाय रेफरी का उपयोग करने के लिए प्रदर्शन लागत?
- 22. एंड्रॉइड मार्केटप्लेस में प्रवेश/सदस्यता की लागत क्या है?
- 23. क्या कोई ऐसा बिंदु है जहां रिफैक्टरिंग की लागत फिर से लिखने की लागत से अधिक है?
- 24. स्कैला के आलसी मूल्य की (छिपी हुई) लागत क्या है?
- 25. विकास लागत बनाम रखरखाव लागत
- 26. क्या पंक्ति में एकाधिक ऑब्जेक्ट्स को कॉल करने का प्रदर्शन प्रभाव है?
- 27. लापता होने की लागत इकाई
- 28. ब्लॉक नेस्टेड लूप की लागत की गणना
- 29. क्या एंड्रॉइड सेवा ऑनस्ट्राय() पर कॉल करने की गारंटी है?
- 30. क्या मुझे संदेश बॉक्स कॉल करने की आवश्यकता है?
मैं मूल कोड का मानना है, भी खुला स्रोत है के लिए, ताकि आप केवल जांच कर सकते हैं कि वहाँ क्या चल रहा है। – pajton