2010-02-14 60 views

回答

6

對於實際執行大量工作的代碼(與花費大部分時間等待消息或調用內置函數相反),典型的加速將在8到20次之間。

這也很大程度上取決於什麼代碼的功能:遍歷浮點運算或二進制文件的操作/位串,往往會獲得最佳的加速,而更多的正常元組和列表的操作代碼可能無法得到超過快8-10倍。

另外,請記住,編譯爲本地代碼迴路不會得更快,如果循環體主要是調用未編譯爲本地其他模塊。

(這已經有一段時間,因爲我看着新鮮的基準測試結果,但我不認爲發生了很多變化。)

+0

你自己試過這個嗎? – Zubair 2010-02-14 21:10:27

+1

一次或兩次。 :-)(http://www.it.uu.se/research/group/hipe/people.shtml) – RichardC 2010-02-15 12:39:01

+0

啊,是的,我認爲這是你在瑞典電腦上的照片! :)對不起,我必須問,但很多人在StackOverflow上發帖,卻沒有真正做到他們正在談論的內容,只是傳遞「heresay」,但你看起來像真正的交易 – Zubair 2010-02-16 09:03:22

0

本土應該會更快。我不認爲這是一個恆定的因素是多快的速度;它基於機器/體系結構等肯定是不同的。

+0

我在網上找不到太多內容,所以想知道我是否能像10倍速度增加本地機器。 – Zubair 2010-02-14 13:38:17

+0

我也不知道任何來源。抱歉。 – ZeissS 2010-02-14 13:39:05

+0

好的,謝謝:) – Zubair 2010-02-14 13:50:11

1

有幾個正確答案了,但我想你實際上需要測量您特定功能的性能。如果關鍵區域是較合理的字節碼版本快,有可能仍然工作,清理模塊,使其故障安全。

+0

是的,總是衡量! :) – Zubair 2010-02-14 22:12:00

1

性能方面,HIPE優化模塊中 - 而不是模塊間的調用。這可以產生很好的加速比(x4..x10似乎普遍吹捧號),但是正如其他人說,如果你的代碼花費了大量的時間等待外部事件的增速將是微不足道的。

事情需要提防的是,HIPE顯然不支持一些進步的語言功能,如參數化模塊。這意味着一些最近的應用程序(如MochiWeb)根本無法運行。考慮到這一點。

1

在一個相關的說明,您可能會發現本文有用:

user.it.uu.se/~kostis/Papers/erlang03.pdf

當中描述了使用HIPE出現的侷限性,它也有一些(很基本的)速度comparisations。

的兩件事情,我發現最顯着的:

  • 老HIPE代碼,加載時,不會消失,但永遠徘徊。因此,如果您處於非常頻繁地重新加載代碼的環境中,則會導致內存泄漏。通常不是一個真正的問題,但值得考慮的,如果你沒有一個良好的「退出策略」爲您的節點(它允許您無縫地從節點羣集的和新鮮的不時替換他們 - 也無價有當你想升級到更新的BEAM-VM版本。)
  • 有一些開銷本地和解釋的代碼之間切換時,所以你會盡量避免在可能的情況(通過編譯,與頻繁交互的所有模塊相同的編譯器)
相關問題