2015-07-20 48 views
-2

我正在處理從數據庫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的組件。

是否有任何其他方式來提高大文件寫入磁盤的性能?

+0

你確定文件寫入是瓶頸嗎?從數據庫獲取所有數據而不寫入文件需要多長時間? – JimmyB

+0

你首先需要確定你的性能瓶頸在哪裏。 Ì打賭問題不在於編寫文件,而是從數據庫獲取數據...... – whosrdaddy

+0

'TFileStream'等人。是一樣快,你會得到。如果你不把它搞亂,所有的文件IO例程比實際的磁盤操作快得多,所以在這方面沒有什麼可以獲得的。 – JimmyB

回答

1

嘗試對clientdataset進行disablecontrol控制,在循環播放之前,它將顯着提高clientdataset在記錄中滾動的速度。

+0

是什麼讓你認爲有與數據集相關的視覺控制?沒有說這個問題是如此。 –