Shell
編譯後的 shell 腳本對性能更好嗎?
經過一番Google搜尋,我找到了一種將 BASH 腳本編譯為二進制執行檔的方法(使用
shc
)。我知道 shell 是一種解釋型語言,但是這個編譯器是做什麼的呢?它會以任何方式提高我的腳本的性能嗎?
要回答標題中的問題,編譯後的 shell 腳本可能會更好地提高性能——如果編譯的結果代表解釋的結果,而不必一遍又一遍地重新解釋腳本中的命令。參見例如
ksh93
’sshcomp
或zsh
’szcompile
。但是,
shc
不會以這種方式編譯腳本。它不是真正的編譯器,它是一個腳本“加密”工具,具有各種效果可疑的保護技術。當您使用 編譯腳本時shc
,結果是一個二進製文件,其內容不能立即讀取;當它執行時,它會解密其內容,並使用解密後的腳本執行腳本所要使用的工具,從而使原始腳本易於檢索(它在解釋器的命令行上完整傳遞,並帶有額外的間距以嘗試使更難找到)。所以整體性能總是會更差:除了執行原始腳本所花費的時間之外,還有設置環境和解密腳本所花費的時間。