When a new mood is loaded, we print some information about the score
table, like the number of admissible files, the average last_played
and num_played values, and the empiric standard deviation of these
quantities. However, since last_played is measured in seconds after
the epoch, the reported numbers are rather large.
This commit changes log_statistics() of mood.c to report the mean
value and the standard deviation in number of days.
Since loading a new mood happens not very frequently, let's increase
the severity of these log messages from INFO to NOTICE. If the new
mood has no admissible files we now log the message as a warning
rather than with severity NOTICE.
#include "mm.h"
#include "sideband.h"
#include "mood.h"
#include "mm.h"
#include "sideband.h"
#include "mood.h"
/**
* Contains statistical data of the currently admissible audio files.
/**
* Contains statistical data of the currently admissible audio files.
static void log_statistics(void)
{
unsigned n = statistics.num;
static void log_statistics(void)
{
unsigned n = statistics.num;
+ int mean_days, sigma_days;
+ /*
+ * We can not use the "now" pointer from sched.c here because we are
+ * called before schedule(), which initializes "now".
+ */
+ struct timeval rnow;
+ assert(current_mood);
+ PARA_NOTICE_LOG("loaded mood %s\n", current_mood->name?
+ current_mood->name : "(dummy)");
- PARA_NOTICE_LOG("no admissible files\n");
+ PARA_WARNING_LOG("no admissible files\n");
- PARA_INFO_LOG("last_played mean: %lli, last_played sigma: %llu\n",
- (long long int)(statistics.last_played_sum / n),
- (long long unsigned)int_sqrt(statistics.last_played_qd / n));
- PARA_INFO_LOG("num_played mean: %lli, num_played sigma: %llu\n",
- (long long int)statistics.num_played_sum / n,
+ PARA_NOTICE_LOG("%u admissible files\n", statistics.num);
+ clock_get_realtime(&rnow);
+ mean_days = (rnow.tv_sec - statistics.last_played_sum / n) / 3600 / 24;
+ sigma_days = int_sqrt(statistics.last_played_qd / n) / 3600 / 24;
+ PARA_NOTICE_LOG("last_played mean/sigma: %d/%d days\n", mean_days, sigma_days);
+ PARA_NOTICE_LOG("num_played mean/sigma: %llu/%llu\n",
+ (long long unsigned)statistics.num_played_sum / n,
(long long unsigned)int_sqrt(statistics.num_played_qd / n));
}
(long long unsigned)int_sqrt(statistics.num_played_qd / n));
}
ret = audio_file_loop(&aa, add_if_admissible);
if (ret < 0)
return ret;
ret = audio_file_loop(&aa, add_if_admissible);
if (ret < 0)
return ret;
- log_statistics();
- PARA_INFO_LOG("%d admissible files\n", statistics.num);
for (i = 0; i < statistics.num; i++) {
struct admissible_file_info *a = aa.array + i;
ret = add_to_score_table(a->aft_row, a->score);
if (ret < 0)
goto out;
}
for (i = 0; i < statistics.num; i++) {
struct admissible_file_info *a = aa.array + i;
ret = add_to_score_table(a->aft_row, a->score);
if (ret < 0)
goto out;
}
- PARA_NOTICE_LOG("loaded mood %s\n", mood_name? mood_name : "(dummy)");
ret = statistics.num;
out:
free(aa.array);
ret = statistics.num;
out:
free(aa.array);