संभव डुप्लिकेट:
What makes JNI calls slow?ओवरहेड फोन
सबसे पहले मुझे कहना है कि इस सवाल वास्तविक आवश्यकता की तुलना में जिज्ञासा से बाहर अधिक पैदा होता है करते हैं।
मुझे यह जानकर उत्सुकता है कि जावा से जेएनआई कॉल करने में ओवरहेड क्या है, कहें, System.arraycopy
सरणी आवंटित करने और तत्वों को लूप के साथ कॉपी करने के विरुद्ध।
यदि ओवरहेड पर्याप्त है, तो संभवतः सिस्टम कॉल का उपयोग करने के बजाय तत्वों का एक मोटा "जादू संख्या" है, जिसके लिए यह केवल लूप का उपयोग करने की क्षतिपूर्ति करता है। और साथ ही, सिस्टम कॉल में वास्तव में क्या शामिल है जो इस ओवरहेड का कारण बनता है? मुझे लगता है कि स्टैक को कॉल के संदर्भ में धक्का दिया जाना चाहिए, और इसमें कुछ समय लग सकता है, लेकिन मुझे पूरी प्रक्रिया के लिए एक अच्छा स्पष्टीकरण नहीं मिल रहा है।
मुझे मेरे सवाल का स्पष्ट करते हैं:
मुझे पता है कि arraycopy का उपयोग कर जावा में एक सरणी कॉपी करने के लिए सबसे तेज़ तरीका है।
कहा जा रहा है, मान लीजिए कि मैं इसका उपयोग केवल एक तत्व की सरणी की प्रतिलिपि बनाने के लिए कर रहा हूं। चूंकि मैं अंतर्निहित ओएस को ऐसा करने के लिए बुला रहा हूं, इसलिए में इस कॉल में ओवरहेड होने के लिए है। मुझे यह जानने में दिलचस्पी है कि यह ओवरहेड क्या है और कॉल की प्रक्रिया में क्या होता है।
मुझे खेद है कि अगर मेरे प्रश्न के उद्देश्य से आपको एरेकॉपी का उपयोग किया जाता है तो मुझे खेद है। मुझे जेएनआई कॉल के ओवरहेड को जानने में दिलचस्पी है, और वास्तविक कॉल में क्या शामिल है।
आपको याद है, 'सिस्टम' कॉल कुछ हद तक भ्रमित शब्द है क्योंकि इसे [सिस्टम कॉल] (https://en.wikipedia.org/wiki/System_call) के लिए गलत माना जा सकता है। –
वैसे, http://stackoverflow.com/questions/2772152/why-is-system-arraycopy-native-in-java – NPE
में जानकारी का भरपूर धन है मेरा जवाब हटा दिया गया, मुझे लगता है कि यह आपकी मदद करेगा: http: //stackoverflow.com/questions/7699020/what-makes-jni-calls-slow –