編譯原理之解釋器與編譯器

在代碼的世界中,通常有兩種方式來翻譯機器語言:解釋器和編譯器。

如果是通過解釋器,翻譯是一行行地邊解釋邊執行

編譯器是把源代碼整個編譯成目標代碼,執行時不再需要編譯器,直接在支持目標代碼的平臺上運行。

解釋器的利弊
解釋器啓動和執行的更快。你不需要等待整個編譯過程完成就可以運行你的代碼。從第一行開始翻譯,就可以依次繼續執行了。

正是因爲這個原因,解釋器看起來更加適合 JavaScript。對於一個 Web 開發人員來講,能夠快速執行代碼並看到結果是非常重要的。

這就是爲什麼最開始的瀏覽器都是用 JavaScript 解釋器的原因。

可是當你運行同樣的代碼一次以上的時候,解釋器的弊處就顯現出來了。比如你執行一個循環,那解釋器就不得不一次又一次的進行翻譯,這是一種效率低下的表現。

編譯器的利弊
編譯器的問題則恰好相反。

它需要花一些時間對整個源代碼進行編譯,然後生成目標文件才能在機器上執行。對於有循環的代碼執行的很快,因爲它不需要重複的去翻譯每一次循環。

另外一個不同是,編譯器可以用更多的時間對代碼進行優化,以使的代碼執行的更快。而解釋器是在 runtime 即運行時進行這一步驟的,這就決定了它不可能在翻譯的時候用很多時間進行優化。

發佈了31 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章