2016-11-17 50 views
1

我遇到的情況在顯着不同的運行時使用的cat和重定向如何導致同一命令的不同運行時間?

cat file | executable 

executable < file 

結果。具體來說,我有一個使用SQLite專家或從命令行sqlite3內運行10-20秒的查詢。我這個可執行文件保存到一個文件並運行

sqlite3 database.sqlite < file 

這需要10 - 20秒,運行

cat file | sqlite3 database.sqlite3 

注意到超過15分鐘運行。

數據庫是相同的,相同的機器,相同的SQL腳本,只有sqlite3接收其指令的方式不同。爲什麼我會看到非常不同的行爲。

注意在Unix和Windows上都是這種情況。

回答

-1

隨着貓,你正在產卵一個新的過程,並重定向輸出。 Useless Use of Cat Award很好地描述了這一點。 通過擴展提供stdin上的文件,你只是給sqllite3工具一個參數。

+0

UUoC是一個值得關注的問題,但它沒有考慮20秒和15分鐘運行時間之間的差異。 –

+0

'<'不是一個參數。 –

相關問題