我正在考慮從C編寫PHP擴展,以提高速度。 strpos()
和preg_match()
等對我的項目來說太慢了。在C中嵌入C以提高速度
但是,讓我感到震驚的是,strpos()
和preg_match()
一定是'最初'用C或其他一些原始語言寫成的。
所以,在這裏我的問題:是否有意義,我寫了一些擴展在C中,只是爲了提高計算速度?
我正在考慮從C編寫PHP擴展,以提高速度。 strpos()
和preg_match()
等對我的項目來說太慢了。在C中嵌入C以提高速度
但是,讓我感到震驚的是,strpos()
和preg_match()
一定是'最初'用C或其他一些原始語言寫成的。
所以,在這裏我的問題:是否有意義,我寫了一些擴展在C中,只是爲了提高計算速度?
它可能如果您能確定一個「自包含」的瓶頸,那麼它會很有用。 PHP仍然是一種腳本語言。有很多查找操作,一些內存操作可以在C中進行優化,可能是一個底層庫中的句柄/值/內存塊,您可以在特定情況下更高效地存儲/使用,以及上。
但是,確保您觸摸的代碼塊是值得的。即首先確定瓶頸。運行一個php分析器(例如xdebug),然後可能甚至是一個C分析器來查看php運行時所花費的時間。並且請記住,如果您編寫擴展程序,您的工作就是保持它的最新狀態,運行和功能(包括錯誤跟蹤/修復,質量保證......)。
未校對,但我認爲,你不能獲得顯著更好的速度,當你只是做定期的表達式或字符串掃描你自己的低級實現... PHP 是 C語言編寫,高度優化的已有...
檢查你的代碼,並改善流動...
如果這是不可能的,從Facebook看看「街舞」 ......
調用高度優化的php是非常有趣的,考慮到幾乎每個PHP版本都會改進最後一個的性能,並且同時很老PHP中的代碼在經過多年證明緩慢後仍然使用。如果你有興趣,請閱讀他們的計劃,以便在未來轉向像hhvm這樣的問題。 – griffin
它沒有意義的再寫執行strpos()
或C中的,因爲PHP已經在C
中實現了它們。
,而它的意義,使你的PHP代碼優化,使得它可以用它代替濫用這些功能他們
但還是如果你真的想加快速度,提供又一實現它可能會幫助,如果和只要速度足夠快。否則它只是浪費時間和勞動。
你可以看看PHP源代碼,並檢查這些函數的當前實現,看看你是否真的可以改進。
真的很酷,你有興趣在PHP中編寫一些擴展。
請通過以下鏈接瞭解更多關於Facebook如何啓動HipHop項目來提高速度。他們通過使用C語言而不是PHP編寫一些代碼來實現這一目標。
http://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/
但不是重寫PHP一些已經寫的EXT,嘗試寫新的一個,你會發現在編寫PHP一個新的擴展許多文章。
現有的擴展已經被優化,所以如果你想做一些特定的工作,並有一個好的算法來支持它,去寫你自己的擴展。
(-1)您對hiphop的評論是錯誤的。 C和C++是不一樣的(而C++不是C的超集!)。此外,hiphop將php轉換爲C++,可以進一步優化,然後編譯爲整個服務器。請糾正這一點,以便每個人都可以學習,並且我可以刪除我的downvote。謝謝。 – griffin
它真的是功能,或者是你的執行速度慢的功能 – 2012-08-23 06:51:53