2016-05-24 21 views
1

我在Linux上有一個C++應用程序,它將一些數據寫入SSD。 應用程序以〜100 MBytes /秒的速度寫入。使用SSD時,使用一個線程寫20個不同的文件而不是20個線程會更好嗎?

每秒鐘,應用程序將20個新文件寫入磁盤。除了這20個線程外,應用程序的其他線程還執行其他邏輯和維護。現在,我的應用程序使用多個線程同時寫入多個文件,每個線程寫入一個文件。

最好是更改代碼的設計,並讓每個線程每秒寫入20個新文件?

+5

爲什麼不試試呢,衡量它的總執行時間是最好的,並找出?與任何優化問題一樣,您的結果將取決於系統,應用程序的行爲以及任何其他因素。也就是說,多個線程可以允許並行準備數據;每個線程都會阻塞輸出操作,但這不會阻止其他正在運行的線程準備自己的寫操作。線程之間的同步會影響性能,I/O調度程序和寫入的性質也會影響性能。準備一個大塊並讓操作系統將它寫入單個文件通常會更好。 – Andrew

回答

0

這取決於你的操作系統

上,但寧願建議使用最多4個線程-8作爲OS的大部分時間的線程管理slowers的PROGRAMM如果太多線程執行的並行

嘗試使用了一下較少的線程與多任務,爲他們每個人做;)

你可以做的仍然是衡量計劃

相關問題