कचरा-एकत्र प्रोग्रामिंग भाषा में निर्दिष्ट सबसे खराब डेटा संरचनाओं के चलने के समय का विश्लेषण करते समय जीसी की लागत की उपेक्षा की जा सकती है?


22

मुझे बस एहसास हुआ कि मैं अपने प्रश्न का उत्तर "हाँ" मान रहा हूं, लेकिन मेरे पास कोई अच्छा कारण नहीं है। मैं कल्पना करता हूं कि शायद एक कचरा संग्रहकर्ता है जो केवल सबसे खराब स्थिति वाले मंदी का परिचय देता है । क्या कोई निश्चित संदर्भ है जिसका मैं उल्लेख कर सकता हूं? मेरे मामले में मैं विशुद्ध रूप से कार्यात्मक डेटा संरचना पर काम कर रहा हूं और अगर ये विवरण मायने रखता है तो मैं मानक एमएल का उपयोग करता हूं।हे(1)

और शायद यह सवाल तब और भी अधिक प्रासंगिक होगा जब इसमें निर्दिष्ट डेटा संरचनाओं पर लागू किया जाता है, कहते हैं, जावा? शायद एल्गोरिदम / डेटा संरचना पाठ्यपुस्तकों में कुछ प्रासंगिक चर्चाएं हैं जो जावा का उपयोग करती हैं? (मुझे पता है कि सेडगेविक का जावा संस्करण है, लेकिन मेरे पास केवल सी संस्करण तक पहुंच है।)

जवाबों:


17

हां, जीसी निरंतर समय में परिशोधन है। मान लीजिए कि आपके पास एक एल्गोरिथ्म है जो आकार के k के एक चरम काम करने वाले सेट के साथ समय लिए चलता है । अब, ध्यान दें कि आप कार्यक्रम के निष्पादन के दौरान अधिकांश ( n ) शब्दों में आवंटित कर सकते हैं , और यह है कि एक कॉपी कचरा कलेक्टर को चलाने का समय लागत हे ( के ) है (यानी, एक जीसी की लागत कुल के लिए आनुपातिक है लाइव डेटा की मात्रा)। इसलिए यदि आप ज्यादातर O ( n / k ) समय पर gc चलाते हैं , तो कुल रनटाइम लागत O ( n ) से बंधी होती हैnकश्मीरहे(n)हे(कश्मीर)हे(n/कश्मीर)हे(n), जिसका अर्थ है कि जीसी की परिशोधन लागत स्थिर है। इसलिए यदि आपके पास एक चेनी-शैली का कलेक्टर है, तो प्रत्येक अर्धकुंभ का आकार , तो यह देखना आसान है कि एक पूर्ण संग्रह को हर n / k चरणों से अधिक एक बार लागू नहीं किया जा सकता है , क्योंकि k शब्दों को आवंटित करना O ( k ) लेता है। समय, और कार्य सेट कभी भी आकार k से अधिक नहीं होता है, जो आपको वह सीमा देता है जो आप चाहते हैं। यह जीसी मुद्दों की अनदेखी को सही ठहराता है।2कश्मीरn/कश्मीरकश्मीरहे(कश्मीर)कश्मीर

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

संपादित करें: यदि आप गैर-परिशोधित सीमाएं चाहते हैं, तो चेनी कलेक्टर ऐसा नहीं करेगा - यह पूरे लाइव सेट को स्कैन करता है जब इसे लागू किया जाता है। Google के लिए कीवर्ड "वास्तविक समय कचरा संग्रह" और Djikstra et al है। और स्टील ने पहली बार रीयल-टाइम मार्क-एंड-स्वीप कलेक्टर दिए और बेकर ने पहला वास्तविक समय कॉम्पैक्टिंग जीसी दिया।

@article {dijkstra1978fly,
  शीर्षक = {{ऑन-द-फ्लाई कचरा संग्रह: सहयोग में एक अभ्यास}},
  लेखक = {दिक्जस्त्र, ईडब्ल्यू और लामपोर्ट, एल। और मार्टिन, ए जे और शोल्टेन, सीएस और स्टीफंस, ईएफएम},
  पत्रिका = {एसीएम के संचार},
  मात्रा = {21},
  संख्या = {11},
  पृष्ठों = {} 966--975,
  ISSN = {0001-0782},
  साल = {1978},
  प्रकाशक = {} एसीएम
}

@article {steele1975multiprocessing,
  शीर्षक = {{मल्टीप्रोसेसिंग कॉम्पैक्टिंग कचरा संग्रह}},
  लेखक = {स्टील जूनियर, जीएल},
  पत्रिका = {एसीएम के संचार},
  मात्रा = {18},
  संख्या = {9},
  पृष्ठों = {} 495--508,
  ISSN = {0001-0782},
  साल = {1975},
  प्रकाशक = {} एसीएम
}

@article {baker1978list,
  शीर्षक = {{सीरियल कंप्यूटर पर वास्तविक समय में सूची प्रसंस्करण}},
  लेखक = {बेकर जूनियर, एचजी},
  पत्रिका = {एसीएम के संचार},
  मात्रा = {21},
  संख्या = {4},
  पृष्ठों = {} 280--294,
  ISSN = {0001-0782},
  साल = {1978},
  प्रकाशक = {} एसीएम
}


1
"हाँ, जीसी लगातार समय परिशोधन है"। यह सामान्य रूप से सच नहीं है। आप तर्क दे सकते हैं कि GC हो सकता है लेकिन वे जरूरी नहीं हैं और वास्तविक निश्चित रूप से नहीं हैं। उदाहरण के लिए, List.mapOCaml में भोली वास्तव में द्विघात जटिलता है क्योंकि स्टैक की गहराई रैखिक है और प्रत्येक बार नर्सरी खाली होने पर स्टैक को उतारा जाता है। समान बड़े स्लाइस के लिए पॉइंटर्स के बड़े सरणियों का सामना करता है।
जॉन हार्प्र

12

हे(n)

हे(1)

निश्चित कचरा संग्रहण संदर्भ है:

  • रिचर्ड जोन्स और राफेल लिन द्वारा कचरा संग्रह

बेन ज़ोर्न ने अलग-अलग कचरा संग्रह एल्गोरिदम की वास्तविक लागतों को मापने के लिए कुछ काम किया , हालांकि निम्नलिखित अधिक हालिया पेपर अधिक व्यापक तुलना प्रस्तुत करता है:

अधिक देखने के लिए:

  • कचरा संग्रह , बेकन, चेंग, और राजन का एक एकीकृत सिद्धांत , ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग, सिस्टम, लैंग्वेजेस, और एप्लीकेशन पर एसीएम सम्मेलन, वैंकूवर, ईसा पूर्व, कनाडा, पीपी। 50-68, 2004।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.