Google Speed Tips Get Picked Apart(mashable.com)
mashable.com
Google Speed Tips Get Picked Apart
http://mashable.com/2009/06/25/google-speed-tips/
8 comments
That example was particularly egregious. PHP uses copy-on-write so the temp variable held a pointer to the 500k of data they mentioned, not a copy.
Had they concatenated a small string to the end then PHP wouldn't copied the data and used the MB of memory they alluded to.
That whole document was half baked at best.
EDIT: I went to look at the document to reference the example and noticed that they changed their example. It used to be:
$description = $_POST['description'];
echo $description;
And now it's:
In the following example, imagine if a malicious user had inserted 512KB worth of characters into a textarea field. This would result in 1MB of memory being used!
$description = strip_tags($_POST['description']);
echo $description;
There's no reason to copy the variable above, you can simply do this operation inline and avoid the extra memory consumption:
echo strip_tags($_POST['description']);
So someone is definitely working on making the examples at least match the description.
Had they concatenated a small string to the end then PHP wouldn't copied the data and used the MB of memory they alluded to.
That whole document was half baked at best.
EDIT: I went to look at the document to reference the example and noticed that they changed their example. It used to be:
$description = $_POST['description'];
echo $description;
And now it's:
In the following example, imagine if a malicious user had inserted 512KB worth of characters into a textarea field. This would result in 1MB of memory being used!
$description = strip_tags($_POST['description']);
echo $description;
There's no reason to copy the variable above, you can simply do this operation inline and avoid the extra memory consumption:
echo strip_tags($_POST['description']);
So someone is definitely working on making the examples at least match the description.
I like the feature of assessing slow CSS. I'd never realized that constructs like the following would be "very inefficient":
#foo p span{
color: #fff;
}i read it, but still have to ask why ?
it's inefficient because the browser has to search/loop through the DOM looking for the exact pattern of the corresponding css rules, instead of a direct pointer like:
#my_foo_span{ color:#fff }.
#my_foo_span{ color:#fff }.
but they mean different things. one says, all spans which are descendants of divs which are descendants of some elements with id=foo. the other says one element with id=my_foo_span. duplicating rules in CSS to match overly specific IDs defeats one of its major advantages.
one thing I don't understand is, does that mean it's bad CSS style? Is doing the suggested optimization equivalent to writing really huge functions in c before compilers could inline?
why they're inefficient?
That really should not have made it past their editorial process.