HHVM vs PHP


Status
Not open for further replies.

Mylo Sepz

Apprentice 2.0
Buat admin saya gak tau mau taruh dimana postingan ini :) mohon dipindahkan ketempat yang sesuai yah om.

Apa itu HHVM?
HHVM singkatan dari HipHop Virtual Machine. Secara sederhananya, HHVM adalah mesin yang bertugas untuk menjalankan sintak PHP.

Ketika kita menginstall PHP di Komputer, secara default akan menggunakan mesin interpreter bawaan dari PHP untuk menjalankan program-program berbasis PHP. Nah disamping itu, kita juga bisa menggunakan mesin alternatif lain seperti HHVM yang saya maksud.

HHVM dikembangkan oleh Facebook, dengan kode proyek sumber host di GitHub dan berlisensi di bawah Lisensi PHP dan Zend Lisensi. HHVM dibuat sebagai penerus dari Hip Hop untuk PHP (HPHPc) mesin eksekusi PHP, yang merupakan PHP ke C++ transpiler yang juga telah diciptakan oleh Facebook.

Bersama-sama dengan HHVM, Facebook juga merilis Hack, yang merupakan bahasa pemrograman yang dirancang khusus untuk HHVM dan dapat dilihat sebagai versi baru dari bahasa PHP.

HHVM berjalan lebih dari PHP yang ada di dunia. Pengembang dan host yang mengadopsi HHVM. Tim HHVM, bersama dengan banyaknya anggota Komunitas, telah membuatnya menjadi ternyatakan, tujuan prioritas tinggi untuk menjalankan semua kode PHP yang ada di dunia ini.

HHVM mengkompilasi Hack dan PHP menjadi kode bit menengah. Kode bit ini kemudian diterjemahkan ke dalam kode mesin X64 dinamis pada saat runtime oleh JIT Compiler. Proses kompilasi ini memungkinkan untuk segala macam optimasi yang tidak dapat dibuat dalam biner statis kompilasi, sehingga memungkinkan kinerja yang lebih tinggi dari program Hack dan PHP Anda. Daripada langsung menafsirkan atau mengkompilasi kode PHP langsung ke C++.

HHVM membawa banyak manfaat dibandingkan dengan HPHPc, dan salah satunya adalah dukungan hampir lengkap untuk seluruh bahasa PHP, termasuk dukungan HHVM untuk konstruksi create_function() dan eval().
Sebagai mesin virtual proses yang menyediakan lingkungan eksekusi, HHVM memiliki kemampuan untuk menggunakan informasi jenis secara langsung untuk menghasilkan kode native yang lebih efisien, yang mengarah ke yang lebih tinggi melalui web server dan latency rendah.

Lalu kenapa harus pindah? padahal sama-sama PHP toh
Disini biar gambar yang menjelaskan

Saya membuat 2 domain dengan spesifikasi server yang sama dan isi yang sama (memang karena berada di satu server :p)

kali ini saya akan membandingkan http://mseptian.com/ dengan http://kotaksoal.com/

http://mseptian.com/ menggunakan PHP versi 5.6.99-hhvm Sedangkan http://kotaksoal.com/ menggunakan PHP versi 5.5.9-1ubuntu4.14

