हाल ही में मुझे डेटासेट में संग्रहीत डेटा के साथ कुछ बहुत ही प्रोसेसिंग भारी सामान करना पड़ा। यह इतना भारी था कि मैं अपने कोड में कुछ बाधाओं की पहचान करने में मदद के लिए एक उपकरण का उपयोग कर समाप्त हुआ। जब मैं बाधाओं का विश्लेषण कर रहा था, मैंने देखा कि हालांकि डेटासेट लुकअप बहुत धीमी नहीं थी (वे बाधा नहीं थीं), यह अपेक्षा से धीमी थी। मैंने हमेशा यह माना कि डेटासेट्स ने कुछ प्रकार के हैशटेबल शैली कार्यान्वयन का उपयोग किया जो लुकअप ओ (1) (या कम से कम जो मुझे लगता है कि हैशटेबल हैं)। मेरे लुकअप की गति इस से काफी धीमी लगती थी।डेटासेट पंक्ति/कॉलम लुकअप की गति?
मैं सोच रहा था कि जो भी .NET के डेटासेट क्लास के कार्यान्वयन के बारे में कुछ भी जानता है, वह जो भी जानता है उसे साझा करने की देखभाल करेगा।
मैं कुछ इस तरह करते हैं:
DataTable dt = new DataTable();
if(dt.Columns.Contains("SomeColumn"))
{
object o = dt.Rows[0]["SomeColumn"];
}
कितनी तेजी से देखने समय Contains(...)
विधि के लिए, और Object o
में स्टोर करने के लिए मूल्य पुन: प्राप्त करने के लिए हो सकता है? मैंने सोचा होगा कि यह हैशटेबल की तरह बहुत तेज है (मान लीजिए कि मैं हैशटेबल्स के बारे में क्या समझता हूं) लेकिन यह ऐसा प्रतीत नहीं होता है ...
मैंने स्मृति से कोड लिखा है, इसलिए कुछ चीजें "वाक्य रचनात्मक रूप से नहीं हो सकती हैं सही बात"।
यह ओ (एन^2) होगा क्योंकि आप प्रत्येक आइटम पर स्ट्रिंग तुलना कर रहे हैं। –