मैंने लिंक के इस टुकड़े को एक क्रॉस करने के लिए लिखा है, एक डेटाबेस की तरह जुड़ें कई सूचियों के बीच होगा।यह क्रॉस लिंक में इतना धीमा क्यों है?
लेकिन कुछ कारणों से यह बहुत धीमी है जब कोई भी सूची 3000 से अधिक हो जाती है। मैं 30 के लिए इंतजार करूँगा? ये सूचियां बहुत बड़ी संख्या में जा सकती हैं।
इस क्वेरी से आ रही ColumnDataIndex अन्य सूची के डेटा के साथ प्रत्येक रिश्ते के लिए लूप में चलाया जाता है।
कोई सलाह?
अद्यतन ** - डेटा सामान्य सूचियों में डाला गया है जो कॉन्फ़िगर किए गए स्रोतों से पहले बनाए गए हैं। इस समय यह सब स्मृति में है।
RunningResult[parameter.Uid] = (from source_row in RunningResult[parameter.Uid]
from target_row in ColumnDataIndex[dest_key]
where GetColumnFromUID(source_row, rel.SourceColumn) == GetColumnFromUID(target_row, rel.TargetColumn)
select new Row()
{
Columns = MergeColumns(source_row.Columns, target_row.Columns)
}).ToList();
2 अतिरिक्त कार्य:
MergeColumns: 2 आइटम से कॉलम ले जाता है और उन्हें एक ही सरणी में विलीन हो जाती है।
public static Columnn[] MergeColumns(Column[] source_columns, Column[] target_columns)
{
Provider.Data.BucketColumn[] new_column = new Provider.Data.BucketColumn[source_columns.Length + target_columns.Length];
source_columns.CopyTo(new_column, 0);
target_columns.CopyTo(new_column, source_columns.Length);
return new_column;
}
GetColumnFromUID: रिटर्न दिए गए स्तंभ uid मिलान मद में स्तंभ का मान।
private static String GetColumnFromUID(Row row, String column_uid)
{
if (row != null)
{
var dest_col = row.Columns.FirstOrDefault(col => col.ColumnUid == column_uid);
return dest_col == null ? "" + row.RowId : dest_col.Value.ToString().ToLower();
}
else return String.Empty;
}
अद्यतन:
डेटा और एक डेटाबेस के लिए क्वेरी चलती समाप्त हो गया। यह गति को कई एमएस तक कम कर दिया गया। एक अनुकूलित looped समारोह लिखा हो सकता है, लेकिन यह मेरे लिए सबसे तेज़ तरीका था।
आप कहाँ अपने datasources परिभाषित कर रहे हैं, के अंदर या लूप के बाहर:
LINQ अपने स्वयं के आंतरिक आपरेशन,
Join
में शामिल होने है, तो आप भी अपने खुद के बारे में की जरूरत नहीं है नहीं है।यदि बाहर हैं, तो वे क्वेरी करने योग्य स्रोत या सूचियां हैं। –मैं उन्हें –
से ऊपर लूप के बाहर बना रहा हूं मेरी सलाह: ** एक प्रोफाइलर चलाएं। ** कुछ और अनुमान लगा रहा है। –