diff options
author | Julius Bünger <buenger@mytum.de> | 2018-04-09 20:57:14 +0200 |
---|---|---|
committer | Julius Bünger <buenger@mytum.de> | 2018-04-09 20:57:14 +0200 |
commit | f8e43ed77a7ffbcf38034b28ddc7e1b00450f836 (patch) | |
tree | bcb896d22bba6e4e63c26b0129a4144f656d5746 /src/rps/test_rps.c | |
parent | 9d7a72525b8a08f16d1c711fc6cbd267bb5ee9ee (diff) | |
download | gnunet-f8e43ed77a7ffbcf38034b28ddc7e1b00450f836.tar.gz gnunet-f8e43ed77a7ffbcf38034b28ddc7e1b00450f836.zip |
rps profiler: fix computation of probabilities
Diffstat (limited to 'src/rps/test_rps.c')
-rw-r--r-- | src/rps/test_rps.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/rps/test_rps.c b/src/rps/test_rps.c index 2b5e4a8c3..086b0782e 100644 --- a/src/rps/test_rps.c +++ b/src/rps/test_rps.c | |||
@@ -1963,6 +1963,7 @@ static void compute_probabilities (uint32_t peer_idx) | |||
1963 | double prob_pull; | 1963 | double prob_pull; |
1964 | uint32_t view_size; | 1964 | uint32_t view_size; |
1965 | uint32_t cont_views; | 1965 | uint32_t cont_views; |
1966 | uint32_t number_of_being_in_pull_events; | ||
1966 | int tmp; | 1967 | int tmp; |
1967 | uint32_t count_non_zero_prob = 0; | 1968 | uint32_t count_non_zero_prob = 0; |
1968 | 1969 | ||
@@ -1983,17 +1984,31 @@ static void compute_probabilities (uint32_t peer_idx) | |||
1983 | prob_push = 1.0 * binom (0.45 * view_size, 1) | 1984 | prob_push = 1.0 * binom (0.45 * view_size, 1) |
1984 | / | 1985 | / |
1985 | binom (view_size, 0.45 * view_size); | 1986 | binom (view_size, 0.45 * view_size); |
1987 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1988 | "\t\t%" PRIu32 " is in %" PRIu32 "'s view, prob: %f\n", | ||
1989 | peer_idx, | ||
1990 | i, | ||
1991 | prob_push); | ||
1986 | } else { | 1992 | } else { |
1987 | prob_push = 0; | 1993 | prob_push = 0; |
1994 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1995 | "\t\t%" PRIu32 " is not in %" PRIu32 "'s view, prob: 0\n", | ||
1996 | peer_idx, | ||
1997 | i); | ||
1988 | } | 1998 | } |
1989 | /* 2. Probability of peer i being contained in pulls */ | 1999 | /* 2. Probability of peer i being contained in pulls */ |
1990 | view_size = rps_peers[peer_idx].cur_view_count; | 2000 | view_size = rps_peers[peer_idx].cur_view_count; |
1991 | cont_views = count_containing_views (i, peer_idx); | 2001 | cont_views = count_containing_views (i, peer_idx); |
1992 | prob_pull = 1.0 | 2002 | number_of_being_in_pull_events = |
1993 | / | ||
1994 | (binom (view_size, 0.45 * view_size) - | 2003 | (binom (view_size, 0.45 * view_size) - |
1995 | binom (view_size - cont_views, 0.45 * view_size)); | 2004 | binom (view_size - cont_views, 0.45 * view_size)); |
1996 | if (0 == cont_views) prob_pull = 0; | 2005 | if (0 != number_of_being_in_pull_events) |
2006 | { | ||
2007 | prob_pull = 1.0 / number_of_being_in_pull_events; | ||
2008 | } else | ||
2009 | { | ||
2010 | prob_pull = 0; | ||
2011 | } | ||
1997 | probs[i] = prob_push + prob_pull - (prob_push * prob_pull); | 2012 | probs[i] = prob_push + prob_pull - (prob_push * prob_pull); |
1998 | 2013 | ||
1999 | if (0 != probs[i]) count_non_zero_prob++; | 2014 | if (0 != probs[i]) count_non_zero_prob++; |