dengan menjalankan file PHP sederhana dari http://www.php-benchmark-script.com
PHP:
<?php
/*
##########################################################################
#                      PHP Benchmark Performance Script                  #
#                         © 2010 Code24 BV                               #
#                                                                        #
#  Author      : Alessandro Torrisi                                      #
#  Company     : Code24 BV, The Netherlands                              #
#  Date        : July 31, 2010                                           #
#  version     : 1.0                                                     #
#  License     : Creative Commons CC-BY license                          #
#  Website     : http://www.php-benchmark-script.com                     #  
#                                                                        #
##########################################################################
*/

    function test_Math($count = 140000) {
        $time_start = microtime(true);
        $mathFunctions = array("abs", "acos", "asin", "atan", "bindec", "floor", "exp", "sin", "tan", "pi", "is_finite", "is_nan", "sqrt");
        foreach ($mathFunctions as $key => $function) {
            if (!function_exists($function)) unset($mathFunctions[$key]);
        }
        for ($i=0; $i < $count; $i++) {
            foreach ($mathFunctions as $function) {
                $r = call_user_func_array($function, array($i));
            }
        }
        return number_format(microtime(true) - $time_start, 3);
    }
  
  
    function test_StringManipulation($count = 130000) {
        $time_start = microtime(true);
        $stringFunctions = array("addslashes", "chunk_split", "metaphone", "strip_tags", "md5", "sha1", "strtoupper", "strtolower", "strrev", "strlen", "soundex", "ord");
        foreach ($stringFunctions as $key => $function) {
            if (!function_exists($function)) unset($stringFunctions[$key]);
        }
        $string = "the quick brown fox jumps over the lazy dog";
        for ($i=0; $i < $count; $i++) {
            foreach ($stringFunctions as $function) {
                $r = call_user_func_array($function, array($string));
            }
        }
        return number_format(microtime(true) - $time_start, 3);
    }


    function test_Loops($count = 19000000) {
        $time_start = microtime(true);
        for($i = 0; $i < $count; ++$i);
        $i = 0; while($i < $count) ++$i;
        return number_format(microtime(true) - $time_start, 3);
    }

  
    function test_IfElse($count = 9000000) {
        $time_start = microtime(true);
        for ($i=0; $i < $count; $i++) {
            if ($i == -1) {
            } elseif ($i == -2) {
            } else if ($i == -3) {
            }
        }
        return number_format(microtime(true) - $time_start, 3);
    }  
  
  
    $total = 0;
    $functions = get_defined_functions();
    $line = str_pad("-",38,"-");
    echo "<pre>$line\n|".str_pad("PHP BENCHMARK SCRIPT",36," ",STR_PAD_BOTH)."|\n$line\nStart : ".date("Y-m-d H:i:s")."\nServer : {$_SERVER['SERVER_NAME']}\nPHP version : ".PHP_VERSION."\nPlatform : ".PHP_OS. "\n$line\n";
    foreach ($functions['user'] as $user) {
        if (preg_match('/^test_/', $user)) {
            $total += $result = $user();
            echo str_pad($user, 25) . " : " . $result ." sec.\n";
        }
    }
    echo str_pad("-", 38, "-") . "\n" . str_pad("Total time:", 25) . " : " . $total ." sec.</pre>";
  
?>

Dapat dihasilkan dengan hasil seperti berikut
a.png b.png

Bagaimana? itu baru execute php sederhana. bagaimana kalo sudah banyak? :D

Note: bagi yang bilang "ah itu hanya sebuah gambar, bisa dimodifikasi" silahkan cek di http://mseptian.com/benchmark.php dan di http://kotaksoal.com/benchmark.php

bagi yang bilang "ah itu hanya PHP yang sama, gak ada bedanya" silahkan cek di http://mseptian.com/info.php dan di http://kotaksoal.com/info.php

Like jika bermanfaat. kalo gak bermanfaat tolong jangan di like. Takut terjadi perang diantara kita :D
 

Nina Prasetyo

Expert 2.0
Buat admin saya gak tau mau taruh dimana postingan ini :) mohon dipindahkan ketempat yang sesuai yah om.

Apa itu HHVM?
HHVM singkatan dari HipHop Virtual Machine. Secara sederhananya, HHVM adalah mesin yang bertugas untuk menjalankan sintak PHP.

Ketika kita menginstall PHP di Komputer, secara default akan menggunakan mesin interpreter bawaan dari PHP untuk menjalankan program-program berbasis PHP. Nah disamping itu, kita juga bisa menggunakan mesin alternatif lain seperti HHVM yang saya maksud.

HHVM dikembangkan oleh Facebook, dengan kode proyek sumber host di GitHub dan berlisensi di bawah Lisensi PHP dan Zend Lisensi. HHVM dibuat sebagai penerus dari Hip Hop untuk PHP (HPHPc) mesin eksekusi PHP, yang merupakan PHP ke C++ transpiler yang juga telah diciptakan oleh Facebook.

Bersama-sama dengan HHVM, Facebook juga merilis Hack, yang merupakan bahasa pemrograman yang dirancang khusus untuk HHVM dan dapat dilihat sebagai versi baru dari bahasa PHP.

