Thomas Pelle Jakobsen <[EMAIL PROTECTED]> writes:

> # HG changeset patch
> # User Thomas Pelle Jakobsen <[EMAIL PROTECTED]>
> # Date 1226015460 -3600
> # Node ID 0985564470de2bb2c5247effd30dc40f74048f17
> # Parent  aa8ba57c7833f0d68792db7c36782e3ba9fbc194
> Added graph example.
>
> diff -r aa8ba57c7833 -r 0985564470de apps/benchmark/graph.py
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/apps/benchmark/graph.py Fri Nov 07 00:51:00 2008 +0100
> @@ -0,0 +1,83 @@
> +#!/usr/bin/python
> +#
> +# Copyright 2007, 2008 VIFF Development Team.
> +#
> +# This file is part of VIFF, the Virtual Ideal Functionality Framework.
> +#
> +# VIFF is free software: you can redistribute it and/or modify it
> +# under the terms of the GNU Lesser General Public License (LGPL) as
> +# published by the Free Software Foundation, either version 3 of the
> +# License, or (at your option) any later version.
> +#
> +# VIFF is distributed in the hope that it will be useful, but WITHOUT
> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
> +# Public License for more details.
> +#
> +# You should have received a copy of the GNU Lesser General Public
> +# License along with VIFF. If not, see <http://www.gnu.org/licenses/>.
> +
> +""" A rudimentary script that generates graphs of some benchmark results.
> +It could be executed periodically or triggered by a benchmark run, a 
> +viff commit or something else.

VIFF should be in capitals, the leading and trailing spaces should go.

> +
> +All sorts of statistics could be generated by scripts like this.
> +"""
> +
> +import sys
> +from database import Database
> +import numpy as np
> +import matplotlib.pyplot as plt
> +
> +def example1(database):
> +    """Create a graph showing for each suite the revision on the x-axis and 
> +    the average execution time of Toft05 comparison for three players on the
> +    y-axis (timings from host with player_id one is used).
> +    """
> +    vals = database.sql_query("""
> +        SELECT Suite.revision, Suite.starttime, AVG(Result.value)
> +        FROM Suite
> +            INNER JOIN VIFFBenchmark AS b ON Suite.id = b.suite 
> +            INNER JOIN IntegerBenchmarkAttribute AS iba ON b.id = 
> iba.benchmark
> +            INNER JOIN Result ON b.id = Result.benchmark
> +        WHERE b.name = 'ComparisonToft05'
> +            AND iba.attribute = 'n'
> +            AND iba.value = 3
> +            AND Result.host = 1
> +            AND Result.attribute = 'execution_time'
> +        GROUP BY Suite.id, b.id;
> +    """)

<joke>Argh, raw SQL! I thought that had been forbidden years ago. I
cannot even remember when I last had to write SQL...</joke>

> +    toft05_avgs = []
> +    revisions = []
> +    for revision, timestamp, average in vals:
> +        print revision, timestamp, average
> +        toft05_avgs.append(int(average/1000))
> +        revisions.append(revision)
> +    N = len(revisions)
> +    ind = np.arange(N)
> +    width = 0.35 # the width of the bars: can also be len(x) sequence
> +    p1 = plt.bar(ind, toft05_avgs, width, color='r')
> +    plt.ylabel('execution time / ms')
> +    plt.title('VIFF Benchmark Results')
> +    plt.xticks(ind+width/2., revisions )
> +    plt.legend( (p1[0],), ('Toft05Comparison',) )
> +    plt.show()
> +    #savefig("fig1.png",dpi=(640/8))
> +
> +if __name__ == "__main__":
> +    database = Database(host="localhost",
> +                        db="viff_benchmark",
> +                        user="root",
> +                        passwd=sys.argv[1])
> +    
> +    example1(database)
> +    
> +    # TODO: We would like hg commit dates to exist in database as well
> +    # as the suite execution date. How?

You mean the date of the commit that defines the suite? Something like

  hg log -r 123 --template '{date|isodate}'

will give you what you want, replace 123 with the revision hash. There
are more about the template filters here:

  http://hgbook.red-bean.com/hgbookch11.html#x15-25800011.6

-- 
Martin Geisler

VIFF (Virtual Ideal Functionality Framework) brings easy and efficient
SMPC (Secure Multiparty Computation) to Python. See: http://viff.dk/.

Attachment: pgpMScHwWHZN3.pgp
Description: PGP signature

_______________________________________________
viff-patches mailing list
[email protected]
http://lists.viff.dk/listinfo.cgi/viff-patches-viff.dk

Reply via email to