2010-07-20 17 views

उत्तर

21

व्यक्तिगत रूप से, मैं शायद ही कभी एक सरणी के लिए स्पैस से परेशान हूं जो केवल 25% गैर-शून्य है। यदि आप मुझ पर विश्वास नहीं करते हैं, तो इसे स्वयं आज़माएं।

A = sprand(2000,2000,0.25); 
tic,B = A*A;toc 
Elapsed time is 1.771668 seconds. 

Af = full(A); 
tic,B = Af*Af;toc 
Elapsed time is 0.499045 seconds. 

अतिरिक्त स्पैस मैट्रिक्स के रूप में इसमें शामिल अतिरिक्त काम परेशान होने के लिए बहुत अधिक खर्च करता है। अब इसे वास्तव में स्पैर मैट्रिक्स के साथ आज़माएं।

A = sprand(2000,2000,0.005); 
Af = full(A); 

tic,B = A*A;toc 
Elapsed time is 0.037763 seconds. 

tic,B = Af*Af;toc 
Elapsed time is 0.446680 seconds. 

बेशक, आपकी अपनी समस्या अलग होगी, लेकिन यह अलग नहीं होगी। स्पैर मैट्रिस उस व्यक्ति के लिए एक असली वरदान है जो वास्तव में स्पैर मैट्रिस का उपयोग करता है, लेकिन 25% गैर-शून्य बस अधिकांश मामलों में किसी भी लाभ के लिए "स्पैस" नहीं है।

4

संपादित करें- quesiton को गलत तरीके से पढ़ें।

75% स्पैरसिटी के साथ, आप स्पैर मैट्रिक्स एल्गोरिदम के साथ एक महत्वपूर्ण प्रदर्शन वृद्धि देख सकते हैं। मैं कहूंगा कि यह निश्चित रूप से प्रयास करने लायक है।

दो स्थानों पर जहाँ आप स्मृति (चार का एक पहलू से अपनी स्मृति उपयोग को कम करने) और संचालन (हर बार जब आप एक मैट्रिक्स-वेक्टर गुणा करना save- जाएगा, उदाहरण के लिए, आप बहुत आपरेशन के खासी कमी आएगी आवश्यक)। आपके मामले में कमजोर कारक, आपके मैट्रिक्स का आकार भी हो सकता है। स्पैस मैट्रिक्स ऑपरेशन में जाने के लिए, आप आम तौर पर घने मैट्रिस के साथ देखे जाने वाले अच्छे कैशिंग विशेषताओं को खो देते हैं। इस प्रकार, आमतौर पर एक सीमा होती है जहां घने से छिड़काव की गति दक्षता बढ़ जाती है।

संबंधित मुद्दे