HHVM berjalan lebih dari PHP yang ada di dunia. Pengembang dan host yang mengadopsi HHVM. Tim HHVM, bersama dengan banyaknya anggota Komunitas, telah membuatnya menjadi ternyatakan, tujuan prioritas tinggi untuk menjalankan semua kode PHP yang ada di dunia ini.

HHVM mengkompilasi Hack dan PHP menjadi kode bit menengah. Kode bit ini kemudian diterjemahkan ke dalam kode mesin X64 dinamis pada saat runtime oleh JIT Compiler. Proses kompilasi ini memungkinkan untuk segala macam optimasi yang tidak dapat dibuat dalam biner statis kompilasi, sehingga memungkinkan kinerja yang lebih tinggi dari program Hack dan PHP Anda. Daripada langsung menafsirkan atau mengkompilasi kode PHP langsung ke C++.

HHVM membawa banyak manfaat dibandingkan dengan HPHPc, dan salah satunya adalah dukungan hampir lengkap untuk seluruh bahasa PHP, termasuk dukungan HHVM untuk konstruksi create_function() dan eval().
Sebagai mesin virtual proses yang menyediakan lingkungan eksekusi, HHVM memiliki kemampuan untuk menggunakan informasi jenis secara langsung untuk menghasilkan kode native yang lebih efisien, yang mengarah ke yang lebih tinggi melalui web server dan latency rendah.

Lalu kenapa harus pindah? padahal sama-sama PHP toh
Disini biar gambar yang menjelaskan

Saya membuat 2 domain dengan spesifikasi server yang sama dan isi yang sama (memang karena berada di satu server :p)

kali ini saya akan membandingkan http://mseptian.com/ dengan http://kotaksoal.com/

http://mseptian.com/ menggunakan PHP versi 5.6.99-hhvm Sedangkan http://kotaksoal.com/ menggunakan PHP versi 5.5.9-1ubuntu4.14

dengan menjalankan file PHP sederhana dari http://www.php-benchmark-script.com
PHP:
<?php
/*
##########################################################################
#                      PHP Benchmark Performance Script                  #
#                         © 2010 Code24 BV                               #
#                                                                        #
#  Author      : Alessandro Torrisi                                      #
#  Company     : Code24 BV, The Netherlands                              #
#  Date        : July 31, 2010                                           #
#  version     : 1.0                                                     #
#  License     : Creative Commons CC-BY license                          #
#  Website     : http://www.php-benchmark-script.com                     #
#                                                                        #
##########################################################################
*/

    function test_Math($count = 140000) {
        $time_start = microtime(true);
        $mathFunctions = array("abs", "acos", "asin", "atan", "bindec", "floor", "exp", "sin", "tan", "pi", "is_finite", "is_nan", "sqrt");
        foreach ($mathFunctions as $key => $function) {
            if (!function_exists($function)) unset($mathFunctions[$key]);
        }
        for ($i=0; $i < $count; $i++) {
            foreach ($mathFunctions as $function) {
                $r = call_user_func_array($function, array($i));
            }
        }
        return number_format(microtime(true) - $time_start, 3);
    }


    function test_StringManipulation($count = 130000) {
        $time_start = microtime(true);
        $stringFunctions = array("addslashes", "chunk_split", "metaphone", "strip_tags", "md5", "sha1", "strtoupper", "strtolower", "strrev", "strlen", "soundex", "ord");
        foreach ($stringFunctions as $key => $function) {
            if (!function_exists($function)) unset($stringFunctions[$key]);
        }
        $string = "the quick brown fox jumps over the lazy dog";
        for ($i=0; $i < $count; $i++) {
            foreach ($stringFunctions as $function) {
                $r = call_user_func_array($function, array($string));
            }
        }
        return number_format(microtime(true) - $time_start, 3);
    }


    function test_Loops($count = 19000000) {
        $time_start = microtime(true);
        for($i = 0; $i < $count; ++$i);
        $i = 0; while($i < $count) ++$i;
        return number_format(microtime(true) - $time_start, 3);
    }


    function test_IfElse($count = 9000000) {
        $time_start = microtime(true);
        for ($i=0; $i < $count; $i++) {
            if ($i == -1) {
            } elseif ($i == -2) {
            } else if ($i == -3) {
            }
        }
        return number_format(microtime(true) - $time_start, 3);
    }


    $total = 0;
    $functions = get_defined_functions();
    $line = str_pad("-",38,"-");
    echo "<pre>$line\n|".str_pad("PHP BENCHMARK SCRIPT",36," ",STR_PAD_BOTH)."|\n$line\nStart : ".date("Y-m-d H:i:s")."\nServer : {$_SERVER['SERVER_NAME']}\nPHP version : ".PHP_VERSION."\nPlatform : ".PHP_OS. "\n$line\n";
    foreach ($functions['user'] as $user) {
        if (preg_match('/^test_/', $user)) {
            $total += $result = $user();
            echo str_pad($user, 25) . " : " . $result ." sec.\n";
        }
    }
    echo str_pad("-", 38, "-") . "\n" . str_pad("Total time:", 25) . " : " . $total ." sec.</pre>";

