Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook's HipHop - What's it for?

The news in the PHP world today is Facebook's HipHop, which:

HipHop for PHP isn't technically a compiler itself. Rather it is a source code transformer. HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it. HipHop executes the source code in a semantically equivalent manner and sacrifices some rarely used features — such as eval() — in exchange for improved performance. HipHop includes a code transformer, a reimplementation of PHP's runtime system, and a rewrite of many common PHP Extensions to take advantage of these performance optimizations.

My question is, what type of web applications is this actually useful for?

Seems like typical database-bound web apps may not be greatly served by this, but rarer CPU-bound apps would.

like image 279
philfreo Avatar asked Feb 02 '10 20:02

philfreo


3 Answers

Web applications that do a lot of processing and/or use a lot of memory. Apparently this HipHop will reduce CPU usage by around 50% and also reduce memory usage (I didn't see how much the memory usage would be reduced by mentioned anywhere). This means that you should be able to serve the same number of requests with fewer servers.

An added benefit may be that there will be some basic type checking to ensure that the code is consistent before it is compiled. This should help to locate the type of bugs that PHP currently tends to ignore as a result of its weak type system.

The downside appears to be that it might not support some of PHP's more dynamic features such as eval (though arguably that's a positive too).

like image 190
Dan Dyer Avatar answered Nov 06 '22 15:11

Dan Dyer


Well it "transforms" PHP into C++ to help performance of a largely scalable website.

So, HipHop is for when you have a website that you started at Harvard that you quickly grow into a billion dollar company and that people are making a movie about starring Justin Timberlake. When you have such a website and want to save CPU cycles, but don't want to rewrite your codebase, you use HipHop.

If you are just starting out, unless you are trapped on a desert island with only PHP programmers that refuse to learn a more scalable language, you don't use HipHop.

like image 41
bpapa Avatar answered Nov 06 '22 14:11

bpapa


Running machine code over interpreted code is faster. This is useful in one sense, but also reduces the amount of machines you require, as each processor has less work to do.

This is good for a company like Facebook, in that they can cut the amount of machines they need.
In terms of why it's useful for them, they probably run a lot of sorting and indexing, on the large amounts of data they have.

like image 30
Joseph Salisbury Avatar answered Nov 06 '22 14:11

Joseph Salisbury