У меня есть метод в веб-службе, которую я пишу, которая составляет список категорий, экземпляров и счетчиков производительности в этой системе. Он создает документ XML и возвращает его. При первом вызове метода после публикации на сервере для получения результата требуется около 17 секунд. Каждый раз, когда он вызывается после этого, это занимает 38 секунд. Если я переиздаю, первый раз после этого займет 17 секунд, а затем я вернусь через 38 секунд за звонок.
[WebMethod(Description="Returns the CounterList in XML Format")]
public XmlDocument GetCounters()
{
XmlDocument CounterList = new XmlDocument();
XmlElement root = CounterList.CreateElement("CounterList");
PerformanceCounterCategory[] pcc = PerformanceCounterCategory.GetCategories();
foreach (PerformanceCounterCategory cat in pcc)
{
XmlElement Category = CounterList.CreateElement("Category");
XmlAttribute CatName = CounterList.CreateAttribute("Name");
CatName.Value = cat.CategoryName;
Category.Attributes.Append(CatName);
String[] instances = cat.GetInstanceNames();
PerformanceCounter[] pc;
if (instances.Length > 0)
{
pc = cat.GetCounters(instances[0]);
XmlElement Instances = CounterList.CreateElement("Instances");
foreach (String instance in instances)
{
XmlElement Instance = CounterList.CreateElement("Instance");
Instance.AppendChild(CounterList.CreateTextNode(instance));
Instances.AppendChild(Instance);
}
Category.AppendChild(Instances);
}
else
pc = cat.GetCounters();
XmlElement Counters = CounterList.CreateElement("Counters");
foreach (PerformanceCounter counter in pc)
{
XmlElement Counter = CounterList.CreateElement("Counter");
Counter.AppendChild(CounterList.CreateTextNode(counter.CounterName));
Counters.AppendChild(Counter);
}
Category.AppendChild(Counters);
root.AppendChild(Category);
}
CounterList.AppendChild(root);
return CounterList;
}