Hello,
ternary operator is very nice syntactic sugar...
$foo = $cond ? $bar : $baz;
...but it may slows down scripts. When $bar is array or relative big
string, it is better to aviod sugar and use if:
if ($cond) $foo = $bar; else $foo = $baz;
and reference counting will be used.
I don't know how difficult it is to implement, but it can be very useful
speed optimization for PHP 5.3 to improve ternary operator to use
reference counting.
David Grudl
Hello,
ternary operator is very nice syntactic sugar...
$foo = $cond ? $bar : $baz;
...but it may slows down scripts. When $bar is array or relative big string,
it is better to aviod sugar and use if:if ($cond) $foo = $bar; else $foo = $baz;
and reference counting will be used.
I don't know how difficult it is to implement, but it can be very useful
speed optimization for PHP 5.3 to improve ternary operator to use reference
counting.
Do you have any numbers?
--
Alexey Zakhlestin
http://www.milkfarmsoft.com/
While it is slower due to the use of temp vars, in my experience
unless you have a few hundred operations involving ternary operator
you cannot even see the difference. Even then there are typically way
more important areas of code that need to be optimized. The only time
you can really tell its slower is in synthetic benchmarks.
Hello,
ternary operator is very nice syntactic sugar...
$foo = $cond ? $bar : $baz;
...but it may slows down scripts. When $bar is array or relative big
string, it is better to aviod sugar and use if:if ($cond) $foo = $bar; else $foo = $baz;
and reference counting will be used.
I don't know how difficult it is to implement, but it can be very
useful speed optimization for PHP 5.3 to improve ternary operator to
use reference counting.David Grudl
--
Ilia Alshanetsky
-------- Původní zpráva --------
Od: Ilia Alshanetsky ilia@prohost.org
While it is slower due to the use of temp vars, in my experience
unless you have a few hundred operations involving ternary operator
you cannot even see the difference. Even then there are typically way
more important areas of code that need to be optimized. The only time
you can really tell its slower is in synthetic benchmarks.
Few hundred operations involving ternary operator is nothing unusual ;)
-------- Původní zpráva --------
Od: Alexey Zakhlestin indeyets@gmail.com
Do you have any numbers?
$arr = range(0, 1000000); // very very huge array
$foo = true ? $arr : NULL; // 140,00 milisec
if (true) $foo = $arr; else $foo = NULL; // 0,02 milisec
DG.
Time:
$arr = range(0, 1000000); // 0.6367609500885
$foo == true ? $foo = $arr : NULL; // 3.0994415283203E-06
if (true) $foo = $arr; else $foo = NULL; // 2.8610229492188E-06
PHP 5.1.6
Olafur Waage
-------- Původní zpráva --------
Od: Ilia Alshanetsky ilia@prohost.orgWhile it is slower due to the use of temp vars, in my experience unless
you have a few hundred operations involving ternary operator you cannot even
see the difference. Even then there are typically way more important areas
of code that need to be optimized. The only time you can really tell its
slower is in synthetic benchmarks.Few hundred operations involving ternary operator is nothing unusual ;)
-------- Původní zpráva --------
Od: Alexey Zakhlestin indeyets@gmail.comDo you have any numbers?
$arr = range(0, 1000000); // very very huge array
$foo = true ? $arr : NULL; // 140,00 milisec
if (true) $foo = $arr; else $foo = NULL; // 0,02 milisec
DG.
Hi,
I wouldn't really worry about the ternary operator too much. These kinds of
micro optimizations really only appear to make a difference in contrived
benchmarks and usually aren't the norm in real life applications. However,
with that said, an optimization is an optimization. Optimizations like this
are fairly easy to detect in code. There is an optimizer extension in
development (pecl/optimizer) that includes an optimization which converts
ternary operations to if-else structures. I think an extention like this is
the better way to go for such optimizations. Plus, it includes many other
goodies to make PHP code slightly faster :). Though, the downside is that
pecl/optimizer still isnt completely stable.
-------- Původní zpráva --------
Od: Ilia Alshanetsky ilia@prohost.orgWhile it is slower due to the use of temp vars, in my experience unless
you have a few hundred operations involving ternary operator you cannot even
see the difference. Even then there are typically way more important areas
of code that need to be optimized. The only time you can really tell its
slower is in synthetic benchmarks.Few hundred operations involving ternary operator is nothing unusual ;)
-------- Původní zpráva --------
Od: Alexey Zakhlestin indeyets@gmail.comDo you have any numbers?
$arr = range(0, 1000000); // very very huge array
$foo = true ? $arr : NULL; // 140,00 milisec
if (true) $foo = $arr; else $foo = NULL; // 0,02 milisec
DG.