[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r32044 - gnunet/src/ats
From: |
gnunet |
Subject: |
[GNUnet-SVN] r32044 - gnunet/src/ats |
Date: |
Mon, 27 Jan 2014 16:07:27 +0100 |
Author: wachs
Date: 2014-01-27 16:07:27 +0100 (Mon, 27 Jan 2014)
New Revision: 32044
Modified:
gnunet/src/ats/perf_ats_solver.c
Log:
average calculation
Modified: gnunet/src/ats/perf_ats_solver.c
===================================================================
--- gnunet/src/ats/perf_ats_solver.c 2014-01-27 13:47:22 UTC (rev 32043)
+++ gnunet/src/ats/perf_ats_solver.c 2014-01-27 15:07:27 UTC (rev 32044)
@@ -110,8 +110,16 @@
* */
struct GNUNET_ATS_PluginEnvironment env;
+ /**
+ * Array for results for each iteration with length iterations
+ */
struct Iteration *iterations_results;
+ /**
+ * Array to store averaged result with length #peers
+ */
+ struct Result *averaged_result;
+
struct Result *current_result;
int current_p;
@@ -700,7 +708,7 @@
/**
* Evaluate results for a specific iteration
*
- * @oaram iteration the iteration to evaluate
+ * @param iteration the iteration to evaluate
*/
static void
@@ -753,7 +761,11 @@
data_fn_update = NULL;
if ((ph.create_plot) && (GNUNET_YES == ph.measure_updates))
{
- GNUNET_asprintf (&data_fn_update, "perf_%s_update_%u_%u_%u.data",
ph.ats_string, ph.N_peers_start, ph.N_peers_end, ph.N_address);
+ GNUNET_asprintf (&data_fn_update, "perf_%s_update_%u_%u_%u.data",
+ ph.ats_string,
+ ph.N_peers_start,
+ ph.N_peers_end,
+ ph.N_address);
f_update = GNUNET_DISK_file_open (data_fn_update,
GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE,
GNUNET_DISK_PERM_USER_EXEC | GNUNET_DISK_PERM_USER_READ |
GNUNET_DISK_PERM_USER_WRITE);
@@ -775,7 +787,6 @@
write_gnuplot_script (data_fn_update, GNUNET_NO);
}
-
next = ph.iterations_results[ph.current_iteration -1].result_head;
while (NULL != (cur = next))
{
@@ -786,8 +797,15 @@
str_d_mlp = NULL;
/* Print log */
+ ph.averaged_result[cur->peers - ph.N_peers_start].peers = cur->peers;
+ ph.averaged_result[cur->peers - ph.N_peers_start].addresses =
cur->addresses;
+ ph.averaged_result[cur->peers - ph.N_peers_start].update = cur->update;
+
if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_total.rel_value_us)
{
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
ph.averaged_result[cur->peers - ph.N_peers_start].d_total.rel_value_us)
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_total.rel_value_us
= 0;
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_total.rel_value_us
+= cur->d_total.rel_value_us;
fprintf (stderr,
"Total time to solve %s for %u peers %u addresses: %llu us\n",
(GNUNET_YES == cur->update) ? "updated" : "full",
@@ -800,6 +818,9 @@
GNUNET_asprintf(&str_d_total, "-1");
if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_setup.rel_value_us)
{
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
ph.averaged_result[cur->peers - ph.N_peers_start].d_setup.rel_value_us)
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_setup.rel_value_us
= 0;
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_setup.rel_value_us
+= cur->d_setup.rel_value_us;
fprintf (stderr, "Total time to setup %s %u peers %u addresses: %llu
us\n",
(GNUNET_YES == cur->update) ? "updated" : "full",
cur->peers, cur->addresses, (unsigned long long
)cur->d_setup.rel_value_us);
@@ -809,6 +830,9 @@
GNUNET_asprintf(&str_d_setup, "-1");
if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_lp.rel_value_us)
{
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
ph.averaged_result[cur->peers - ph.N_peers_start].d_lp.rel_value_us)
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_lp.rel_value_us =
0;
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_lp.rel_value_us +=
cur->d_lp.rel_value_us;
fprintf (stderr,
"Total time to solve %s LP for %u peers %u addresses: %llu
us\n",
(GNUNET_YES == cur->update) ? "updated" : "full",
@@ -823,6 +847,9 @@
GNUNET_asprintf (&str_d_lp, "-1");
if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_mlp.rel_value_us)
{
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us ==
ph.averaged_result[cur->peers - ph.N_peers_start].d_mlp.rel_value_us)
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_mlp.rel_value_us =
0;
+ ph.averaged_result[cur->peers - ph.N_peers_start].d_mlp.rel_value_us +=
cur->d_mlp.rel_value_us;
fprintf (stderr, "Total time to solve %s MLP for %u peers %u addresses:
%llu us\n",
(GNUNET_YES == cur->update) ? "updated" : "full",
cur->peers, cur->addresses, (unsigned long long
)cur->d_mlp.rel_value_us);
@@ -883,6 +910,41 @@
static void
+evaluate_average (void)
+{
+ int c;
+ for (c = 0; c <= ph.N_peers_end - ph.N_peers_start; c++)
+ {
+ struct Result *cur = &ph.averaged_result[c];
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_total.rel_value_us)
+ fprintf (stderr,
+ "Average total time to solve %s for %u peers %u addresses: %llu us\n",
+ (GNUNET_YES == cur->update) ? "updated" : "full",
+ cur->peers, cur->addresses,
+ (unsigned long long) cur->d_total.rel_value_us / ph.iterations);
+
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_setup.rel_value_us)
+ fprintf (stderr,
+ "Average total time to setup for %u peers %u addresses: %llu us\n",
+ cur->peers, cur->addresses,
+ (unsigned long long) cur->d_setup.rel_value_us / ph.iterations);
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_lp.rel_value_us)
+ fprintf (stderr,
+ "Average total time to solve lp %s for %u peers %u addresses: %llu
us\n",
+ (GNUNET_YES == cur->update) ? "updated" : "full",
+ cur->peers, cur->addresses,
+ (unsigned long long) cur->d_lp.rel_value_us / ph.iterations);
+ if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us != cur->d_mlp.rel_value_us)
+ fprintf (stderr,
+ "Average total time to solve mlp %s for %u peers %u addresses: %llu
us\n",
+ (GNUNET_YES == cur->update) ? "updated" : "full",
+ cur->peers, cur->addresses,
+ (unsigned long long) cur->d_mlp.rel_value_us / ph.iterations);
+ }
+
+}
+
+static void
perf_run (void)
{
struct ATS_Address *cur;
@@ -1086,6 +1148,14 @@
/* Create array of DLL to store results for iterations */
ph.iterations_results = GNUNET_malloc (sizeof (struct Iteration) *
ph.iterations);
+ ph.averaged_result = GNUNET_malloc (sizeof (struct Result) *
((ph.N_peers_end + 1) - ph.N_peers_start));
+ for (c = 0; c <= ph.N_peers_end - ph.N_peers_start; c++)
+ {
+ ph.averaged_result[c].d_setup = GNUNET_TIME_UNIT_FOREVER_REL;
+ ph.averaged_result[c].d_total = GNUNET_TIME_UNIT_FOREVER_REL;
+ ph.averaged_result[c].d_lp = GNUNET_TIME_UNIT_FOREVER_REL;
+ ph.averaged_result[c].d_mlp = GNUNET_TIME_UNIT_FOREVER_REL;
+ }
/* Load solver */
ph.env.cfg = solver_cfg;
@@ -1128,11 +1198,14 @@
perf_run ();
evaluate (ph.current_iteration);
}
+ evaluate_average ();
/* Unload solver*/
GNUNET_log(GNUNET_ERROR_TYPE_INFO, _("Unloading solver `%s'\n"),
ph.ats_string);
GNUNET_PLUGIN_unload (plugin, ph.solver);
GNUNET_free (plugin);
+ GNUNET_free (ph.iterations_results);
+ GNUNET_free (ph.averaged_result);
GNUNET_CONFIGURATION_destroy (solver_cfg);
GNUNET_STATISTICS_destroy (ph.stat, GNUNET_NO);
ph.solver = NULL;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r32044 - gnunet/src/ats,
gnunet <=