Привет, ребята, я пишу программу мониторинга производительности, которая отслеживает разные вещи, одна из которых является доступной памятью. Я смог использовать этот же код, чтобы узнать min, max и average для других счетчиков производительности, но этот продолжает давать мне неправильный Average.Неверный средний после третьего ввода
Первое среднее значение верно, то я получаю действительно низкие числа. Итак, скажем, первые два раза я получил 1500 МБ и 1400 МБ бесплатно. Среднее будет 1450 МБ, а в третий раз - 1600 МБ, тогда мой вывод для Среднего будет чем-то в 700-800 МБ.
Если вы можете указать мне в правильном направлении, это было бы оценено! Спасибо :)
//Move to and get the latest value in the performance counter for Memory Available Bytes
m.CurrentMemoryAvailableBytes = perfMemoryBytes.NextValue();
//Increase the count that will be used to divide the sum to get average
iCount++;
m.TotalMemoryAvailableBytes += m.CurrentMemoryAvailableBytes;
//Check if the current value is greater then the max for memory available bytes
if (m.CurrentMemoryAvailableBytes > m.MaxMemoryAvailableBytes)
m.MaxMemoryAvailableBytes = m.CurrentMemoryAvailableBytes;
//Initialize Min so its not stuck at 0
if (iCount == 1)
{
m.MinMemoryAvailableBytes = m.CurrentMemoryAvailableBytes;
}
else
{
//Check if the current value is less then the min for memory available bytes
if (m.CurrentMemoryAvailableBytes < m.MinMemoryAvailableBytes)
m.MinMemoryAvailableBytes = m.CurrentMemoryAvailableBytes;
}
addListView("Memory Available Bytes", Convert.ToInt16(m.CurrentMemoryAvailableBytes/1048576),
Convert.ToInt16((m.TotalMemoryAvailableBytes/iCount)/1048576), Convert.ToInt16(m.MinMemoryAvailableBytes/1048576),
Convert.ToInt16(m.MaxMemoryAvailableBytes/1048576));
Вот выход пример:
Воскресенье, 24/10/2010 2:49:10 PM
Тип Последний Среднее Min Max
памяти 1319MB 1319MB 1319MB 1319MB
воскресенье, 24/10/2010 2:49:40 PM
Тип Последняя Средняя Min Max
памяти 1326MB 442MB 0MB 1326MB
Почему в среднем 1400 и 1500 составляет 14500, а не 1450? –
добавлен дополнительно 0 по ошибке –
В вашем выводе отображается Min to 0 ..., который предполагает, что вы собираете хотя бы * одно * значение 0, поэтому неудивительно, что среднее значение упало. Опять же, если бы вы могли предоставить короткую, но полную программу, это помогло бы ... Вы также можете посмотреть методы Math.Max и Math.Min, чтобы избежать ваших операторов if. –