2014-12-23 2 views
0

Каждые х секунд я захватить образец текущего времени и скоростикак рассчитать скорость с использованием образцов в C#

(time/number of objects created) = avg speed 

Я хочу написать класс, который понимает, как использовать образцы для расчета более средней скорости.

Сначала я подумал о скорости, двойной [], а затем усредняются с помощью Linq, а потому, что таймеры и потоки не детерминированный, я бы образцы, взятые у

  • 4 сек
  • 4,2 сек
  • 5,1 сек
  • 5 сек
  • 5 сек
  • 4,101 сек

и т.д ..

Я считал TimeSpan в качестве маркеров, но это только показывает, дельты между рядами. , так что я думал о том, может быть, Tuple или KeyValue, но не так просто рассчитать средние скорости, используя TimeSpan

У кого-нибудь есть идеи?

спасибо

+0

Все дело в том, чтобы проводить измерения времени, а не измерения объектов. Я хочу знать, как создаются объекты moany каждые 5 секунд. –

ответ

1

Используйте комбинацию Таймер/Секундомер для управления в реальном масштабе времени:

StopWatch watch; 
Timer tmr; 

List<double> samples; 

void initSampling() 
{ 

    samples = new List<double>(); 
    watch = new Stopwatch(); 
    tmr = new Timer(); 
    tmr.Tick += tmr_Tick; 
    tmr.Interval = 1000; 
    tmr.Start(); 
    watch.Start(); 
} 

void tmr_Tick(object sender, EventArgs e) 
{ 

    double items = ...;//store the number of items created 
    watch.Stop(); 

    double itemsPerSec = items/watch.ElapsedMilliseconds; 

    double timePerItem = 1.0/itemsPerSec; 

    samples.Add(timePerItem); 

    watch.Restart(); 
} 
+0

интересно, но я ищу обратное. Я хочу знать, сколько времени требуется, чтобы создать объект, а не сколько объектов в тике. –

+0

получить обратный itemsPerSec и у вас есть длина, чтобы построить один элемент ... изменил мой ответ, чтобы отразить это. – Gusman

0

В каждом магазине «тик» текущее время. Из числа элементов, прошедших с последнего тика, и отметки времени последнего тика, вы можете рассчитать элементы в секунду для последнего интервала. Сохраните это значение в списке вместе с длиной интервала (например, в миллисекундах).

Ваше среднее значение (точно) средневзвешенное значение этого списка. (веса миллисекунды)

+0

мои вещи работают в течение нескольких часов, под вашим текущим ответом я закончу свою память только в таблице статистики. –

+0

Извините, но звучит как недоразумение. Не могли бы вы привести пример: сколько объектов после 4.9s, сколько после следующих 5.1 и так далее? Я объясню, что я имею в виду, используя ваши данные. – DrKoch

0

Рассматривали ли вы с помощью PerformanceCounter http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter(v=vs.110).aspx? Вы просто подсчитываете количество созданных объектов, и счетчик производительности автоматически вычисляет среднюю «скорость» (я думаю, вы имеете в виду скорость создания объектов или объектов в секунду).

Смежные вопросы