मैं, अक्सर सामान को कॉपी के आसपास वास्तव में कोई फर्क नहीं पड़ता बार टिप्पणी के जवाब में कुछ लाने के लिए (ओ पी और Colomon से मुख्य रूप से) क्षमता आदि के बारे में वास्तविक प्रदर्शन के मामले में चाहते हैं।
मैं प्रोग्राम हैं जो defensive copying की एक बहुत कुछ कर लिखा है। यह जावा में एक मुहावरे है, जहां, क्योंकि सभी ऑब्जेक्ट पॉइंटर द्वारा पारित किए जाते हैं, वहां बहुत सारे एलियासिंग चल रहे हैं, इसलिए आप अलियासिंग को तोड़ने के लिए अपनी कक्षा में आने/बाहर जाने वाली कुछ भी कॉपी करते हैं, यह सुनिश्चित करना कि आपकी कक्षा के क्लाइंट आपके क्लास इनवेरिएंट का उल्लंघन नहीं कर सकते तथ्य के बाद एक वस्तु को संशोधित करके।
कार्यक्रमों मैं लिखा है रक्षा स्थानों में पूरे ढांचे, पूरे सूचियों और नक्शे सहित नकल की है। यह सुनिश्चित करने के लिए कि प्रदर्शन प्रभावित नहीं हुआ है, मैंने कार्यक्रम को बड़े पैमाने पर प्रोफाइल किया। मुख्य बाधाएं कहीं और थीं (और फिर भी, मैंने उन अन्य स्थानों को ट्यून किया ताकि मुख्य बाधा नेटवर्क हो)। कार्यक्रम के गर्म स्थानों में इस रक्षात्मक प्रतिलिपि को कहीं भी नहीं मिला।
ईटीए: मैं, मेरा संदेश की बात को स्पष्ट करने के बाद से एक टिप्पणीकार यह मैं कैसे इरादा से अलग ढंग से पढ़ा जरूरत महसूस, और बहुत संभव है दूसरों भी किया है। मेरा मुद्दा यह नहीं है कि चारों ओर सामान की प्रतिलिपि बनाना ठीक है; बल्कि, किसी को हमेशा अपने कोड के प्रदर्शन को प्रोफ़ाइल करना चाहिए, बजाय यह अनुमान लगाएगा कि यह कैसा प्रदर्शन करेगा।
कभी-कभी, जब संपूर्ण संरचनाओं की प्रतिलिपि बनाते हैं तो भी स्वीकार्य प्रदर्शन मिलता है, और साथ ही कोड को लिखना आसान बनाता है, फिर मेरी राय में, यह कोड की तुलना में बेहतर व्यापार (ज्यादातर मामलों में) है जो केवल मामूली तेज़ है लेकिन बहुत कुछ अधिक जटिल।
स्रोत
2008-10-18 21:07:26
सिंक्रनाइज़ेशन एक संदर्भ लौटने के साथ समस्या को ठीक से ठीक नहीं करता है। यदि GetMember() को अस्थायी पर कॉल किया जाता है, तो संदर्भ लगभग तुरंत अमान्य हो जाएगा। –
मैं आपसे सहमत हूं। पोस्टिंग करते समय मैं आलसी था, और कॉन्स्ट-नेस नहीं जोड़ा। –