1. 程式人生 > >[UE4]藍圖比C++慢10倍,是嗎?

[UE4]藍圖比C++慢10倍,是嗎?

  首先,藍圖肯定是比C++慢。

  任何指令碼語言(需要解釋執行的語言),和C++相比可能達到十倍甚至百倍的差距。比如Java、Python、Lua,JS。

  指令碼語言是執行在虛擬機器上的,所以它們比起直接執行的程式碼要慢,要慢很多。

  藍圖屬於指令碼語言,其效能不比Java、Python、Lua,JS差。

  藍圖比C++慢10倍嗎?這個問題不能一概而論,要具體情況具體分析,因為大部分情況下,藍圖所呼叫的函式都是C++寫的,所以總體上來說,並沒有達到10倍的差距。

  如果和純C++相比,藍圖呼叫C++函式的額外開銷,是藍圖將引數傳遞給C++的過程。

在藍圖裡面將引數傳遞給C++,以及在返回的時候,C++把資料傳遞給藍圖,這個過程比純C++是有額外開銷的。

  假設一幀內的同樣的邏輯,用C++執行需要0.1毫秒,用藍圖需要1毫秒(也就是藍圖比C++相差10倍)。請問玩家能感覺出來嗎?答案是肯定感覺不出來的,因為在60幀遊戲中,遊戲主迴圈執行一幀需要17毫秒,藍圖只佔用1毫秒,還有16毫秒是在Sleep中等待。

  就算藍圖需要10毫秒執行一幀,比C++執行一幀0.1毫秒,相差100倍,在60幀遊戲中(執行一幀需要17毫秒)也是有7毫秒在Sleep中等待,因此玩家也是完全感覺不出來的。

  遊戲主迴圈詳見:遊戲主迴圈