Benchmarks

You are currently browsing the archive for the Benchmarks category.

I particularly like the regexp benchmark in google’s new revision of V8.

I will do more comparisons with different benchmarks but here is a quick update on the state of alpha browsers regarding the V8 benchmark on windows.

Test system: Mac Pro Early 2006: 2x Dual Core Xeon 5150 (2.66GHz), 3GB RAM, Vista x64 SP1.

Benchies!

IE8 RC1 64-bit on Google's V8 benchmark Revision 3

IE8 RC1 64-bit on Google's V8 benchmark Revision 3

Firefox 3.2a1 32bit 200907033501 on V8 benchmark revision 3

Firefox 3.2a1 32bit 200907033501 on V8 benchmark revision 3

Webkit rev. 40730 on V8 Benchmark revision 3

Webkit rev. 40730 on V8 Benchmark revision 3

Chromium 32bit rev9376 on Google's V8 Benchmark Revision 3

Chromium 32bit rev9376 on Google's V8 Benchmark Revision 3

  • Share/Bookmark

Tags: , , , , , ,

TechReport did a review of 4 intel X25-E in a RAID0 setup (A look at four X25-E Extreme SSDs in RAID – The Tech Report).

image courtesy of TechReport :)

image courtesy of TechReport :)

However, there were some problems with the testing method.

  • RAID-0 of physical drives is dumb.  Nobody should use it, for any reason, unless the drives underneath are mirrored.  Benchmarking this is a bit like benchmarking how fast you can piss into the wind… not only do you get pee on yourself, nobody else cares.
  • Windows XP’s caching algorithms make bad assumptions about disk configuration. It assumes you are using platter-based disk drives. Try the whole suite again with vista x64 sp1 (and with/without “advanced performance” mode enabled in the device manager, you should see completely different numbers.
  • Also, this is a PCI-E x8 card, but it seems like it is in a PCI-E slot. PCI-E x1 = ~640MB/sec minus a little for striping (200MB/sec) = ~450MB/sec peak, which seems to be what you are seeing. I have four of those drives in a server with two separate controllers on x8 slots in RAID0 of a pair of 2-drive RAID1s and see ~500MB/sec reads with OS caching disabled: this is what I would expect with two effective drives worth, not four.

Note that, when I went to register for an account to comment there, it gave me an error, so I decided to blog about it instead.

  • Share/Bookmark

When you’re using various tools to get information on what exactly is making your website slow, the most common method to display detailed information is a waterfall graph.

In this article, I will show you some tools that provide waterfall graphs and also give an explanation of how to read a simple waterfall graph.

Read the rest of this entry »

  • Share/Bookmark

Services and tools such as AOL WebPageTest will provide you with graphs and punchlists of things you need to fix.

Here is how you read them!

Load time is the time that it took to transfer ALL of the page, and for it to stop transferring.

First byte is “how long it took for the beginning of the page to be sent to the browser”

“Start render” is “When the user begins to see a page form.”

Document complete is when the document is usable.

Fully loaded includes anything that loads after Document Complete, such as AJAX calls.

“Requests” are the number of items that had to be sent individually to the browser.

“Bytes in” is the total size of items that had to be sent to the browser.

  Load Time First Byte Start Render Document Complete Fully Loaded Requests Bytes In
First View 4.752s 0.301s 2.558s 4.752s 4.752s 16 590 KB
Repeat View 0.674s 0.425s 0.238s 0.674s 0.920s 6 1 KB

So now that you know what these things mean, you ask, what should I be seeing that I need to improve?

Without a waterfall graph to give you more detail, this graph says that you need to decrease the number of requests and the total bytes in.

  • Share/Bookmark

Mac-Pro:MacPorts-1.6.0 mjc$ time (./configure &> /dev/null && make -j5 &> /dev/null)
real 0m12.798s
user 0m10.253s
sys 0m6.588s

  • Share/Bookmark

Tags: , , ,

Johannes S hacked the living daylights out of some import scripts and has an up-to-date php-src git mirror.

This is really awesome not only because I absolutely love Git, but because it makes it a LOT easier to get work done.

Example*:

mjc@325i:~/scratch$ time (curl -O http://snaps.php.net/php5.3-200812031930.tar.bz2 ; tar xjf php5.3-200812031930.tar.bz2 )
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10.1M 100 10.1M 0 0 551k 0 0:00:18 0:00:18 --:--:-- 570k
real 0m32.450s
user 0m4.844s
sys 0m0.820s

cvs:

mjc@325i:~/scratch$ time cvs -Q -d :pserver:cvsread@cvs.php.net:/repository checkout -r PHP_5_3 php5

real 0m56.865s
user 0m4.828s
sys 0m4.308s

git, nearly the same workflow (requiring no extra thinking other than to learn the syntax):

mjc@325i:~/scratch$ time (git clone src/mysqlnd/php-src php-src; cd php-src; git checkout -b php-5.3 origin/PHP_5_3)
Initialized empty Git repository in /home/mjc/scratch/php-src/.git/
0 blocks
Checking out files: 100% (10636/10636), done.
Branch php-5.3 set up to track remote branch refs/remotes/origin/PHP_5_3.
Switched to a new branch "php-5.3"

real 0m8.655s
user 0m1.616s
sys 0m1.992s

* this test performed on an Amazon EC2 small instance, bandwidth may vary, but it is significantly faster than my local connection and disk drive.

Additionally, even with an empty cache, and the fact that git clone is copying the ENTIRE history, git clone was only four times slower than a primed cache cp of the CVS checkout!

mjc@325i:~/scratch$ time cp -r php5 php5_some-other-work

real 0m1.802s
user 0m0.064s
sys 0m0.704s

Note, though, that if I were to use the standard git workflow, the real time savings start to show.

To test this, first lets see how big the project is, and double it:

mjc@325i:~/scratch/php-src$ git checkout origin/PHP_5_3
Note: moving to "origin/PHP_5_3" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b
HEAD is now at 0986ce9... fix possible invalid read
mjc@325i:~/scratch/php-src$ du -hc .cvsignore .gdbinit * | grep total
101M total
mjc@325i:~/scratch/php-src$ mkdir foo; cp -r .cvsignore .gdbinit * foo; du -hc .cvsignore .gdbinit * | grep total
cp: cannot copy a directory, `foo', into itself, `foo/foo'
cp: cannot copy a directory, `foo', into itself, `foo/foo'
cp: cannot copy a directory, `foo', into itself, `foo/foo'
207M total

Now, lets commit those changes and then switch to php6

mjc@325i:~/scratch/php-src$ time (git add foo && git commit -qam 'double the size of the repo, this is a big diff' && git checkout master)
Previous HEAD position was de6576c... double the size of the repo, this is a big diff
Switched to branch "master"
real 0m9.907s
user 0m3.376s
sys 0m0.900s

twice the size, and barely 1 second slower, most of which is spent committing the changes.

Is this enough of a real-world, but marginally excessive example, or what?

Also – the whole revision history for php is in .git – and it clocks in at (as of this writing) 119MB (only 18MB more than the actual checked-out source) with 54,304 commits.

Feel free to let me know in the comments if I missed anything.

  • Share/Bookmark

Tags: , , , , , , , , , , , , , ,

Bad Behavior has blocked 247 access attempts in the last 7 days.

Blog performance enhanced by PHP Speedy Blog performance enhanced by PHP Speedy