Merge lp:~divmod-dev/divmod.org/1208300-powerup-loading-benchmark into lp:divmod.org

Proposed by Tristan Seligmann
Status: Merged
Merged at revision: 2719
Proposed branch: lp:~divmod-dev/divmod.org/1208300-powerup-loading-benchmark
Merge into: lp:divmod.org
Diff against target: 62 lines (+58/-0)
1 file modified
Axiom/benchmark/powerup-loading (+58/-0)
To merge this branch: bzr merge lp:~divmod-dev/divmod.org/1208300-powerup-loading-benchmark
Reviewer Review Type Date Requested Status
Laurens Van Houtven Approve
Review via email: mp+178486@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Laurens Van Houtven (lvh) wrote :

LGTM, *except* "import benchlib" being kinda ick, but I suppose this ticket shouldn't be in charge of fixing that.

I filed https://bugs.launchpad.net/divmod.org/+bug/1268098 for that.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'Axiom/benchmark/powerup-loading'
2--- Axiom/benchmark/powerup-loading 1970-01-01 00:00:00 +0000
3+++ Axiom/benchmark/powerup-loading 2013-08-05 03:16:25 +0000
4@@ -0,0 +1,58 @@
5+#!/usr/bin/python
6+
7+# Benchmark of Axiom powerup loading. Accepts no parameters. Reports one
8+# statistic, the number of milliseconds it takes to query for powerups after they
9+# have already been queried for once.
10+
11+
12+import sys, time
13+
14+from zope.interface import Interface
15+
16+from axiom.store import Store
17+from axiom.attributes import integer
18+
19+import benchlib
20+
21+
22+class IPowerup(Interface):
23+ """
24+ Empty interface to use for powerups.
25+ """
26+
27+
28+def benchmark():
29+ SomeItem = benchlib.itemTypeWithSomeAttributes([integer])
30+
31+ store = Store()
32+ items = []
33+ for i in range(10):
34+ item = SomeItem(store=store)
35+ store.powerUp(item, IPowerup)
36+ items.append(item)
37+
38+
39+ def _getPowerups(counter):
40+ for i in counter:
41+ list(store.powerupsFor(IPowerup))
42+
43+
44+ # cache the powerups first
45+ store.transact(_getPowerups, range(1))
46+
47+ counter = range(1000)
48+ before = time.time()
49+ store.transact(_getPowerups, counter)
50+ after = time.time()
51+
52+ return (after - before) * 1000 / (len(counter))
53+
54+
55+def main(argv):
56+ if len(argv) != 1:
57+ raise SystemExit("Usage: %s")
58+ print benchmark()
59+
60+
61+if __name__ == '__main__':
62+ main(sys.argv)

Subscribers

People subscribed via source and target branches

to all changes: