我想優化一個我創建的備份程序。該代碼是馬虎,因爲這是我的第一個程度如此巨大,但希望你可以看看過去。使用Parallel.ForEach
這個程序運行良好,但它似乎需要更長的時間。所以我正在用Parallel.ForEach來幫助優化壓縮過程。
現在,我有計劃做荏苒任務通過以下方式
Dim Destin = JobNode.SelectNodes("Destination")
For Each item As System.Xml.XmlNode In Destin
Dim time As DateTime = DateTime.Now
Dim format As String = "MMMddyyyy"
Dim zpath As String = item.InnerText
'replaces [date] in destination with actual Date
If time.DayOfWeek = 1 Then
time = time.AddDays(-1)
item.InnerText = Replace(item.InnerText, "[date]", time.ToString(format) & "_WE")
zpath = item.InnerText
zip.ParallelDeflateThreshold = -1
zip.Save(zpath)
Else
Dim time1 As DateTime = DateTime.Now.AddDays(-1)
item.InnerText = Replace(item.InnerText, "[date]", time1.ToString(format))
zpath = item.InnerText
zip.ParallelDeflateThreshold = -1
zip.Save(zpath)
End If
Next
我都保存在一個XML文件進行讀取源和目標位置。而這個每個循環的工作原理就是我想要的。但是,我無法將這個每個循環轉換成一個Parallel.ForEach循環。
任何幫助將是很好的。再說一次,在編程方面,我仍然是綠色的,所以對我來說很愚蠢。
是的...我環顧了互聯網尋求幫助,但它要麼混淆我,不在我的上下文中工作,或者我無法讓它與我的代碼一起工作。
爲什麼你認爲它需要更長的時間比必要嗎?您的程序很可能受到磁盤驅動器速度的限制。如果您使用的是Windows 7(我不知道Vista或Windows 8),那麼您可以使用任務管理器的性能選項卡中提供的資源監視器(按Ctrl + Shift + Esc)查看要發生的事情上。在Overview選項卡上,查看右側的CPU和Disk圖表。 – 2013-02-14 21:09:31
嗯,我想我不確定它是否完全最佳。我只是想,讓每個工作都被壓縮在一個單獨的線程上會加速一些。在同一時間壓縮每個作業必須節省時間......對吧? – MaylorTaylor 2013-02-14 21:19:15
不一定:如果磁盤驅動器必須將磁頭來回移動到更多位置,則可以通過並行壓縮文件來降低速度。測試將揭示是否是這種情況。請記住,它必須移動頭從源文件讀取,然後再移動它以寫入目標文件。 – 2013-02-14 21:25:05