SpeedTest 0.13

What Is It?

speedtest is a program I wrote to keep track of the effectiveness of my cable modem. There was a perception that speed was lacking for all users but very little hard data backing it up other than random tests done at various times of the day and night, usually using different speed testing sites each time (PC Pit Stop, DSLReports, etc). Since other users of my ISP have expressed interest I've decided to release this program under the GPL.

I had originally planned to load the speed data into Excel and make a nice little graph that I could send my ISP. I soon found out that the values varied so widely between tests that the data was zig-zagging all over the place and it was difficult to see what was going on. Since I was really more interested in overall speed, I wrote a little script to compute the average speeds instead (ala ping with min/avg/max).

What Do I Need?

You'll need to get NSPR (Netscape Portable Runtime) from ftp://ftp.mozilla.org/pub/nspr/releases/ . I used the Linux debug (DBG) version of v4.5 Beta. Any 4.x version should work just fine too. You need this whether you use my binary or build your own.

Because this was written using mostly NSPR calls it should work on any modern OS and almost certainly any *nix variant. I haven't tested this at all on a Win32 system but in theory it should work, though you'll need to either write your own Makefile or get gmake.exe and use that. Win32 users will also need to get a Bourne or Korn shell executable to run the shell scripts.

What Sites Does it Hit?

I current hit the following test sites 4 times a day:

http://www.cableone.net/performance/perftest/gfx/test.jpg
http://oarnet.toast.net/perftest/gfx/test.jpg
http://w3.mivlmd.cablespeed.com/~rcrit/test.jpg
http://www.cnet.com/html/internetservices/g/bm/image500.jpg

Here are some additional sites I found 11/06/2003:

http://myweb.cableone.net/performance/perftest/gfx/test.jpg
http://dante.polarcomm.com/gfx/test.jpg
http://www.toledorocket.com/perftest/gfx/test.jpg

There are some values hardcoded into speedtest.cpp. Some of these sites may no longer work so you will need to update it. It should be fairly obvious how to do so.

I haven't asked permission to use their sites in this way and I'd guess that if a lot of folks started hitting them frequently they would get very annoyed. It is really easy to determine the URL of the image that is being fetched from the non-Java test sites, so you can always figure your own out or test the same ones I do, either way.

How Does it Work?

Most speed test sites start the timer when the HTTP request is sent. My program starts the timer when I try to read the first bit of non-HTTP header data. This means that the times won't match up nicely and my program will very frequently return higher speeds than the web-based speed testers.

Where Can I Get it?

You can download it here speedtest-0.13.tar.gz

What Other Features are Planned?

I don't plan on working on this a whole lot more. I want to be able to get an average by the times that I run the test (8am, 12noon, 4pm and 8pm) to see the speed variances by time of day, but that is about it.

The shell scripts I wrote are ugly and Perl would work a lot more efficient but since I only deal with a weeks worth of data at a time bash works just great. If you want to rewrite them then by all means, go for it :-)

If you find any bugs please feel free to contact me at rcrit@greyoak.com.