Функция для расчета того, как часто пользователи нажимают кнопку - PullRequest
0 голосов
/ 10 июля 2020

У меня есть функция. Ниже представлен прототип

void onNewButtonPress(int64_t nanoseconds_timestamp, int32_t user_id);

Немного дестрипции. Эта функция будет вызываться каждый раз, когда пользователь с user_id нажимает кнопку. Где параметр nanoseconds_timestamp - это время в наносекундах с начала эпохи

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

Как может Я рассчитываю ставку для каждого пользователя, храню и периодически обновляю? Можно ли сделать это с помощью функции, указанной выше, или мне придется создать другую функцию, которая будет периодически вызываться и будет вычислять ставки.

Как мне поступить с пользователями, которые начали нажимать кнопку ближе к концу Период. Нужно ли мне его усреднять?

Мне будет очень интересно услышать ваше мнение, основанное на вашем опыте.

1 Ответ

0 голосов
/ 10 июля 2020

Что-то вроде этого

Имейте глобальную переменную / переменную-член, которая хранит временные метки пользователей

std::map<int32_t, int64_t> lastClick;

Затем вычислите разницу и инвертируйте ее, чтобы получить скорость:

   void onNewButtonPress(int64_t nanoseconds_timestamp, int32_t user_id) {
      if (auto last = lastClick[user_id]) {
         auto rate = 1000000000 / (nanoseconds_timestamp - last);
         // Use the rate for something
         lastClick[user_id] = nanoseconds_timestamp;
      }
   }
...