Home  >  Article  >  Backend Development  >  print vs echo, which one is faster?

print vs echo, which one is faster?

藏色散人
藏色散人Original
2019-01-28 11:13:363234browse

Like most of us, I'm tired of reading blog posts about meaningless micro-optimizations like replacing print with echo, $i with $i, or double quotes with single quotes. Why? Because 99.999999% of the time, it doesn't matter. You'd better install a PHP accelerator like APC or add these missing indexes in the database columns or try to avoid 1000 database requests on the home page.

print vs echo, which one is faster?

Suppose you really want to know the answer to this question. Instead of trying to write a script and execute it a million times to find the fastest speed, I would like to show you some interesting tools that you may find very useful sometimes because they allow you to better understand what you are writing PHP code.

Enter VLD, the "Vulcan Logic Disassembler". VLD is written by Derrick Rethans, and as you can see on the VLD homepage, it "hooks into the Zend engine and dumps all opcodes (execution units) of the script".

Installing VLD is very simple. Download the latest version and install it like any other PHP extension:

$ phpize
$ ./configure
$ sudo make install

Enable extension in php. ini file:

extension=vld.so

It's time to look under the hood. Create two simple files, one using echo and the other using print:

// print.php

Use -d vld to execute these scripts from the command line. The activate=1 parameter activates the VLD output. Let's look at the opcodes generated by these scripts:

$ php -d vld.active=1 print.php

-

number of ops:  4
compiled vars:  none
line     #  op                           fetch          ext  return  operands
-------------------------------------------------------------------------------
   1     0  PRINT                                            ~0      'foo'
         1  FREE                                                     ~0
   2     2  RETURN                                                   1
         3* ZEND_HANDLE_EXCEPTION

-

$ php -d vld.active=1 echo.php

-

number of ops:  3
compiled vars:  none
line     #  op                           fetch          ext  return  operands
-------------------------------------------------------------------------------
   1     0  ECHO                                                     'foo'
   2     1  RETURN                                                   1
         2* ZEND_HANDLE_EXCEPTION

Notice the difference? Yes, print also uses an opcode because it actually returns something. We can conclude that echo is faster than print. But an opcode costs nothing, even if a script has hundreds of calls to print.

Because print always returns 1, you can do the following interesting things, which are not possible in echo:

[php]

Want to know what to do when running a script with a lot of content Number of codes? Try this:

$ php -d vld.active=1 print.php 2> output
$ grep "number of ops" output | cut -f 5 -d ' ' | (tr '\n' +; echo 0) | bc

I tried it with a new WordPress installation. The script pauses before ending with a "bus error" on my laptop, but the number of opcodes has exceeded 2.3 million.

The above is the detailed content of print vs echo, which one is faster?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:What is stdClass in PHPNext article:What is stdClass in PHP