Последние средние, без полной регистрации всех данных - PullRequest
1 голос
/ 31 августа 2011

Это в основном проблема с производительностью.Это должно помочь получить текущее среднее из прошлых значений N (30?).Здесь контекст будет контролировать среднее время выполнения для последних N запросов данных на сервере.Хотя очевидным решением является регистрация всех прошлых N запросов, в которых все N запросов читаются и табулируются.Создание снижения производительности относительно рассматриваемого запроса данных.

Поскольку это в основном используется как средство измерения, а не как идеальная оценка, вопрос?Чтобы решить эту проблему наиболее эффективным способом.

Хотя решение может быть независимым от языка, я буду реализовывать в php:)

1 Ответ

1 голос
/ 31 августа 2011

Вместо сохранения последних N значений, организуйте свои значения в «сегменты» с заранее определенным размером сегмента, и для каждого сегмента сохраняйте только сумму всех значений в блоке.

Всякий раз, когда блокзаполнен, вы можете удалить самое старое ведро.(Лучший способ сделать это - кольцевой буфер)

Это позволяет вам сократить использование памяти с коэффициентом BUCKET_SIZE, но, очевидно, ваше среднее значение больше не по последним значениям N, а по последнимОт N до N + BUCKET_SIZE.

...