← Back to team overview

divmod-dev team mailing list archive

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

 

Tristan Seligmann has proposed merging lp:~divmod-dev/divmod.org/1208300-powerup-loading-benchmark into lp:divmod.org.

Requested reviews:
  Divmod-dev (divmod-dev)
Related bugs:
  Bug #1208300 in Divmod Axiom: "Benchmark for powerup loading"
  https://bugs.launchpad.net/divmod-axiom/+bug/1208300

For more details, see:
https://code.launchpad.net/~divmod-dev/divmod.org/1208300-powerup-loading-benchmark/+merge/178486


-- 
https://code.launchpad.net/~divmod-dev/divmod.org/1208300-powerup-loading-benchmark/+merge/178486
Your team Divmod-dev is requested to review the proposed merge of lp:~divmod-dev/divmod.org/1208300-powerup-loading-benchmark into lp:divmod.org.
=== added file 'Axiom/benchmark/powerup-loading'
--- Axiom/benchmark/powerup-loading	1970-01-01 00:00:00 +0000
+++ Axiom/benchmark/powerup-loading	2013-08-05 03:16:25 +0000
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+
+# Benchmark of Axiom powerup loading. Accepts no parameters. Reports one
+# statistic, the number of milliseconds it takes to query for powerups after they
+# have already been queried for once.
+
+
+import sys, time
+
+from zope.interface import Interface
+
+from axiom.store import Store
+from axiom.attributes import integer
+
+import benchlib
+
+
+class IPowerup(Interface):
+    """
+    Empty interface to use for powerups.
+    """
+
+
+def benchmark():
+    SomeItem = benchlib.itemTypeWithSomeAttributes([integer])
+
+    store = Store()
+    items = []
+    for i in range(10):
+        item = SomeItem(store=store)
+        store.powerUp(item, IPowerup)
+        items.append(item)
+
+
+    def _getPowerups(counter):
+        for i in counter:
+            list(store.powerupsFor(IPowerup))
+
+
+    # cache the powerups first
+    store.transact(_getPowerups, range(1))
+
+    counter = range(1000)
+    before = time.time()
+    store.transact(_getPowerups, counter)
+    after = time.time()
+
+    return (after - before) * 1000 / (len(counter))
+
+
+def main(argv):
+    if len(argv) != 1:
+        raise SystemExit("Usage: %s")
+    print benchmark()
+
+
+if __name__ == '__main__':
+    main(sys.argv)


Follow ups