We are discussing the plausibility of using HHVM inside this current infrastructure.
Our requirements are not very application server CPU intensive so it isn’t immediately apparent why this would be beneficial, but for investigations sake I wanted to go through the diligence.
Short History
Facebook, our Ominous big brother gave us a consolation prize for freely giving away just about all that most people have online that has any value: their personal information. On the topic of sheeple for another day. For today, we thank you Facebook. May your stock price soar to the stars.
I wanted to know what the differences between HHVM and HipHop Orig was if there was any. HPHPc was the original source to source compiler that converted to C++. There were a lot of inherent problems there and the team later decided to switch tracks and make a JIT virtual machine instead: more formally [HipHop Virtual Machine] known as HHVM. I personally like this approach much better due to the portability. At some point I’ll write about my romance with the idea of compiling in tools for AOP - Aspect Oriented Programming.
Interestingly enough VKontakt is coding their own translator right along side Facebook. KPHP. I guess old international habits die slowly.
Hack (programming language)
One of the best things I think this paradigm added is the enhanced Hack programming language. It gave PHP a static or dynamic type syntax. For those who complain about PHP’s loose typing, well here you go.
Benefits
What are the benefits to having HipHop in place?
Performance
That is about the only noteworthy thing I can see. Having Hack around is nice, but my guys are not going to change any time soon to use this. PHP is built to be phast and loose. Fast as in “can you have this ready today” sadly. I’d rather have things up and running fast and deal with standards at the QA/unit test layer. Working with the majority of the code being legacy negates the benefit also.
Our stack
Right now it’s so vanilla that it is disgusting.
Ubuntu in AWS
PHP 5.5.x
Mysql 5.6
Home strung framework
Laravel integrated
Memcached
Loaded Modules:
Core
date
ereg
libxml
openssl
pcre
zlib
bcmath
bz2
calendar
ctype
dba
dom
hash
fileinfo
filter
ftp
gettext
SPL
iconv
mbstring
pcntl
session
posix
Reflection
standard
shmop
SimpleXML
soap
sockets
Phar
exif
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
PDO
apcu
curl
gd
intl
json
mcrypt
memcached
mysql
mysqli
pdo_mysql
readline
redis
xmlrpc
mhash
apc
ZendOPcache
Next Steps
I will be doing some performance tests coming up IF we are able to get this into play.
My plan is to run load test against our normal branch and then