Перейти к содержимому
  • 0
Belzebub

Помогите измерить EU/s

Вопрос

Привет, решил написать программку для удобного мониторинга генератора материи/молекулярного трансформатора и тд.

Начал мерить tps с помощью https://pastebin.com/62ivXgMb и avg eu/t с помощью require("component").average_counter.getAverage (Стационарный энергосчётчик из Nuclear Control 2)
Результаты в игре и на экране компа шо-то не сходятся :(

Подозреваю что я криво измеряю tps, паста с кодом который используется для измерения тпс выше.

Видик на котором видны куски кода, результаты измерения на экране компа и ручные замеры:

 

:smile25: 

Изменено пользователем Belzebub

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

4 часа назад, Belzebub сказал:

Подозреваю что я криво измеряю tps

Измерение TPS, конечно, кривоватое, но какое отношение оно имеет к измерению расхода энергии? Ошибка, скорее всего, содержится в формулах расчёта расхода. Для более точного ответа недостаточно имеющейся информации. Или...

 

4 часа назад, Belzebub сказал:

Видик на котором видны куски кода, результаты измерения на экране компа и ручные замеры

Если просишь помощи у программистов, не заставляй их смотреть видео. Программисты легче воспринимают код и прочий текст, нежели видео. Мало кто захочет тратить время на его просмотр.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
56 минут назад, eu_tomat сказал:

Если просишь помощи у программистов, не заставляй их смотреть видео. Программисты легче воспринимают код и прочий текст, нежели видео. Мало кто захочет тратить время на его просмотр.

Понял, не дурак :)
https://pastebin.com/0W160dsc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, eu_tomat сказал:

Измерение TPS, конечно, кривоватое, но какое отношение оно имеет к измерению расхода энергии?

 

В моей голове это выглядит так:
Если в тик генерируется 2048 eu и текущий тпс 19, то:

EuPerSecond = EuPerTick * TicksPerSecond = 2048 * 19 = 38912

Что бы узнать сколько времени требуется на создание одного миллибакета жидкой материи я делю стоимость генерации материи 10^6 / 6 + 4500 EU на текущий EuPerSecond
Итого должно-было получиться:

time = price / (EuPerTick * TicksPerSecond) = (10^6 / 6 + 4500) / (2048 * 19) = 4.39881442

т.к. стационарный счётчик энергии выдаёт AvgEuPerTick, то и TicksPerSecond в формулах я заменяю на AvgTicksPerSecond :unsure:
впрочем и с актуальным количеством тиков прога насчитывает левое число :(

Изменено пользователем Belzebub

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В майнкрафтах же не может быть более 20-ти тпс?
Если так то мерилка выдаёт совсем левую инфу :wacko:

1.thumb.jpg.1dd006b40b72da7caf41606444935b1f.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мысли об измерителях TPS:

 

    • Измеритель TPS, даже хорошо написанный, в среднем будет выдавать значение чуть выше 20TPS на слабо нагруженном сервере, не смотря на  плановое значение в 20TPS. Моментальное значение за счёт микролагов может отличаться сильнее, уходя как в плюс, так и в минус.
    • На перегруженных серверах не только снижается средние значение TPS, но и возрастает разброс моментальных значений. Поэтому приходится применять более сильное усреднение.
    • Как написать правильный TPS-метр, это тема для отдельного гайда. Скажу больше: измеритель TPS является настолько тонким инструментом, что всю программу желательно строить вокруг него. Интеграция же в существующую программу требует дополнительной модификации самого измерителя.
    • Измерение TPS для пересчёта счётчика энергии вряд ли оправдано, если частоту тиков не планируется изменять какими-либо модами. Обычно достаточно исходить из предположения, что TPS=20. Это позволит легко сопоставлять значения, полученные компьютером, со значениями в интерфейсах механизмов.

 

Комментарии к этой реализации счётчика и формулировке вопроса:

 

    • Для оценки правильности данных, выводимых компьютером, следует сравнивать значение, выдаваемое им, со значением в интерфейсе измерителя средней мощности, с которого снимаются показания, а не с молекулярного преобразователя. Уменьшение звеньев в логической цепи снижает шанс ошибиться в конечном выводе.
    • Усреднение реализовано некорректно. Первые 9 измерений выдадут сильно заниженный результат за счёт нулей в массиве.
    • Для подобных измерений я рекомендую вычислять не среднее арифметическое, а среднее экспоненциальное. Такое решение позволит уменьшить как требуемый объём памяти, так и вычислительную нагрузку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...