?>

Dapat dihasilkan dengan hasil seperti berikut
View attachment 2032 View attachment 2033

Bagaimana? itu baru execute php sederhana. bagaimana kalo sudah banyak? :D

Note: bagi yang bilang "ah itu hanya sebuah gambar, bisa dimodifikasi" silahkan cek di http://mseptian.com/benchmark.php dan di http://kotaksoal.com/benchmark.php

bagi yang bilang "ah itu hanya PHP yang sama, gak ada bedanya" silahkan cek di http://mseptian.com/info.php dan di http://kotaksoal.com/info.php

Like jika bermanfaat. kalo gak bermanfaat tolong jangan di like. Takut terjadi perang diantara kita :D

Patut di like nih !
Mungkin perlu dicoba versus PHP7 biar apple-to-apple ..

Kalo hhvm vs php5 .. baru apple-to-pear :)
 

FluidaWeb

Hosting Guru
setelah ada php 7, ketertarikan saya pada hhvm sedikit menurun :)
setidaknya jurang pemisahnya tidak terlalu jauh
 

Nina Prasetyo

Expert 2.0
setelah ada php 7, ketertarikan saya pada hhvm sedikit menurun :)
setidaknya jurang pemisahnya tidak terlalu jauh

At least, CPanel dan Virtualmin akan dukung PHP7 ketimbang HHVM

Tapi, saya ada plan juga nih jadinya, mo bikin HHVM shared hosting. Lagi riset ..
 

Mylo Sepz

Apprentice 2.0
UPDATE
Setelah dirubah dari php 5.5 ke php 7 ternyata php7 lebih enteng dari HHVM. entah karena HHVM masih di PHP5.6 atau tidak. kita masih tunggu biar sama-sama seimbang di php7 semuanya.

Skrinsut
a.pngb.png

Note: saya masih penasaran kenapa HHVM jadi 7sec tadinya 2 sec :D

om admin. tolong merge jadiin satu diatas yah om
 

mustafaramadhan

Hosting Guru
UPDATE
Setelah dirubah dari php 5.5 ke php 7 ternyata php7 lebih enteng dari HHVM. entah karena HHVM masih di PHP5.6 atau tidak. kita masih tunggu biar sama-sama seimbang di php7 semuanya.

Skrinsut
View attachment 2034View attachment 2035

Note: saya masih penasaran kenapa HHVM jadi 7sec tadinya 2 sec :D

om admin. tolong merge jadiin satu diatas yah om
Kalau mau adil ya HHVM ber-php56 dibandingkan php70.

Kalau HHVM ber-php70 dibandingkan php70 kan sama saja dengan HHVM vs non-HHVM.
 

Nina Prasetyo

Expert 2.0
UPDATE
Setelah dirubah dari php 5.5 ke php 7 ternyata php7 lebih enteng dari HHVM. entah karena HHVM masih di PHP5.6 atau tidak. kita masih tunggu biar sama-sama seimbang di php7 semuanya.

Skrinsut
View attachment 2034View attachment 2035

Note: saya masih penasaran kenapa HHVM jadi 7sec tadinya 2 sec :D

om admin. tolong merge jadiin satu diatas yah om

Wah, koq bisa gitu ... sepengetahuan saya dari beberapa blog benchmark independent, HHVM masih lebih cepat dari php7 lho ..
 
Status
Not open for further replies.

Top