2009-02-17 36 views
1

期運用VC++的VisualStudio 2003性能問題,從不同的計算機上拷貝文件

我試圖複製多個圖像文件(30KB左右,每個文件)從共享文件夾到本地另一computer`s文件。

問題是在一次傳輸中可能會有2000多個文件,而且看起來 會對其造成影響,因此需要花費更多時間才能完成。

是否有任何替代方法從另一臺計算機複製文件,可能會加快複製速度 ?

在此先感謝。

編輯* 由於客戶端的請求,這是不可能的dramaticaly改變代碼庫, 討厭不得不從因非techinical問題的最佳做法偏離, 但有一個更微妙的approuch?如另一個函數調用?

我知道我是要求一些神奇的巫術,只是爲了萬一有人知道這樣的要求。

回答

1

那麼,一開始,2000年是不是幾個。如果因爲發送大量小文件而花費大部分時間,那麼您會想出一個解決方案,將它們從源代碼打包到單個文件中,並將其解包到目的地。這將需要在源代碼上運行一些代碼 - 您必須設計解決方案以允許執行此操作,因爲我現在假設您只是從網絡共享中進行復制。

如果是網絡速度(不太可能),那麼您也會壓縮它們。

我自己的看法是,它將是文件的數量,基本上是複製的所有重複啓動成本。那是因爲2000個30K文件只有60MB,而在10Mb的鏈接上,理論上的最短時間大概是一分鐘。

如果你的時間大大超過那個,那麼我會說我是對的。

使用7zip或類似的解決方案將它們全部壓縮到一個7z文件中,傳輸它們,然後在另一端解壓縮它們,聽起來就像您要查找的內容。

但是措施,不要猜測!測試一下,看看它是否提高了性能。然後做出決定。

+0

感謝您的意見。 它不是文件大小,歸檔方法似乎理想 – Saifis 2009-02-17 07:40:47

2

有幾件事情嘗試:

使用OS得更快
  • 被複制文件?

  • 如果不是,那麼您的網絡或其設置方式可能存在一些固有限制(可能是驗證問題,或者遠程服務器存在一些硬件問題,或者它太忙或者網卡丟失太多數據包由於碰撞,開關故障,接線不良......)

  • 使一些測試傳輸各種大小的文件。
    小文件總是傳輸速度較慢,因爲存在大量開銷來獲取其細節,然後傳輸數據,然後創建目錄條目等。

  • 如果大文件很快,那麼你的網絡是好的,你可能無法提高系統(瓶頸在別處)。

  • 最後,從代碼中,您可以嘗試打開,一次將文件讀取到一個大緩衝區,然後將它們保存在本地驅動器上。這可能會更快,因爲您將繞過操作系統在內部進行的大量檢查。

  • 你甚至可以在幾個線程上同時打開,加載和寫入文件來加快速度。

一對夫婦引用您可以檢查輯陣線程文件副本:

如果在代碼實現這個自己是太麻煩了,你總是可以簡單地在你的應用程序的後臺執行類似McTool一個實用程序,並讓它爲你做的工作。

+0

是的,使用操作系統的複製速度更快。 感謝adcice,將研究多線程方法 – Saifis 2009-02-17 07:42:29