• E
    qdist: add module to represent frequency distributions of data · bf3afd5f
    Emilio G. Cota 提交于
    Sometimes it is useful to have a quick histogram to represent a certain
    distribution -- for example, when investigating a performance regression
    in a hash table due to inadequate hashing.
    
    The appended allows us to easily represent a distribution using Unicode
    characters. Further, the data structure keeping track of the distribution
    is so simple that obtaining its values for off-line processing is trivial.
    
    Example, taking the last 10 commits to QEMU:
    
     Characters in commit title  Count
    -----------------------------------
                             39      1
                             48      1
                             53      1
                             54      2
                             57      1
                             61      1
                             67      1
                             78      1
                             80      1
    qdist_init(&dist);
    qdist_inc(&dist, 39);
    [...]
    qdist_inc(&dist, 80);
    
    char *str = qdist_pr(&dist, 9, QDIST_PR_LABELS);
    // -> [39.0,43.6)▂▂ █▂ ▂ ▄[75.4,80.0]
    g_free(str);
    
    char *str = qdist_pr(&dist, 4, QDIST_PR_LABELS);
    // -> [39.0,49.2)▁█▁▁[69.8,80.0]
    g_free(str);
    Reviewed-by: NRichard Henderson <rth@twiddle.net>
    Signed-off-by: NEmilio G. Cota <cota@braap.org>
    Message-Id: <1465412133-3029-9-git-send-email-cota@braap.org>
    Signed-off-by: NRichard Henderson <rth@twiddle.net>
    bf3afd5f
qdist.c 9.2 KB