소스 검색

Add a performance test for the dict iteration idiom

jonathanvdc 8 년 전
부모
커밋
237f0e0d72
2개의 변경된 파일60개의 추가작업 그리고 0개의 파일을 삭제
  1. 47 0
      performance/code/dict_iterate.alc
  2. 13 0
      performance/test_dict_iterate.py

+ 47 - 0
performance/code/dict_iterate.alc

@@ -0,0 +1,47 @@
+include "primitives.alh"
+
+Void function log_dict_keys(dict : Element, n : Integer):
+	Element keys
+	Element k
+	Integer i
+
+	i = 0
+	keys = dict_keys(dict)
+	while (read_nr_out(keys) > 0):
+		k = set_pop(keys)
+		if (i == n):
+			log(k)
+			i = 0
+
+		i = i + 1
+
+	return!
+
+Element function create_dict(n : Integer):
+	Integer i
+	Element dict
+
+	i = 0
+	dict = create_node()
+
+	while (i < n):
+		dict_add(dict, i, 0)
+		i = i + 1
+
+	return dict!
+
+Void function test_main():
+	Integer size
+	Integer log_skip
+	Integer trip_count
+	Integer i
+
+	size = input()
+	log_skip = input()
+	trip_count = input()
+	i = 0
+	while (i < trip_count):
+		log_dict_keys(create_dict(size), log_skip)
+		i = i + 1
+
+	return!

+ 13 - 0
performance/test_dict_iterate.py

@@ -0,0 +1,13 @@
+import unittest
+import utils
+
+class TestDictIterate(unittest.TestCase):
+    def dict_iterate(self, optimization_level):
+        utils.write_perf_to_file(
+            'dict_iterate', optimization_level,
+            utils.run_perf_test(
+                ["test_harness.alc", "dict_iterate.alc", "primitives.alc", "jit.alc"],
+                [50, 10, 100],
+                optimization_level))
+
+utils.define_perf_tests(TestDictIterate, TestDictIterate.dict_iterate)