summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnson Mansfield <amansfield@mantaro.com>2025-08-31 13:20:13 -0400
committerDamien George <damien@micropython.org>2025-09-15 16:09:55 +1000
commit6d09d3e76e1c4837c9e54957ffaa3d6161803630 (patch)
tree42f2b5056a345433cacaa77089a3a81d7387e489
parent36ab1c26400a68c9f8c8c24cce03f487e403c312 (diff)
tests/internal_bench/class_instance: Benchmark instantiation.
This commit adds tests to benchmark the performance of class instantiation. Signed-off-by: Anson Mansfield <amansfield@mantaro.com>
-rw-r--r--tests/internal_bench/class_instance-0-object.py11
-rw-r--r--tests/internal_bench/class_instance-0.1-object-gc.py13
-rw-r--r--tests/internal_bench/class_instance-1-empty.py13
-rw-r--r--tests/internal_bench/class_instance-1.1-classattr.py13
-rw-r--r--tests/internal_bench/class_instance-1.2-func.py14
-rw-r--r--tests/internal_bench/class_instance-1.3-empty-gc.py15
-rw-r--r--tests/internal_bench/class_instance-2-init.py14
-rw-r--r--tests/internal_bench/class_instance-2.1-init_super.py14
-rw-r--r--tests/internal_bench/class_instance-2.2-new.py14
-rw-r--r--tests/internal_bench/class_instance-3-del.py14
-rw-r--r--tests/internal_bench/class_instance-3.1-del-gc.py16
-rw-r--r--tests/internal_bench/class_instance-4-slots.py13
-rw-r--r--tests/internal_bench/class_instance-4.1-slots5.py13
13 files changed, 177 insertions, 0 deletions
diff --git a/tests/internal_bench/class_instance-0-object.py b/tests/internal_bench/class_instance-0-object.py
new file mode 100644
index 000000000..401c8ea7e
--- /dev/null
+++ b/tests/internal_bench/class_instance-0-object.py
@@ -0,0 +1,11 @@
+import bench
+
+X = object
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-0.1-object-gc.py b/tests/internal_bench/class_instance-0.1-object-gc.py
new file mode 100644
index 000000000..7c475963a
--- /dev/null
+++ b/tests/internal_bench/class_instance-0.1-object-gc.py
@@ -0,0 +1,13 @@
+import bench
+import gc
+
+X = object
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+ gc.collect()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-1-empty.py b/tests/internal_bench/class_instance-1-empty.py
new file mode 100644
index 000000000..617d47a86
--- /dev/null
+++ b/tests/internal_bench/class_instance-1-empty.py
@@ -0,0 +1,13 @@
+import bench
+
+
+class X:
+ pass
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-1.1-classattr.py b/tests/internal_bench/class_instance-1.1-classattr.py
new file mode 100644
index 000000000..4e667533d
--- /dev/null
+++ b/tests/internal_bench/class_instance-1.1-classattr.py
@@ -0,0 +1,13 @@
+import bench
+
+
+class X:
+ x = 0
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-1.2-func.py b/tests/internal_bench/class_instance-1.2-func.py
new file mode 100644
index 000000000..21bf7a1ac
--- /dev/null
+++ b/tests/internal_bench/class_instance-1.2-func.py
@@ -0,0 +1,14 @@
+import bench
+
+
+class X:
+ def f(self):
+ pass
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-1.3-empty-gc.py b/tests/internal_bench/class_instance-1.3-empty-gc.py
new file mode 100644
index 000000000..a5108ef8e
--- /dev/null
+++ b/tests/internal_bench/class_instance-1.3-empty-gc.py
@@ -0,0 +1,15 @@
+import bench
+import gc
+
+
+class X:
+ pass
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+ gc.collect()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-2-init.py b/tests/internal_bench/class_instance-2-init.py
new file mode 100644
index 000000000..86619d315
--- /dev/null
+++ b/tests/internal_bench/class_instance-2-init.py
@@ -0,0 +1,14 @@
+import bench
+
+
+class X:
+ def __init__(self):
+ pass
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-2.1-init_super.py b/tests/internal_bench/class_instance-2.1-init_super.py
new file mode 100644
index 000000000..38bca5fef
--- /dev/null
+++ b/tests/internal_bench/class_instance-2.1-init_super.py
@@ -0,0 +1,14 @@
+import bench
+
+
+class X:
+ def __init__(self):
+ return super().__init__()
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-2.2-new.py b/tests/internal_bench/class_instance-2.2-new.py
new file mode 100644
index 000000000..dc5e78ea5
--- /dev/null
+++ b/tests/internal_bench/class_instance-2.2-new.py
@@ -0,0 +1,14 @@
+import bench
+
+
+class X:
+ def __new__(cls):
+ return super().__new__(cls)
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-3-del.py b/tests/internal_bench/class_instance-3-del.py
new file mode 100644
index 000000000..af700f72a
--- /dev/null
+++ b/tests/internal_bench/class_instance-3-del.py
@@ -0,0 +1,14 @@
+import bench
+
+
+class X:
+ def __del__(self):
+ pass
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-3.1-del-gc.py b/tests/internal_bench/class_instance-3.1-del-gc.py
new file mode 100644
index 000000000..311c71c35
--- /dev/null
+++ b/tests/internal_bench/class_instance-3.1-del-gc.py
@@ -0,0 +1,16 @@
+import bench
+import gc
+
+
+class X:
+ def __del__(self):
+ pass
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+ gc.collect()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-4-slots.py b/tests/internal_bench/class_instance-4-slots.py
new file mode 100644
index 000000000..51b067fed
--- /dev/null
+++ b/tests/internal_bench/class_instance-4-slots.py
@@ -0,0 +1,13 @@
+import bench
+
+
+class X:
+ __slots__ = ["x"]
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)
diff --git a/tests/internal_bench/class_instance-4.1-slots5.py b/tests/internal_bench/class_instance-4.1-slots5.py
new file mode 100644
index 000000000..8f5c2ecb4
--- /dev/null
+++ b/tests/internal_bench/class_instance-4.1-slots5.py
@@ -0,0 +1,13 @@
+import bench
+
+
+class X:
+ __slots__ = ["a", "b", "c", "d", "x"]
+
+
+def test(num):
+ for i in range(num // 5):
+ x = X()
+
+
+bench.run(test)