Используйте класс StopWatch , чтобы получить точные значения времени.
Затем убедитесь, что вы не видите результатов неоптимизированного кода или JIT-компиляции, запустив тест синхронизации несколько раз.в коде релиза.Откажитесь от первых нескольких вызовов, чтобы устранить влияние JIT, а затем усредните все остальные.
VS.NET имеет возможность измерять производительность, и вы также можете использовать что-то вроде Fiddler чтобы узнать, сколько времени вы тратите "на проводе", и проверьте работоспособность, что задержки вызывают не ваш IIS / веб-сервер.
500 мс - это очень много времени, и его можнов 10 секунд мс с этими классами, так что не теряйте надежду (пока).
Обновление № 1:
Это отличная статья, в которой говорится омикро-бенчмаркинг и то, что нужно, чтобы не видеть таких вещей, как JIT:
http://blogs.msdn.com/b/vancem/archive/2009/02/06/measureit-update-tool-for-doing-microbenchmarks.aspx
Вы не совсем микро-бенчмаркинг, но здесь есть много лучших практик.
Обновление № 2:
Итак, я написал это консольное приложение (с помощью VS.NET 2010) ...
class Program
{
static void Main(string[] args)
{
var stopwatch = Stopwatch.StartNew();
var req = (HttpWebRequest)WebRequest.Create("http://localhost");
var response = req.GetResponse();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
}
}
... и Ctrl-F5 сделал это.Он был скомпилирован как отладочный, но я запустил его без отладки и получил 63ms .Я запускаю это на своем ноутбуке с Windows 7, и поэтому http://localhost возвращает домашнюю страницу IIS7 по умолчанию.Запуская его снова, я получаю аналогичные времена.
Запуск сборки Release дает время в диапазоне от 50 мс до 55 мс .
Это порядоквеличина я бы ожидал.Очевидно, что если ваш веб-сайт выполняет перекомпиляцию ASP.NET, или перезапускает пул приложений, или выполняет много серверной обработки, тогда ваши сроки будут другими.Если ваша разметка огромна, то она также будет отличаться, но ни один из классов, которые вы используете на стороне клиента, не должен быть шагами по ограничению скорости.Это будет надежда сети и / или обработка удаленного приложения.