print vs echo, which one is faster?

藏色散人
Release: 2023-04-04 21:34:01
Original
3347 people have browsed it

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
Copy after login

Enable extension in php. ini file:

extension=vld.so
Copy after login

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

// print.php
Copy after login

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
Copy after login

-

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
Copy after login

-

$ php -d vld.active=1 echo.php
Copy after login

-

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
Copy after login

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]
Copy after login

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
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template