我的應用程序會連續計算字符串並將它們輸出到文件中。這是幾乎整整一天運行。但寫入文件會減慢我的應用程序。有沒有一種方法可以提高速度?另外我想擴展應用程序,以便在某段時間後可以將結果發送到另一個系統。需要一些幫助將結果寫入文件
感謝&問候,
像老鼠
我的應用程序會連續計算字符串並將它們輸出到文件中。這是幾乎整整一天運行。但寫入文件會減慢我的應用程序。有沒有一種方法可以提高速度?另外我想擴展應用程序,以便在某段時間後可以將結果發送到另一個系統。需要一些幫助將結果寫入文件
感謝&問候,
像老鼠
有幾件事情,可能會或可能不會幫助你,根據你的情況:
如何,如果你寫結果到插座,而不是文件。另一個程序Y將讀取套接字,打開一個文件,在其上寫入並關閉它,並在指定的時間後將結果傳輸到另一個系統。
我的意思是文件處理的過程由其他程序處理。原始程序X只是將輸出發送到套接字。它不關心它自己刷新文件流。
我也想擴展應用 ,這樣我可以經過一些特定 的時間將結果發送到一個 另一個系統。
如果你只是想將文件傳輸到其他系統,那麼我認爲一個簡單的腳本就足夠了。
使用多個文件進行日誌記錄。例如,在文件達到1 MB大小後,將其名稱更改爲包含日期和時間的名稱,然後開始寫入新文件,並將其命名爲原始文件名。 那麼你必須:
RESULTS.TXT
results2010-1-2-1-12-30.txt(1時12分三十秒2010年1月2日)
等。
它如何加快程序?這是否意味着寫入大於1MB大小的文件的過程緩慢,並且隨着大小的增加而變得越來越慢?請解釋一下。謝謝 – 2010-07-14 09:38:14
您可以在內存中緩衝不同計算的結果,並且只在緩衝區滿時寫入文件。例如,您可以通過計算100次計算的結果並將所有100個結果立即寫入文件中來設計應用程序。然後計算另一個100等等。
寫入文件顯然很慢,但是您可以緩存數據並啓動單獨的線程以便在文件上進行扭曲。這可以提高您的應用程序的速度。
其次,您可以使用ftp將文件傳輸到其他系統。
我認爲這裏有一些紅鯡魚。
在較舊的計算機系統上,我建議高速緩存字符串並進行少量的大寫操作,而不是大量的小寫操作。在現代系統上,默認的磁盤緩存綽綽有餘,做額外的緩衝不太可能有所幫助。
我認爲你不是禁用緩存或打開每個寫入文件。
它是可能寫入非常大的文件時出現了一些問題,但那不會是我的第一個猜測。
完成後輸出文件有多大?
是什麼原因導致您認爲該文件是瓶頸?你有分析數據?
是否有可能存在內存泄漏?
您可以發佈的任何代碼或統計資料將有助於診斷。
向我們展示填充文件的代碼。另一方面,你確定IO是瓶頸嗎? – mbq 2010-07-14 09:12:02
如果你換行4211和4212,並且在行340857中將'foo'改成'bar',我預測你的應用程序會快很多。 – sbi 2010-07-14 09:21:40