Serendipity Disguised
I went out with some friends to a bar near k-town that seemed heavily frequented by Koreans. My friends were quickly intoxicated by a lemon drop, margarita, water, and a glass of red wine, but my shot of patron silver and riesling didn’t go far enough since I’d just eaten dinner.
It’s not often that I write about my personal life on this blog, but my actions and this experience are incomprehensible even to me. Perhaps my readers will find something in the telling of the story.
My friends and I had a good time chatting away mindlessly until it was around 11:30 and then decided to settle up and leave. I took the responsibility of the tab, since it was small and half mine anyway. Here is where the strangeness begins, for I decided to accumulate more debt onto my tab.
There was a group of three young Korean women eating dinner in the corner of the lounge not far away. As they seemed to be enjoying their meal, I figured it would be fantastic to surreptitiously pay for it, imagining their simultaneous perplexity and delight. If I’d done it as an introduction, there would be a good explanation and no reason to write this post. At the time however, the sheer idiosyncrasy of the situation was compensation enough.
To the ladies whose dinner I purchased, I hope you enjoyed the rest of your night. To myself, why do you delight in the paradox?
Thunderbird Freezes / Halts / Sticks When I Click On A Link
Do you know what I mean?

Often times when I go to click on a hot link in my email–usually to delete spam, Thunderbird just freezes for a while before actually opening the link. Anyone have a solution?
PHP Performance: Echo & Print
There’s always been big debate about the use of echo versus print in PHP, but it’s time to settle the score. There are three major issues that distinguish echo from print:
- Performance characteristics–which is faster?
- Return value semantics–print returns 1, while echo does not return anything
- Language constructs: neither echo nor print are functions
Echo is faster than print
I wrote some simple code to benchmark echo and print against each other across various iterations of a medium-sized string. You can find the PHP code at the end of the article. Here’s how it breaks down:
- echo: 463ms over {216 + … + 21} iterations
- print: 574ms over {216 + … + 21} iterations
The winner: echo is roughly 20% faster than print.
Print can be used as an expression
I’m not sure why you would ever want to do this, but if you did, you’d have to use print. For example, in PHP it’s perfectly legal to write something along the lines:
$a += 1 + print "hello";
This is equivalent of simply incrementing by two, but with an output side effect. Since this is probably a horrible idea, echo wins again here–print’s return value of 1 shouldn’t be abused.
Print is roughly echo
Did you know that print is not a function? Did you know that echo is not a function? That’s right–they’re both language constructs that mirror each other except for their return value semantics and that print will format its expression list with a \n line terminator if you pass it a list of more than 1 output argument. Therefore, print is slightly heavier than echo.
<?php
function _echo_sq($q){
for($i = 0; $i < $q; $i++)
echo 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce tempor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec elementum augue quis orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam volutpat, nunc vel interdum bibendum, tellus felis nonummy arcu, vitae pretium quam metus quis turpis. Suspendisse risus lacus, pretium bibendum, tincidunt eget, malesuada ac, risus. Etiam ullamcorper erat et magna. Duis blandit mattis est. Maecenas suscipit, quam nec pretium convallis, nisi magna scelerisque est, sit amet lobortis justo est sed ipsum. Aenean viverra, felis ut commodo lobortis, ligula enim laoreet pede, ac tristique nisl magna quis orci. Pellentesque feugiat leo at augue. Sed ornare nibh et mi. Pellentesque erat. Pellentesque nec felis at enim vulputate consectetuer. Donec ac nibh viverra libero fermentum faucibus.';
}
function _print_sq($q){
for($i = 0; $i < $q; $i++)
print 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce tempor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec elementum augue quis orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam volutpat, nunc vel interdum bibendum, tellus felis nonummy arcu, vitae pretium quam metus quis turpis. Suspendisse risus lacus, pretium bibendum, tincidunt eget, malesuada ac, risus. Etiam ullamcorper erat et magna. Duis blandit mattis est. Maecenas suscipit, quam nec pretium convallis, nisi magna scelerisque est, sit amet lobortis justo est sed ipsum. Aenean viverra, felis ut commodo lobortis, ligula enim laoreet pede, ac tristique nisl magna quis orci. Pellentesque feugiat leo at augue. Sed ornare nibh et mi. Pellentesque erat. Pellentesque nec felis at enim vulputate consectetuer. Donec ac nibh viverra libero fermentum faucibus.';
}
function _echo_dq($q){
for($i = 0; $i < $q; $i++)
echo “Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce tempor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec elementum augue quis orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam volutpat, nunc vel interdum bibendum, tellus felis nonummy arcu, vitae pretium quam metus quis turpis. Suspendisse risus lacus, pretium bibendum, tincidunt eget, malesuada ac, risus. Etiam ullamcorper erat et magna. Duis blandit mattis est. Maecenas suscipit, quam nec pretium convallis, nisi magna scelerisque est, sit amet lobortis justo est sed ipsum. Aenean viverra, felis ut commodo lobortis, ligula enim laoreet pede, ac tristique nisl magna quis orci. Pellentesque feugiat leo at augue. Sed ornare nibh et mi. Pellentesque erat. Pellentesque nec felis at enim vulputate consectetuer. Donec ac nibh viverra libero fermentum faucibus.”;
}
function _print_dq($q){
for($i = 0; $i < $q; $i++)
print “Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce tempor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec elementum augue quis orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam volutpat, nunc vel interdum bibendum, tellus felis nonummy arcu, vitae pretium quam metus quis turpis. Suspendisse risus lacus, pretium bibendum, tincidunt eget, malesuada ac, risus. Etiam ullamcorper erat et magna. Duis blandit mattis est. Maecenas suscipit, quam nec pretium convallis, nisi magna scelerisque est, sit amet lobortis justo est sed ipsum. Aenean viverra, felis ut commodo lobortis, ligula enim laoreet pede, ac tristique nisl magna quis orci. Pellentesque feugiat leo at augue. Sed ornare nibh et mi. Pellentesque erat. Pellentesque nec felis at enim vulputate consectetuer. Donec ac nibh viverra libero fermentum faucibus.”;
}
function _echo_var($in, $q){
for($i = 0; $i < $q; $i++)
echo $in;
}
function _print_var($in, $q){
for($i = 0; $i < $q; $i++)
print $in;
}
function _noop(){}
$in = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce tempor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec elementum augue quis orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam volutpat, nunc vel interdum bibendum, tellus felis nonummy arcu, vitae pretium quam metus quis turpis. Suspendisse risus lacus, pretium bibendum, tincidunt eget, malesuada ac, risus. Etiam ullamcorper erat et magna. Duis blandit mattis est. Maecenas suscipit, quam nec pretium convallis, nisi magna scelerisque est, sit amet lobortis justo est sed ipsum. Aenean viverra, felis ut commodo lobortis, ligula enim laoreet pede, ac tristique nisl magna quis orci. Pellentesque feugiat leo at augue. Sed ornare nibh et mi. Pellentesque erat. Pellentesque nec felis at enim vulputate consectetuer. Donec ac nibh viverra libero fermentum faucibus.';
$iter = 1;
for($q = 1; $q <= 16; $q++){
$iter = $iter * 2;
ob_start('_noop', 65536);
_echo_sq($iter);
_print_sq($iter);
_echo_dq($iter);
_print_dq($iter);
_echo_var($in, $iter);
_print_var($in, $iter);
ob_end_clean();
}
?>