में 200 मिलियन पंक्तियों सम्मिलित करना मैं जो मैं गति के लिए अनुकूलित करना चाहते हैं निम्नलिखित (सरलीकृत) कोड:सी # अनुकूलन: डेटाबेस
long inputLen = 50000000; // 50 million
DataTable dataTable = new DataTable();
DataRow dataRow;
object[] objectRow;
while (inputLen--)
{
objectRow[0] = ...
objectRow[1] = ...
objectRow[2] = ...
// Generate output for this input
output = ...
for (int i = 0; i < outputLen; i++) // outputLen can range from 1 to 20,000
{
objectRow[3] = output[i];
dataRow = dataTable.NewRow();
dataRow.ItemArray = objectRow;
dataTable.Rows.Add(dataRow);
}
}
// Bulk copy
SqlBulkCopy bulkTask = new SqlBulkCopy(connection, SqlBulkCopyOptions.TableLock, null);
bulkTask.DestinationTableName = "newTable";
bulkTask.BatchSize = dataTable.Rows.Count;
bulkTask.WriteToServer(dataTable);
bulkTask.Close();
मैं पहले से ही सब कुछ तेज़ करने की कोशिश में SqlBulkCopy उपयोग कर रहा हूँ , लेकिन ऐसा लगता है कि डेटाटेबल को मान असाइन करना धीमा साबित होता है।
मुझे नहीं पता कि डेटाटेबल्स कैसे काम करते हैं, इसलिए मुझे आश्चर्य है कि क्या मैं पहले पुन: प्रयोज्य सरणी बनाकर अनावश्यक ओवरहेड बना रहा हूं, फिर इसे डेटारो में असाइन कर रहा हूं, फिर डेटाटेव को डेटाटेबल जोड़ रहा हूं? या डेटाटेबल का उपयोग पहली जगह इष्टतम नहीं है? इनपुट डेटाबेस से आता है।
मुझे बस, बस गति के बारे में ज्यादा परवाह नहीं है। क्या कोई इस पर कुछ सलाह दे सकता है?
उदाहरण कार्यान्वयन के लिए, 'SimpleDataReader' [यहां] देखें (https://groups.google.com/group/microsoft.public.dotnet.languages.csharp/msg/b1d70b504cdee2ad?hl=hi) –