我正在處理從數據庫MySQL寫入磁盤的大文件。我的文件可能會達到每個文件的GB。我擔心的是,我試圖用多種方式編寫文件,但結果是一樣的(花費更長的時間完成)。將文件寫入磁盤時出現緩慢(Delphi XE5)
要生成0.2 GB或200,000 KB的文件,需要花費近2小時半的時間才能完成。我試圖通過使用TSQLQuery或TClientdataset來獲取數據,但它們給出了相同的結果(完成時間)寫入文件。
同時,對於寫入過程,我使用TFileStream和Windows.API類來編寫文件,它們之間沒有區別。我的期望是,它會以不同的方式處理,因此會有所不同。
我也嘗試已在 (Buffered files (for faster disk access))之前公佈的方法
但仍沒有提高性能。
這種情況只發生在大文件上。當我嘗試製作一個小尺寸的文件時,速度非常快。
我在D7中運行了相同的代碼。寫作過程只需要幾分鐘即可完成。我使用XE5的原因是因爲我想避免使用BDE的組件。
是否有任何其他方式來提高大文件寫入磁盤的性能?
你確定文件寫入是瓶頸嗎?從數據庫獲取所有數據而不寫入文件需要多長時間? – JimmyB
你首先需要確定你的性能瓶頸在哪裏。 Ì打賭問題不在於編寫文件,而是從數據庫獲取數據...... – whosrdaddy
'TFileStream'等人。是一樣快,你會得到。如果你不把它搞亂,所有的文件IO例程比實際的磁盤操作快得多,所以在這方面沒有什麼可以獲得的。 – JimmyB