summaryrefslogtreecommitdiff
path: root/test/perf/masscreate.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/perf/masscreate.py')
-rw-r--r--test/perf/masscreate.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/perf/masscreate.py b/test/perf/masscreate.py
new file mode 100644
index 000000000..5f99bb6c1
--- /dev/null
+++ b/test/perf/masscreate.py
@@ -0,0 +1,41 @@
+# times how long it takes to create 26000 objects
+
+from sqlalchemy.attributes import *
+import time
+import gc
+
+manage_attributes = True
+init_attributes = manage_attributes and True
+
+class User(object):
+ pass
+class Address(object):
+ pass
+
+attr_manager = AttributeManager()
+if manage_attributes:
+ attr_manager.register_attribute(User, 'id', uselist=False)
+ attr_manager.register_attribute(User, 'name', uselist=False)
+ attr_manager.register_attribute(User, 'addresses', uselist=True, trackparent=True)
+ attr_manager.register_attribute(Address, 'email', uselist=False)
+
+now = time.time()
+for i in range(0,130):
+ u = User()
+ if init_attributes:
+ attr_manager.init_attr(u)
+ u.id = i
+ u.name = "user " + str(i)
+ if not manage_attributes:
+ u.addresses = []
+ for j in range(0,200):
+ a = Address()
+ if init_attributes:
+ attr_manager.init_attr(a)
+ a.email = 'foo@bar.com'
+ u.addresses.append(a)
+# gc.collect()
+# print len(managed_attributes)
+# managed_attributes.clear()
+total = time.time() - now
+print "Total time", total