NumPy/SciPy are scientific libraries for Python. R is a programming language for statistics computing. These tools, especially their open source packages, have gained popularity among programmers in scientific and statistic computing. A fundamental component in both NumPy/SciPy and R are the linear algebra functions, which rely on the standard BLAS and LAPACK routines. Intel® Math Kernel Library (Intel® MKL) provides a high performance implementation of BLAS and LAPACK that is optimized for Intel architectures.
We can hope that companies like Intel® will come along with a faster processor. (And this does tend to happen every year). Or we can improve our compilers to produce better machine code. Or we can analyze our own code and change it to run more optimally. For PHP, we do all three: We partner with the processor architects to improve the way they execute PHP; we look for changes we can make to the PHP code to run faster. But why not use the compiler to make the code faster? This is exactly the PHP change we recently made. Just let the compiler do it. But today, you need to do your part. The short answer is: use PGO when you compile PHP.
Today there is a profusion of computer languages targeted at different activities. It's important to choose the right one. A lot of programmers love Python because it's so fast to implement stuff, but it can be a pain to use to create a simple website. PHP is the most popular choice for implementing active content in a website. And it's rather obvious once you dig into it. As you create your web page in HTML, PHP code is very easy to stick into the HTML, such that when the page is rendered, the code is run.
When I first took this job of leading our scripting languages area, the Reality Moment struck when I had my first real look at the challenges of dynamic languages. For example, if you compare two strings in a program, we have some new instructions in the processor which can make these go very fast. But unfortunately, if you compare two strings in PHP, you first need to determine if the strings could be interpreted as numbers. If so, you need to treat them as numbers.
My current job is to lead our company's work on dynamic server languages, such as performance optimization and feature enabling. Besides PHP and HHVM, we want to improve Python. There is a huge amount of Python code in use out there, for example running OpenStack, Swift, DropBox and many others. What I didn't realize when I took the job was that much of this use is in a "dead" language.