我的大多數應用程序是用PHP編寫的((前端和後端) 有是太慢工作的一部分,我需要重寫它,可能不是PHP 什麼都會給我以下內容:。
1.大多數的速度
2.發展最快
3.易於維護。需要編寫一個算法非常快,我應該這樣做的PHP擴展或其他方式嗎?
我在我的腦海重寫這段代碼在CPP作爲PHP擴展,但可我鎖定在這個解決方案和失誤一些更簡單/更好的解決方案?
該算法是PorterStemmerAlgorithm上的幾個每次運行MB數據。
我的大多數應用程序是用PHP編寫的((前端和後端) 有是太慢工作的一部分,我需要重寫它,可能不是PHP 什麼都會給我以下內容:。
1.大多數的速度
2.發展最快
3.易於維護。需要編寫一個算法非常快,我應該這樣做的PHP擴展或其他方式嗎?
我在我的腦海重寫這段代碼在CPP作爲PHP擴展,但可我鎖定在這個解決方案和失誤一些更簡單/更好的解決方案?
該算法是PorterStemmerAlgorithm上的幾個每次運行MB數據。
答案真的取決於它是什麼樣的過程。
如果它是一個長時間運行的過程(至少幾秒)那麼也許用C++編寫的外部程序會非常容易。它不會有PHP擴展的複雜性,它的穩定性不會影響PHP/apache。你可以在溝通管道,共享內存,或諸如此類......
如果是短期運行的過程(以毫秒計),那麼你很可能需要寫一個PHP擴展。這將允許它以非常快的速度調用,幾乎不會造成每次通話的開銷。
另一種可能性是自定義服務器,它偵聽Unix域套接字,並在PHP請求信息時快速響應PHP。然後,你的每通話開銷基本上創建一個套接字(不壞)。服務器可以是任何語言(c,C++,python,erlang等),客戶端可以是使用socket _ *()函數的50行PHP類。
在作出此決定之前,需要對許多信息進行評估。除非進入真正緊密的循環或成千上萬的重複函數調用,否則PHP通常不會顯示減速。換句話說,HTTP請求和網絡延遲的開銷通常使PHP延遲微不足道的(除非上述適用)
通過承諾自定義的PHP擴展,你顯著增加知識,以保持它需要(甚至高於C++)的基礎。但必要時很好的選擇。
隨時更新您的問題與更多的細節,我相信堆棧溢出將很樂意提供幫助。
我不確定PorterStemmerAlgorithm是什麼。但是,如果您可以使您的進程並行運行並收集信息,則可以查看在JAVA中輕鬆實現的並行運行進程。不知道如何在PHP中調用它,但肯定可以維護。
你可以看看這個框架。看起來簡單的實現
https://computefarm.dev.java.net/
問候, 富蘭克林。
tnx-將調查 – 2009-02-23 07:53:29
建議
的PorterStemmerAlgorithm具有http://tartarus.org/~martin/PorterStemmer/c.txt
一個ç實現可它應該是一件容易的事來把這些C程序到您的數據源,並使其成爲一個獨立的可執行文件。然後,您可以簡單地使用其中一個proc函數從PHP調用它,例如proc_open()
除非您需要多次調用此程序,否則這種方法應該節省您構建和集成PHP擴展的工作量,更不用說辛勤工作(c)已經完成了。
如果你絕對需要用不同的語言重寫速度的原因,那麼我認爲gahooa的答案很好地覆蓋了選項。然而,在你做之前,你是否確實已經盡你所能提高性能,如果PHP實現?
你能描述一下你的算法和你從中得到什麼樣的表現嗎? – BobbyShaftoe 2009-02-23 04:52:09
Not.Enough.Information.At.All。 – 2009-02-23 05:03:00
同上沒有足夠的信息。我們甚至不知道「它」是什麼。 – cletus 2009-02-23 05:57:43