IMO
हाँ, लेकिन एक के लिए अधिक हो जाएगा का एक छोटा सा उदाहरण है मौलिक डिज़ाइन कारण वर्चुअल प्रेषण या COM- जैसे इंटरफ़ेस क्वेरी या ऑब्जेक्ट मेटाडेटा से रनटाइम प्रकार की जानकारी या उसके जैसा कुछ भी आवश्यक है, उससे कहीं अधिक सूक्ष्म और जटिल है। उस सब के साथ ओवरहेड जुड़ा हुआ है लेकिन यह भाषा और कंपाइलर पर बहुत निर्भर करता है, और यह भी निर्भर करता है कि अनुकूलक संकलन-समय या लिंक-टाइम पर ऐसे ओवरहेड को खत्म कर सकता है या नहीं।ठोस डाटा/स्मृति आप चाहते हैं का मतलब आप और के बीच एक बाधा है कि वहाँ
एक अंतरफलक के लिए कोडन: अभी तक मेरी राय में वहाँ एक व्यापक वैचारिक कारण है कि एक अंतरफलक के लिए कोडिंग का तात्पर्य (नहीं की गारंटी देता है) एक प्रदर्शन हिट पहुंच और बदलने के लिए।
यह प्राथमिक कारण है जो मैं देखता हूं। एक बहुत ही सरल उदाहरण के रूप में, मान लीजिए कि आपके पास एक अमूर्त छवि इंटरफ़ेस है। यह अपने कंक्रीट विवरण को अपने पिक्सेल प्रारूप की तरह पूरी तरह से हटा देता है। यहां समस्या यह है कि अक्सर सबसे कुशल छवि संचालन उन ठोस विवरणों की आवश्यकता होती है। हम अपने कस्टम छवि फ़िल्टर को कुशल सिम निर्देशों के साथ कार्यान्वित नहीं कर सकते हैं, उदाहरण के लिए, अगर हमें एक समय में getPixel
एक और setPixel
एक समय में और अंतर्निहित पिक्सेल प्रारूप से अनजान था।
बेशक अमूर्त छवि इन सभी परिचालनों को प्रदान करने का प्रयास कर सकती है, और उन परिचालनों को बहुत प्रभावी ढंग से कार्यान्वित किया जा सकता है क्योंकि उनके पास उस इंटरफ़ेस को लागू करने वाली ठोस छवि के निजी, आंतरिक विवरण तक पहुंच है, लेकिन यह केवल इतना ही है जब तक छवि इंटरफ़ेस वह सब कुछ प्रदान करता है जो क्लाइंट कभी भी छवि के साथ करना चाहेगा।
अक्सर किसी बिंदु पर एक इंटरफ़ेस पूरी दुनिया के लिए कल्पना करने योग्य प्रत्येक कार्य प्रदान करने की उम्मीद नहीं कर सकता है, और ऐसे इंटरफेस, जब प्रदर्शन-महत्वपूर्ण चिंताओं का सामना करते हैं, साथ ही साथ आवश्यकता की विस्तृत श्रृंखला को पूरा करने की आवश्यकता होती है, अक्सर उनके कंक्रीट को रिसाव कर लेती है विवरण। अमूर्त छवि अभी भी pixels()
विधि के माध्यम से इसके अंतर्निहित पिक्सल के लिए एक सूचक प्रदान कर सकती है, जो एक इंटरफ़ेस को कोडिंग के बहुत से उद्देश्य को हरा देती है, लेकिन अक्सर सबसे अधिक प्रदर्शन-महत्वपूर्ण क्षेत्रों में आवश्यकता होती है।
बस सामान्य रूप से बहुत से सबसे कुशल कोड को कुछ स्तर पर बहुत ठोस विवरण के खिलाफ लिखा जाना चाहिए, विशेष रूप से एकल-परिशुद्धता फ़्लोटिंग-पॉइंट के लिए लिखे गए कोड, विशेष रूप से 32-बिट आरजीबीए छवियों, कोड के लिए लिखे गए कोड खासकर जीपीयू के लिए लिखा गया है, विशेष रूप से एवीएक्स -512 के लिए, विशेष रूप से मोबाइल हार्डवेयर आदि के लिए, इसलिए कम से कम हमारे पास मौजूद औजारों के साथ एक मौलिक बाधा है, जहां हम अमूर्त नहीं कर सकते हैं कि बिना किसी अंतर्निहित इंटरफेस के सभी कोड दंड।
बेशक हमारे जीवन इतना आसान हो जाएंगे कि अगर हम केवल 32 लिखने वाले एसपीएफपी या 64-बिट डीपीएफपी से निपट रहे हैं, तो हम कोड लिख सकते हैं, चाहे हम शेडर्स लिख रहे हों एक सीमित मोबाइल डिवाइस या एक उच्च अंत डेस्कटॉप, और यह सब वहाँ सबसे प्रतिस्पर्धात्मक कुशल कोड है। लेकिन हम उस मंच से बहुत दूर हैं। हमारे वर्तमान उपकरण को अक्सर हमें ठोस विवरण के खिलाफ हमारे प्रदर्शन-महत्वपूर्ण कोड लिखने की आवश्यकता होती है।
और आखिरकार यह ग्रैन्युलरिटी का एक मुद्दा है। स्वाभाविक रूप से अगर हमें पिक्सेल-बाय-पिक्सेल आधार पर चीजों के साथ काम करना है, तो पिक्सेल के ठोस विवरण को दूर करने के किसी भी प्रयास से एक प्रमुख प्रदर्शन जुर्माना हो सकता है। लेकिन अगर हम छवि स्तर पर चीजों को व्यक्त कर रहे हैं, जैसे "अल्फा इन दोनों छवियों को एक साथ मिलाएं", यह एक बहुत ही नगण्य लागत हो सकती है भले ही वर्चुअल प्रेषण ओवरहेड और आगे हो। इसलिए जब हम उच्च-स्तरीय कोड की ओर काम करते हैं, तो इंटरफ़ेस को कोडिंग के किसी भी निहित प्रदर्शन दंड को पूरी तरह से तुच्छ होने के बिंदु पर कम कर दिया जाता है। लेकिन हमेशा निम्न स्तर के कोड की आवश्यकता होती है जो पिक्सल-बाय-पिक्सेल आधार पर प्रक्रियाओं की तरह चीजें करता है, उनमें से लाखों प्रति फ्रेम के माध्यम से लूपिंग करता है, और वहां एक इंटरफेस में कोडिंग की लागत सुंदर हो सकती है पर्याप्त जुर्माना, अगर केवल इसलिए कि यह सबसे कुशल कार्यान्वयन लिखने के लिए आवश्यक ठोस विवरण छुपा रहा है।
आपका प्रश्न अभी भी मान्य है लेकिन आप उस व्यक्ति को गलत तरीके से गलत कर रहे हैं। वह कह रहा है कि यूनिट परीक्षण के लिए केवल मोक्स प्रदान करने के लिए इंटरफेस प्रदान करना * प्रदर्शन हिट के लायक नहीं था। जो मैं उसका मुद्दा देख सकता हूं। –
मुझे नहीं पता। एक पेर्फ हिट कितना काम करेगा?कुछ परीक्षण करने में सक्षम होने के लिए आप क्या लायक हैं? –