→ sitos:說不定開 thread 比 fwrite 寫到 buffer 還久 10/30 10:10
→ sitos:不過 WriteData 那個 function 好像寫得怪怪的 10/30 10:38
→ wope:WriteData 那個只是我寫一部分過來 他實際上寫入約為1MB 10/30 10:50
→ wope:經過測試主要還是卡在寫入硬碟 10/30 10:51
→ wope:我一個檔案只寫一次就關起來了(剩下的都在buffer操作) 10/30 10:53
→ wope:目前是CPU沒有跑滿 硬碟IO數也不多 寫入的MB也不多 10/30 10:55
→ Schottky:每個檔都只寫一次就關起來... 那時間應該都花在開關檔吧 10/30 10:57
→ wope:回Schottky: 我沒想過這個問題 那這要怎麼加速 10/30 11:01
→ wope:經過這幾天的測試經驗 非常有可能 10/30 11:01
→ Schottky:將作業系統更換為Linux。警告:這個動作可能會損失資料。 10/30 11:47
→ Schottky:Windows處理許多小檔案時就會特別慢,這個無解... 10/30 11:49
→ Schottky:只能儘量把要寫的內容合併到同一個檔案裡面去 10/30 11:50
→ Schottky:程式一倒可以試試 Windows Overlapped I/O 10/30 11:52
→ Schottky:不過即使沒有這些問題,程式二本來也就不可能比程式一快啊 10/30 11:58
→ Schottky:瓶頸在 disk I/O, 不關 CPU thread 的事 10/30 11:59
回Schottky: 程式2是多顆實體硬碟 程式1是單顆硬碟
多顆實體硬碟理論上是可以同時disk I/O的呀(還是我想錯了)
推 xvid:1MB*3對硬碟來說不是小菜一碟嗎? 10/30 20:51
→ xvid:資源檢視器上的硬碟有很忙碌嗎? 10/30 20:52
我是覺得沒有 平均30 IO/sec
所以我一直在想卡在哪裡
感覺會部卡在4k以下的小檔
(我程式中除三個1MB之外還有7個1KB的小檔寫入 本來想不是重點)
剛剛在網路上找到測試文
http://home.gamer.com.tw/creationDetail.php?sn=2037702
在4k時讀寫
一般硬碟約在 1.3~1.4 MB/sec (寫入平均)
我的程式約在 6MB/sec (4硬碟)
1 MB*3*17(每分鐘跑17組)/60 ~~ 0.85MB/sec
小檔處理速度:6-0.85=5.15 MB/sec
平均單硬碟: 5.15/4=1.2875 MB/sec (約在測試文的 95.37% 的效能)
所以是小檔處理的問題了嗎?
推 holyspectral:可詳見windows internals 10/30 23:23
→ holyspectral:Windows kernel一次只能處理一個I/O 10/30 23:24
→ holyspectral:所以multi-thread跑I/O不會有幫助 10/30 23:24
→ holyspectral:sorry 弄錯,請無視 10/30 23:54
※ 編輯: wope 來自: 220.133.104.111 (10/31 08:46)
※ 編輯: wope 來自: 220.133.104.111 (10/31 10:09)