I am implementing a PHP-based web site that includes a simple recommender system. The key numerical calculation is a matrix multiplication. I am worried that doing this in PHP might be painfully slow. Does anyone else have experience doing numerical computations in PHP? I looked at writing my own PHP extension ( http://www.tuxradar.com/practicalphp/20/0/0 ) to implement matrix computations in C, ... but then it struck me someone else must have already encountered and solved this problem.<p>Any recommendations?
From my experience, numerical algorithms at all complicated in PHP tend to lead to major suckage. We use Thrift (<a href="http://incubator.apache.org/thrift/" rel="nofollow">http://incubator.apache.org/thrift/</a>) to send the task to a daemon written in something more reasonable, most often either Python or C depending on required intensity. Works beautifully, few problems. Also, this lets you run the task asynchronously, so you can still return the page in N ms and then load the results on a lag: responsivity means a huge amount to users. Nothing's worse than the script dying from memory limits or timeouts and having the user get nothing (and PHP doesn't do threading).
If it turns out to really be slow and you want to/have to stick with PHP, you could speed it up with the Strassen algorithm: <a href="http://en.wikipedia.org/wiki/Strassen_algorithm" rel="nofollow">http://en.wikipedia.org/wiki/Strassen_algorithm</a>