2011-06-03 49 views
3

我正在爲我的公司編寫一個自定義的apache日誌解析器,並且發現了一個我無法解釋的性能問題。我有一個1.2GB大小的文本文件log.txt。unix中排序命令的性能

命令:sort log.txt最長比命令慢3秒:cat log.txt |排序

有人知道爲什麼會發生這種情況嗎?

+0

由於日誌文件在過渡期間增長,一個調用是否比另一個更長? – Johnsyweb 2011-06-03 10:43:58

+0

不,我在本地複製文件。 – gpol 2011-06-03 10:50:50

+0

只是檢查:-) – Johnsyweb 2011-06-03 10:52:03

回答

4

cat file | sortUseless Use of Cat

cat的目的是連接 (或「catenate」)文件。如果僅僅是 單個文件,將其與 連接起來不會浪費時間,並且 會使您成爲一個進程。

它不應該花更長的時間。你確定你的時間安排正確嗎?

請張貼的輸出:

time sort file 

time cat file | sort 

你需要運行的命令幾次,得到的平均值。

+0

+1時間使用。 – Mikaveli 2011-06-03 10:35:00

+0

你是對的!感謝名單!我只是檢查時間命令的單個輸出。當跑了5次,平均沒有貓的版本似乎大約快了2秒!感謝鏈接也很多! – gpol 2011-06-03 10:55:17

+0

@ user744734:在取平均值之前,您應該丟棄異常值,在這種情況下,至少應該緩存加熱緩存的運行。 – ninjalj 2011-06-04 00:46:49

1

反而擔心的sort的表現,而不是你需要改變你的日誌記錄:

  • 消除不必要的冗長的輸出到您的日誌。
  • 定期滾動日誌(基於日期或大小)。
  • ...修正輸出到日誌的錯誤。 ;)

另外,你確定貓正在讀取整個文件?它可能有讀緩衝區等。