我寫了一個課程來讀取一個CSV文件,其中包含4k條記錄,72個寬的寬度。在列表中的'read()'需要從字面上第二個,也許...性能調優:保存記錄按指數規律增長每500個記錄?
一旦我已成功加載列表,我有一般流程保存每個對象到數據庫;
foreach (var object in Objects)
{
try{
// check conditions
// perform conversions on the data and assign to domain object.property
//....
//db.object.Add(object);
//db.savechanges();
}catch{
//update log if the try fails
}
}
一旦循環成功執行,我調用db.dispose();
我沒有在MVC控制器結構之外構建太多的類,因爲我是新手,所以對我來說很簡單;)。我假設我正在使用這種造成指數處理時間問題的方法來捆綁寶貴的資源。
有關如何提高性能的任何建議?提前致謝!
由於這是實體框架,我猜你會遇到大量對象變化跟蹤的開銷。有各種方法來解決這個問題。谷歌的「實體框架更改跟蹤」,也許有一些背景爲「AutoDetectChangesEnabled」。 –
謝謝,我將不得不考慮這一點。我的一般邏輯是從列表中取一個對象並將其分配給一個域對象,保存,清洗重複。我不確定爲什麼它會跟蹤更改,因爲這些都是新對象。對於那些我檢查它們是否已經存在的對象,我運行db.model.find(),然後將列表對象中的每個值分配給「找到的」域對象。 – JReam
這是你引用Atoms的嗎? http://weblog.west-wind.com/posts/2013/Dec/22/Entity-Framework-and-slow-bulk-INSERTs – JReam