2013-10-22 29 views
6

我想使用匯編代碼來處理一些關鍵性的使用PHP的性能問題。我怎樣才能做到這一點?我曾經搜查過,但一無所有。如何將彙編代碼嵌入到php中?

+0

彙編代碼? PHP是一種解釋型語言。更多信息在這裏:http://stackoverflow.com/questions/1514676/is-php-compiled-or-interpreted – H2ONOCK

+1

不,你真的不想這樣做。而且,**你不能**。如果您需要性能,請在您的平臺上設計適當的架構。爲關鍵任務使用內部服務,並讓PHP處理客戶端的請求。 – opalenzuela

+3

[這是不可能的。](http://stackoverflow.com/questions/10761931/is-possible-to-include-an-assembly-code-to-php-script) – wens

回答

4

我相信你在談論擴展PHP。

您可以通過使用c語言創建自定義擴展來實現這一點。一個簡單的教程如何做到這一點你找到here

+0

謝謝!對我來說一個新的方式。 –

+0

@Udan:就我而言,我想創建一個適用於任意即時編譯的php程序,有沒有其他方法可以調用gcc?是否真的沒有相當於允許dlopen()任何共享對象文件的python ctype函數? – user2284570

+0

看看這個問題http://softwareengineering.stackexchange.com/questions/29344/jit-compiler-for-c-c-and-the-likes。如果你真的需要的話,我相信你將能夠找到一個聰明的方式來在php擴展中使用JIT編譯器。 – Udan

1

使用大會爲您的性能問題,就像使用大錘打開一個大壩,而有可能是一個槓桿某處,打開大壩。首先看看你的結構,看看爲什麼這些關鍵任務有性能問題,看看你是否可以改變結構。

此外,由於php是一種在運行時解釋的腳本語言,因此將代碼重寫爲C,就像來自Udan的示例提供了90%的性能提升,將C代碼重寫爲程序集可能會添加一些額外10%,但需要90%的時間。

另一方面,在代碼中使用匯編的參數爲您提供了一些誇耀權利,直到另一位程序員查看您的代碼爲止,重新構造它,使性能提升50%,並完全繞過您的程序集。

+0

-1 - 使用程序集進行Web開發是可能的,也是容易的。性能提升遠遠超過10%你的10%/ 90%比喻有偏見是基於觀點的。 – johnfound

+0

+1。就每個編碼小時的性能增益而言,對於比「Hello world」更復雜的任務,C會在任何一天打敗大會。這是對維護成本的折扣。 –