2009-02-26 51 views
0

我正在做一些長時間的模擬,可能需要幾個小時到幾天的時間,我將這些信息記錄到文件中。這些文件可以達到幾百Mb的大小,裏面只有一個數字列表。我真的擔心這是起源的開銷。我想問一下,使用這種方法的開銷是否真的很大,如果還有其他更有效的方法來做同樣的事情,只需記錄信息。文件中的日誌信息的開銷

我正在使用C++並記錄文件,我只是使用fprintf的常用方法。要解釋開銷,如果你可以給出一個類似於實際的例子,使用這段時間不需要使用的文件,這將是理想的。

我做了一些測試,但我不知道如果開銷與文件的大小線性增長。我說的是,也許是不一樣的增加一個大小爲1GB的文件大小爲1GB的文件。有誰知道文件的大小是如何增長的?

回答

4

我想,你只需要一些後臺計算。

設「數百Mb」爲400MB。
讓「幾小時到幾天」是48小時。

(400 * 1024個* 1024個字節)/(3600×48秒爲單位)= 2427字節/秒

很明顯,你可以看你的系統或者使用實數進行計算,但使用上述粗略估計你的日誌記錄大約是2KB /秒,與平均硬盤限制相比,這非常簡單。

所以,不,開銷似乎不是很大。是的,有更有效的方法來做到這一點,但你可能會花費更多的時間和精力,除非你的數字與你陳述的數據有很大不同,否則你所得到的微不足道的節省是值得的。

+0

嗨Nathan感謝您的答案,只是爲了好奇心,也許爲未來的用戶看到了這個問題,你可以提供一些指導,如果有可能關於更有效的方式來做到這一點。 – Eduardo 2009-02-26 18:02:47

2

「數百兆字節」在幾天內可能無關緊要。數百GB的數據可能很重要,但可能仍然不會很大。

雖然有一個很明顯的方法可以找到你的確切應用的答案:運行一個模擬打開日誌和時間。然後運行它(使用相同的輸入),並關閉日誌並計時。比較差異。理想情況下,多次這樣做以抵消其他干擾。我懷疑你會發現很多日誌記錄的潛在好處大大超過了性能。

1

您可以將數據放入STL向量中,並對數據進行一些分析,如:
- 排除重複的行;
- 只保存差異;
- 幾次後刷新數據;
- 選擇要保存的特定數據;
- 等...

相關問題