What's a good way to benchmark a network connection? I'm looking for something like the Windows Experience Index, but for my internet connection.
For example, one place I visit has what seems to be a terrible connection. Pages load slow, etc. but file downloads are insanely fast once they get started (bandwidth good, latency bad?).
Alternatively, while tethering through my phone, browsing the web is nice and brisk, but downloads are excruciatingly slow (bandwidth bad, latency good?).
What's a good way to evaluate these variables (bandwidth and latency?) and are there others (load?) I should consider?
If you're looking for a quick and dirty bandwidth/latency test then http://www.speedtest.net/ works. It will give you latency measurements and up/down bandwidth. Loss and Jitter are other variables to measure, but less commonly an issue.
Evaluating overall experience depends on application. Some uses are latency sensitive, others are bandwidth sensitive. FTP file transfer experience is mostly about bandwidth, and a VoIP call is all about latency. Personally I consider latency to be one of the most important factors. Lower latency is always better, and bandwidth only matters when you don't have enough.
Edit: From your comments it appears that your focus is web browsing behavior from the endpoint. In many cases your web browsing may be slowed even when your bandwidth/latency are fine (You could have a slow DNS response for instance). I don't know of a tool which could accurately test for all cases of "browsing is slow". I wouldn't trust such a tool even if it existed. There are too many caches involved that you'll never know about as an endpoint. Bandwidth/latency will be the culprit most often, and trying to create a tool which would test for everything else would be difficult. If I were trying to generate information like that I'd probably use a sniffer.
http://speedtest.net/ and http://pingtest.net are good starting places -- they'll give you a rough idea of bandwidth and latency/jitter.
Make sure you run your tests to more than one endpoint, and at different times of the day. This is especially important if you're on a shared connection (Cable).
When conducting tests make sure you are eliminating intermediate sources of problems (e.g. don't test over wireless - Ideally you should be plugged directly into your network interface device (modem or router) to test your ISP's connection, and if that's OK start looking at the other internal components as possible trouble spots).
In terms of evaluating your connection, your perceived bandwidth is a function of several factors: Your real bandwidth (how much can be pushed through the pipe), your end-to-end latency, and the percentage of packet loss are the big three. Your provider's oversubscription rate (how much more bandwidth they've promised than they really have available to deliver) is the other factor (which usually manifests itself as packet loss when their routers start dropping queued data that they can't get out the door quickly enough).
Ultimately the evaluation is based on "Does the connection suck too much to be usable", and that's a subjective/qualitative call based on what you're using it for.