nydp 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +77 -56
  4. data/lib/lisp/core-000.nydp +1 -1
  5. data/lib/lisp/core-010-precompile.nydp +49 -29
  6. data/lib/lisp/core-012-utils.nydp +12 -8
  7. data/lib/lisp/core-015-documentation.nydp +41 -15
  8. data/lib/lisp/core-017-builtin-dox.nydp +621 -100
  9. data/lib/lisp/core-020-utils.nydp +33 -6
  10. data/lib/lisp/core-025-warnings.nydp +1 -1
  11. data/lib/lisp/core-030-syntax.nydp +64 -48
  12. data/lib/lisp/core-035-flow-control.nydp +20 -28
  13. data/lib/lisp/core-037-list-utils.nydp +84 -21
  14. data/lib/lisp/core-040-utils.nydp +8 -5
  15. data/lib/lisp/core-041-string-utils.nydp +17 -11
  16. data/lib/lisp/core-043-list-utils.nydp +140 -77
  17. data/lib/lisp/core-045-dox-utils.nydp +1 -0
  18. data/lib/lisp/core-050-test-runner.nydp +8 -12
  19. data/lib/lisp/core-070-prefix-list.nydp +19 -15
  20. data/lib/lisp/core-080-pretty-print.nydp +13 -5
  21. data/lib/lisp/core-090-hook.nydp +11 -11
  22. data/lib/lisp/core-100-utils.nydp +51 -66
  23. data/lib/lisp/core-110-hash-utils.nydp +34 -7
  24. data/lib/lisp/core-120-settings.nydp +14 -9
  25. data/lib/lisp/core-130-validations.nydp +28 -13
  26. data/lib/lisp/core-900-benchmarking.nydp +420 -47
  27. data/lib/lisp/tests/000-empty-args-examples.nydp +5 -0
  28. data/lib/lisp/tests/andify-examples.nydp +1 -1
  29. data/lib/lisp/tests/auto-hash-examples.nydp +6 -1
  30. data/lib/lisp/tests/best-examples.nydp +1 -1
  31. data/lib/lisp/tests/boot-tests.nydp +1 -1
  32. data/lib/lisp/tests/date-examples.nydp +129 -102
  33. data/lib/lisp/tests/destructuring-examples.nydp +1 -1
  34. data/lib/lisp/tests/dox-tests.nydp +2 -2
  35. data/lib/lisp/tests/hash-examples.nydp +58 -33
  36. data/lib/lisp/tests/list-tests.nydp +137 -1
  37. data/lib/lisp/tests/pretty-print-tests.nydp +12 -0
  38. data/lib/lisp/tests/rotate-2d-array-examples.nydp +26 -0
  39. data/lib/lisp/tests/sort-examples.nydp +5 -5
  40. data/lib/lisp/tests/string-tests.nydp +30 -5
  41. data/lib/lisp/tests/syntax-tests.nydp +10 -2
  42. data/lib/lisp/tests/time-examples.nydp +8 -1
  43. data/lib/lisp/tests/unparse-tests.nydp +13 -7
  44. data/lib/nydp/assignment.rb +15 -28
  45. data/lib/nydp/builtin/abs.rb +4 -3
  46. data/lib/nydp/builtin/apply.rb +8 -10
  47. data/lib/nydp/builtin/cdr_set.rb +1 -1
  48. data/lib/nydp/builtin/comment.rb +1 -3
  49. data/lib/nydp/builtin/date.rb +11 -28
  50. data/lib/nydp/builtin/divide.rb +3 -10
  51. data/lib/nydp/builtin/ensuring.rb +6 -21
  52. data/lib/nydp/builtin/error.rb +2 -4
  53. data/lib/nydp/builtin/eval.rb +9 -4
  54. data/lib/nydp/builtin/greater_than.rb +7 -8
  55. data/lib/nydp/builtin/handle_error.rb +10 -34
  56. data/lib/nydp/builtin/hash.rb +24 -45
  57. data/lib/nydp/builtin/inspect.rb +1 -3
  58. data/lib/nydp/builtin/is_equal.rb +4 -7
  59. data/lib/nydp/builtin/less_than.rb +6 -7
  60. data/lib/nydp/builtin/log.rb +7 -0
  61. data/lib/nydp/builtin/math_ceiling.rb +1 -3
  62. data/lib/nydp/builtin/math_floor.rb +1 -3
  63. data/lib/nydp/builtin/math_power.rb +1 -3
  64. data/lib/nydp/builtin/math_round.rb +2 -2
  65. data/lib/nydp/builtin/minus.rb +7 -14
  66. data/lib/nydp/builtin/parse.rb +5 -5
  67. data/lib/nydp/builtin/parse_in_string.rb +5 -7
  68. data/lib/nydp/builtin/plus.rb +14 -31
  69. data/lib/nydp/builtin/pre_compile.rb +1 -3
  70. data/lib/nydp/builtin/puts.rb +4 -8
  71. data/lib/nydp/builtin/quit.rb +1 -1
  72. data/lib/nydp/builtin/rand.rb +6 -11
  73. data/lib/nydp/builtin/random_string.rb +2 -4
  74. data/lib/nydp/builtin/rng.rb +25 -0
  75. data/lib/nydp/builtin/ruby_wrap.rb +27 -14
  76. data/lib/nydp/builtin/script_run.rb +1 -3
  77. data/lib/nydp/builtin/set_intersection.rb +3 -4
  78. data/lib/nydp/builtin/set_union.rb +3 -4
  79. data/lib/nydp/builtin/sort.rb +2 -7
  80. data/lib/nydp/builtin/string_match.rb +5 -13
  81. data/lib/nydp/builtin/string_replace.rb +2 -7
  82. data/lib/nydp/builtin/string_split.rb +3 -8
  83. data/lib/nydp/builtin/sym.rb +2 -9
  84. data/lib/nydp/builtin/thread_locals.rb +2 -2
  85. data/lib/nydp/builtin/time.rb +38 -44
  86. data/lib/nydp/builtin/times.rb +6 -15
  87. data/lib/nydp/builtin/to_integer.rb +8 -14
  88. data/lib/nydp/builtin/to_string.rb +2 -13
  89. data/lib/nydp/builtin/type_of.rb +10 -16
  90. data/lib/nydp/builtin/vm_info.rb +2 -10
  91. data/lib/nydp/builtin.rb +15 -37
  92. data/lib/nydp/compiler.rb +29 -19
  93. data/lib/nydp/cond.rb +95 -88
  94. data/lib/nydp/context_symbol.rb +11 -9
  95. data/lib/nydp/core.rb +74 -73
  96. data/lib/nydp/core_ext.rb +88 -24
  97. data/lib/nydp/date.rb +22 -19
  98. data/lib/nydp/error.rb +2 -3
  99. data/lib/nydp/function_invocation.rb +76 -289
  100. data/lib/nydp/helper.rb +18 -9
  101. data/lib/nydp/interpreted_function.rb +159 -25
  102. data/lib/nydp/lexical_context.rb +9 -8
  103. data/lib/nydp/lexical_context_builder.rb +1 -1
  104. data/lib/nydp/literal.rb +3 -7
  105. data/lib/nydp/loop.rb +72 -0
  106. data/lib/nydp/namespace.rb +52 -0
  107. data/lib/nydp/pair.rb +146 -50
  108. data/lib/nydp/parser.rb +9 -11
  109. data/lib/nydp/plugin.rb +88 -19
  110. data/lib/nydp/runner.rb +141 -23
  111. data/lib/nydp/symbol.rb +16 -26
  112. data/lib/nydp/symbol_lookup.rb +3 -2
  113. data/lib/nydp/tokeniser.rb +1 -1
  114. data/lib/nydp/truth.rb +2 -37
  115. data/lib/nydp/version.rb +1 -1
  116. data/lib/nydp.rb +33 -44
  117. data/nydp.gemspec +2 -1
  118. data/spec/date_spec.rb +26 -32
  119. data/spec/embedded_spec.rb +22 -22
  120. data/spec/error_spec.rb +12 -16
  121. data/spec/foreign_hash_spec.rb +21 -36
  122. data/spec/hash_non_hash_behaviour_spec.rb +12 -29
  123. data/spec/hash_spec.rb +36 -49
  124. data/spec/literal_spec.rb +6 -6
  125. data/spec/nydp_spec.rb +14 -14
  126. data/spec/pair_spec.rb +8 -8
  127. data/spec/parser_spec.rb +41 -37
  128. data/spec/rand_spec.rb +1 -4
  129. data/spec/spec_helper.rb +3 -3
  130. data/spec/string_atom_spec.rb +15 -16
  131. data/spec/symbol_spec.rb +27 -52
  132. data/spec/thread_local_spec.rb +23 -8
  133. data/spec/time_spec.rb +4 -10
  134. data/spec/tokeniser_spec.rb +10 -10
  135. metadata +25 -13
  136. data/lib/nydp/builtin/modulo.rb +0 -11
  137. data/lib/nydp/builtin/regexp.rb +0 -7
  138. data/lib/nydp/builtin/sqrt.rb +0 -7
  139. data/lib/nydp/builtin/string_pad_left.rb +0 -7
  140. data/lib/nydp/builtin/string_pad_right.rb +0 -7
  141. data/lib/nydp/hash.rb +0 -9
  142. data/lib/nydp/image_store.rb +0 -21
  143. data/lib/nydp/vm.rb +0 -129
@@ -1,5 +1,346 @@
1
1
  (chapter-start 'core-benchmarking "utils for benchmarking / measuring performance improvements")
2
2
 
3
+
4
+
5
+ ;; 2021-07-21 WITHOUT compile-to-ruby (ie ruby-call-stack but nydp AST objects
6
+ ;; 2nd run, all browsers closed
7
+ ;; sig conditionals : total 3.8646832879999997, average 0.3864683288 per run
8
+ ;; sig opt 4 : total 4.566391762, average 0.45663917620000005 per run
9
+ ;; sig opt 3 : total 4.203421262, average 0.4203421262 per run
10
+ ;; sig opt 2 : total 3.8990449220000003, average 0.3899044922 per run
11
+ ;; sig opt 1 : total 4.092550381, average 0.40925503809999997 per run
12
+ ;; string concatenation : total 2.462801678, average 0.2462801678 per run
13
+ ;; random string : total 4.846918843, average 0.4846918843 per run
14
+
15
+ ;; 2021-07-21 with compile-to-ruby
16
+ ;; 2nd run, all browsers closed
17
+ ;; sig conditionals : total 1.829855451, average 0.1829855451 per run
18
+ ;; sig opt 4 : total 1.6262486520000001, average 0.16262486520000002 per run
19
+ ;; sig opt 3 : total 1.620743386, average 0.1620743386 per run
20
+ ;; sig opt 2 : total 2.737928596, average 0.2737928596 per run
21
+ ;; sig opt 1 : total 2.738305964, average 0.27383059639999996 per run
22
+ ;; string concatenation : total 2.112036525, average 0.2112036525 per run
23
+ ;; random string : total 4.692295929, average 0.4692295929 per run
24
+
25
+ ;; 2021-07-18 initial state after ruby-vm (kill Nydp::VM, use loops instead of recursion)
26
+
27
+ ;; ENABLED invocation optimisations, all browsers closed
28
+ ;; sig opt 4 : total 4.541110850999999, average 0.4541110850999999 per run
29
+ ;; sig opt 3 : total 4.233554706, average 0.42335547059999995 per run
30
+ ;; sig opt 2 : total 3.8893162720000003, average 0.3889316272 per run
31
+ ;; sig opt 1 : total 4.043861785000001, average 0.4043861785000001 per run
32
+
33
+ ;; DISABLED invocation optimisations, all browsers closed
34
+ ;; sig opt 4 : total 5.311701500000002, average 0.5311701500000001 per run
35
+ ;; sig opt 3 : total 4.705393086000001, average 0.4705393086000001 per run
36
+ ;; sig opt 2 : total 4.874784166000001, average 0.48747841660000013 per run
37
+ ;; sig opt 1 : total 5.174885633, average 0.5174885632999999 per run
38
+
39
+ ;; ENABLED cond optimisations, 2nd run, all browsers closed
40
+ ;; 2nd run : sig conditionals : total 4.008352403999999, average 0.4008352403999999 per run
41
+ ;; 3rd run : sig conditionals : total 4.009742814000001, average 0.4009742814000001 per run
42
+
43
+ ;; NO cond optimisations, all browsers closed
44
+ ;; 2nd run : sig conditionals : total 4.159752815, average 0.4159752815 per run
45
+ ;; 3rd run : sig conditionals : total 4.0797304279999995, average 0.40797304279999996 per run
46
+
47
+ ;; ENABLED cond optimisations, 2nd run, all browsers closed
48
+ ;; ================================================
49
+ ;; sig conditionals : total 4.165200359, average 0.4165200359 per run
50
+ ;; sig opt 4 : total 4.835078564, average 0.4835078564 per run
51
+ ;; sig opt 3 : total 4.428351295, average 0.4428351295 per run
52
+ ;; sig opt 2 : total 3.9052602330000004, average 0.3905260233 per run
53
+ ;; sig opt 1 : total 4.167876979000001, average 0.4167876979000001 per run
54
+
55
+
56
+ ;; NO cond optimisations, 2nd run, all browsers closed
57
+ ;; ================================================
58
+ ;; sig conditionals : total 4.195927696, average 0.4195927696 per run
59
+ ;; sig opt 4 : total 4.932003079, average 0.4932003079 per run
60
+ ;; sig opt 3 : total 4.452767801000001, average 0.4452767801000001 per run
61
+ ;; sig opt 2 : total 3.954285836999999, average 0.3954285836999999 per run
62
+ ;; sig opt 1 : total 4.097334289, average 0.4097334289 per run
63
+ ;; nil
64
+
65
+
66
+ ;; ================================================
67
+ ;; Benchmark: sig opt 1 - 10 runs of 100000 iterations each
68
+ ;; took: 0.426503837 ms, 4.26503837e-06 ms per iteration
69
+ ;; took: 0.413642331 ms, 4.13642331e-06 ms per iteration
70
+ ;; took: 0.422597112 ms, 4.22597112e-06 ms per iteration
71
+ ;; took: 0.418587151 ms, 4.18587151e-06 ms per iteration
72
+ ;; took: 0.424305825 ms, 4.24305825e-06 ms per iteration
73
+ ;; took: 0.41488239 ms, 4.1488239e-06 ms per iteration
74
+ ;; took: 0.422100791 ms, 4.22100791e-06 ms per iteration
75
+ ;; took: 0.422288266 ms, 4.22288266e-06 ms per iteration
76
+ ;; took: 0.447425729 ms, 4.4742572899999995e-06 ms per iteration
77
+ ;; took: 0.42137804 ms, 4.2137804e-06 ms per iteration
78
+ ;; total 4.2337114719999995, average 0.42337114719999996 per run
79
+ ;; ================================================
80
+
81
+ ;; ================================================
82
+ ;; Benchmark: sig opt 2 - 10 runs of 100000 iterations each
83
+ ;; took: 0.390394571 ms, 3.90394571e-06 ms per iteration
84
+ ;; took: 0.393454324 ms, 3.93454324e-06 ms per iteration
85
+ ;; took: 0.393321497 ms, 3.933214970000001e-06 ms per iteration
86
+ ;; took: 0.395412523 ms, 3.95412523e-06 ms per iteration
87
+ ;; took: 0.396412323 ms, 3.9641232300000005e-06 ms per iteration
88
+ ;; took: 0.389947137 ms, 3.89947137e-06 ms per iteration
89
+ ;; took: 0.394602936 ms, 3.94602936e-06 ms per iteration
90
+ ;; took: 0.391583985 ms, 3.91583985e-06 ms per iteration
91
+ ;; took: 0.393477322 ms, 3.93477322e-06 ms per iteration
92
+ ;; took: 0.396048008 ms, 3.96048008e-06 ms per iteration
93
+ ;; total 3.9346546260000004, average 0.39346546260000004 per run
94
+ ;; ================================================
95
+
96
+ ;; ================================================
97
+ ;; Benchmark: sig opt 3 - 10 runs of 1000 iterations each
98
+ ;; took: 0.451705754 ms, 0.000451705754 ms per iteration
99
+ ;; took: 0.455307888 ms, 0.000455307888 ms per iteration
100
+ ;; took: 0.449316439 ms, 0.000449316439 ms per iteration
101
+ ;; took: 0.455164749 ms, 0.00045516474899999997 ms per iteration
102
+ ;; took: 0.450765149 ms, 0.000450765149 ms per iteration
103
+ ;; took: 0.452652457 ms, 0.000452652457 ms per iteration
104
+ ;; took: 0.453089724 ms, 0.00045308972400000003 ms per iteration
105
+ ;; took: 0.450432394 ms, 0.000450432394 ms per iteration
106
+ ;; took: 0.457052758 ms, 0.000457052758 ms per iteration
107
+ ;; took: 0.454898091 ms, 0.000454898091 ms per iteration
108
+ ;; total 4.530385403, average 0.4530385403 per run
109
+ ;; ================================================
110
+
111
+ ;; ================================================
112
+ ;; Benchmark: sig opt 4 - 10 runs of 5000 iterations each
113
+ ;; took: 0.495521834 ms, 9.910436679999999e-05 ms per iteration
114
+ ;; took: 0.49755384 ms, 9.951076800000001e-05 ms per iteration
115
+ ;; took: 0.552695865 ms, 0.000110539173 ms per iteration
116
+ ;; took: 0.492433916 ms, 9.84867832e-05 ms per iteration
117
+ ;; took: 0.494145933 ms, 9.882918659999999e-05 ms per iteration
118
+ ;; took: 0.492996487 ms, 9.85992974e-05 ms per iteration
119
+ ;; took: 0.497015332 ms, 9.94030664e-05 ms per iteration
120
+ ;; took: 0.492309001 ms, 9.84618002e-05 ms per iteration
121
+ ;; took: 0.494715669 ms, 9.89431338e-05 ms per iteration
122
+ ;; took: 0.490812481 ms, 9.81624962e-05 ms per iteration
123
+ ;; total 5.000200358, average 0.5000200358 per run
124
+ ;; ================================================
125
+
126
+ ;; ================================================
127
+ ;; Benchmark: sig conditionals - 10 runs of 25000 iterations each
128
+ ;; took: 0.431557899 ms, 1.726231596e-05 ms per iteration
129
+ ;; took: 0.426571858 ms, 1.7062874320000002e-05 ms per iteration
130
+ ;; took: 0.430284569 ms, 1.721138276e-05 ms per iteration
131
+ ;; took: 0.42693517 ms, 1.70774068e-05 ms per iteration
132
+ ;; took: 0.427953987 ms, 1.7118159479999998e-05 ms per iteration
133
+ ;; took: 0.430319221 ms, 1.721276884e-05 ms per iteration
134
+ ;; took: 0.426118186 ms, 1.704472744e-05 ms per iteration
135
+ ;; took: 0.432150037 ms, 1.7286001479999998e-05 ms per iteration
136
+ ;; took: 0.425839283 ms, 1.703357132e-05 ms per iteration
137
+ ;; took: 0.430216539 ms, 1.720866156e-05 ms per iteration
138
+ ;; total 4.2879467490000005, average 0.42879467490000006 per run
139
+ ;; ================================================
140
+ ;; sig conditionals : total 4.2879467490000005, average 0.42879467490000006 per run
141
+ ;; sig opt 4 : total 5.000200358, average 0.5000200358 per run
142
+ ;; sig opt 3 : total 4.530385403, average 0.4530385403 per run
143
+ ;; sig opt 2 : total 3.9346546260000004, average 0.39346546260000004 per run
144
+ ;; sig opt 1 : total 4.2337114719999995, average 0.42337114719999996 per run
145
+
146
+
147
+
148
+ ;; ================================================
149
+ ;; Benchmark: sig opt 1 - 10 runs of 100000 iterations each
150
+ ;; took: 0.450890062 ms, 4.5089006199999994e-06 ms per iteration
151
+ ;; took: 0.432765088 ms, 4.32765088e-06 ms per iteration
152
+ ;; took: 0.434230634 ms, 4.3423063400000005e-06 ms per iteration
153
+ ;; took: 0.434357508 ms, 4.34357508e-06 ms per iteration
154
+ ;; took: 0.436309824 ms, 4.36309824e-06 ms per iteration
155
+ ;; took: 0.433316817 ms, 4.33316817e-06 ms per iteration
156
+ ;; took: 0.433160962 ms, 4.33160962e-06 ms per iteration
157
+ ;; took: 0.436266355 ms, 4.36266355e-06 ms per iteration
158
+ ;; took: 0.433903638 ms, 4.33903638e-06 ms per iteration
159
+ ;; took: 0.433309169 ms, 4.33309169e-06 ms per iteration
160
+ ;; total 4.358510057, average 0.4358510057 per run
161
+ ;; ================================================
162
+
163
+ ;; ================================================
164
+ ;; Benchmark: sig opt 2 - 10 runs of 100000 iterations each
165
+ ;; took: 0.406172146 ms, 4.06172146e-06 ms per iteration
166
+ ;; took: 0.410655107 ms, 4.10655107e-06 ms per iteration
167
+ ;; took: 0.429369977 ms, 4.29369977e-06 ms per iteration
168
+ ;; took: 0.411830985 ms, 4.11830985e-06 ms per iteration
169
+ ;; took: 0.408426065 ms, 4.08426065e-06 ms per iteration
170
+ ;; took: 0.406196975 ms, 4.06196975e-06 ms per iteration
171
+ ;; took: 0.408817666 ms, 4.0881766600000006e-06 ms per iteration
172
+ ;; took: 0.405828419 ms, 4.05828419e-06 ms per iteration
173
+ ;; took: 0.405799685 ms, 4.05799685e-06 ms per iteration
174
+ ;; took: 0.409665169 ms, 4.09665169e-06 ms per iteration
175
+ ;; total 4.102762193999999, average 0.4102762193999999 per run
176
+ ;; ================================================
177
+
178
+ ;; ================================================
179
+ ;; Benchmark: sig opt 3 - 10 runs of 1000 iterations each
180
+ ;; took: 0.453698393 ms, 0.000453698393 ms per iteration
181
+ ;; took: 0.455538224 ms, 0.000455538224 ms per iteration
182
+ ;; took: 0.457062157 ms, 0.000457062157 ms per iteration
183
+ ;; took: 0.456968192 ms, 0.00045696819199999997 ms per iteration
184
+ ;; took: 0.458888122 ms, 0.000458888122 ms per iteration
185
+ ;; took: 0.458823928 ms, 0.000458823928 ms per iteration
186
+ ;; took: 0.453924711 ms, 0.000453924711 ms per iteration
187
+ ;; took: 0.471214934 ms, 0.000471214934 ms per iteration
188
+ ;; took: 0.458353467 ms, 0.000458353467 ms per iteration
189
+ ;; took: 0.465602218 ms, 0.000465602218 ms per iteration
190
+ ;; total 4.590074346, average 0.4590074346 per run
191
+ ;; ================================================
192
+
193
+ ;; ================================================
194
+ ;; Benchmark: sig opt 4 - 10 runs of 5000 iterations each
195
+ ;; took: 0.500212815 ms, 0.000100042563 ms per iteration
196
+ ;; took: 0.496506238 ms, 9.93012476e-05 ms per iteration
197
+ ;; took: 0.496074053 ms, 9.921481060000001e-05 ms per iteration
198
+ ;; took: 0.49651661 ms, 9.930332200000001e-05 ms per iteration
199
+ ;; took: 0.497912166 ms, 9.95824332e-05 ms per iteration
200
+ ;; took: 0.578322371 ms, 0.0001156644742 ms per iteration
201
+ ;; took: 0.510024182 ms, 0.0001020048364 ms per iteration
202
+ ;; took: 0.49581022 ms, 9.916204400000001e-05 ms per iteration
203
+ ;; took: 0.49836314 ms, 9.9672628e-05 ms per iteration
204
+ ;; took: 0.495195561 ms, 9.903911220000001e-05 ms per iteration
205
+ ;; total 5.064937356000001, average 0.5064937356000001 per run
206
+ ;; ================================================
207
+
208
+ ;; ================================================
209
+ ;; Benchmark: sig cond and - 10 runs of 800 iterations each
210
+ ;; took: 0.478098974 ms, 0.0005976237175 ms per iteration
211
+ ;; took: 0.477069456 ms, 0.00059633682 ms per iteration
212
+ ;; took: 0.478260275 ms, 0.00059782534375 ms per iteration
213
+ ;; took: 0.47783629 ms, 0.0005972953625 ms per iteration
214
+ ;; took: 0.48105838 ms, 0.0006013229750000001 ms per iteration
215
+ ;; took: 0.476168432 ms, 0.00059521054 ms per iteration
216
+ ;; took: 0.477739359 ms, 0.00059717419875 ms per iteration
217
+ ;; took: 0.484042839 ms, 0.00060505354875 ms per iteration
218
+ ;; took: 0.487843433 ms, 0.00060980429125 ms per iteration
219
+ ;; took: 0.475485017 ms, 0.00059435627125 ms per iteration
220
+ ;; total 4.793602455, average 0.4793602455 per run
221
+ ;; ================================================
222
+ ;; sig cond and : total 4.793602455, average 0.4793602455 per run
223
+ ;; sig opt 4 : total 5.064937356000001, average 0.5064937356000001 per run
224
+ ;; sig opt 3 : total 4.590074346, average 0.4590074346 per run
225
+ ;; sig opt 2 : total 4.102762193999999, average 0.4102762193999999 per run
226
+ ;; sig opt 1 : total 4.358510057, average 0.4358510057 per run
227
+
228
+
229
+ ;; ================================================
230
+ ;; Benchmark: sig opt 1 - 10 runs of 100000 iterations each
231
+ ;; took: 0.575892683 ms, 5.758926829999999e-06 ms per iteration
232
+ ;; took: 0.537105537 ms, 5.37105537e-06 ms per iteration
233
+ ;; took: 0.538311191 ms, 5.38311191e-06 ms per iteration
234
+ ;; took: 0.543976664 ms, 5.43976664e-06 ms per iteration
235
+ ;; took: 0.53516757 ms, 5.3516757e-06 ms per iteration
236
+ ;; took: 0.539703213 ms, 5.3970321300000005e-06 ms per iteration
237
+ ;; took: 0.547180394 ms, 5.471803939999999e-06 ms per iteration
238
+ ;; took: 0.548641598 ms, 5.4864159800000005e-06 ms per iteration
239
+ ;; took: 0.546513722 ms, 5.46513722e-06 ms per iteration
240
+ ;; took: 0.545944 ms, 5.45944e-06 ms per iteration
241
+ ;; total 5.458436572, average 0.5458436572 per run
242
+ ;; ================================================
243
+
244
+ ;; ================================================
245
+ ;; Benchmark: sig opt 2 - 10 runs of 100000 iterations each
246
+ ;; took: 0.51480253 ms, 5.1480252999999995e-06 ms per iteration
247
+ ;; took: 0.513128265 ms, 5.13128265e-06 ms per iteration
248
+ ;; took: 0.51480177 ms, 5.148017700000001e-06 ms per iteration
249
+ ;; took: 0.51551997 ms, 5.1551997e-06 ms per iteration
250
+ ;; took: 0.509997725 ms, 5.09997725e-06 ms per iteration
251
+ ;; took: 0.545524793 ms, 5.45524793e-06 ms per iteration
252
+ ;; took: 0.521997808 ms, 5.219978079999999e-06 ms per iteration
253
+ ;; took: 0.513020251 ms, 5.1302025100000004e-06 ms per iteration
254
+ ;; took: 0.518397573 ms, 5.18397573e-06 ms per iteration
255
+ ;; took: 0.513850827 ms, 5.13850827e-06 ms per iteration
256
+ ;; total 5.181041512, average 0.5181041512 per run
257
+ ;; ================================================
258
+
259
+ ;; ================================================
260
+ ;; Benchmark: sig opt 3 - 10 runs of 1000 iterations each
261
+ ;; took: 0.498506397 ms, 0.0004985063969999999 ms per iteration
262
+ ;; took: 0.493703647 ms, 0.000493703647 ms per iteration
263
+ ;; took: 0.504859137 ms, 0.000504859137 ms per iteration
264
+ ;; took: 0.49425609 ms, 0.00049425609 ms per iteration
265
+ ;; took: 0.499983229 ms, 0.000499983229 ms per iteration
266
+ ;; took: 0.497676601 ms, 0.000497676601 ms per iteration
267
+ ;; took: 0.50095158 ms, 0.00050095158 ms per iteration
268
+ ;; took: 0.497156536 ms, 0.000497156536 ms per iteration
269
+ ;; took: 0.501644945 ms, 0.000501644945 ms per iteration
270
+ ;; took: 0.49730586 ms, 0.00049730586 ms per iteration
271
+ ;; total 4.986044022, average 0.49860440219999996 per run
272
+ ;; ================================================
273
+
274
+ ;; ================================================
275
+ ;; Benchmark: sig opt 4 - 10 runs of 5000 iterations each
276
+ ;; took: 0.550266175 ms, 0.000110053235 ms per iteration
277
+ ;; took: 0.538462067 ms, 0.0001076924134 ms per iteration
278
+ ;; took: 0.542079009 ms, 0.0001084158018 ms per iteration
279
+ ;; took: 0.53964453 ms, 0.000107928906 ms per iteration
280
+ ;; took: 0.536724566 ms, 0.00010734491319999999 ms per iteration
281
+ ;; took: 0.577451092 ms, 0.0001154902184 ms per iteration
282
+ ;; took: 0.544880157 ms, 0.00010897603140000001 ms per iteration
283
+ ;; took: 0.549302216 ms, 0.0001098604432 ms per iteration
284
+ ;; took: 0.540363939 ms, 0.0001080727878 ms per iteration
285
+ ;; took: 0.545993756 ms, 0.0001091987512 ms per iteration
286
+ ;; total 5.465167506999999, average 0.5465167506999999 per run
287
+ ;; ================================================
288
+ ;; sig opt 4 : total 5.465167506999999, average 0.5465167506999999 per run
289
+ ;; sig opt 3 : total 4.986044022, average 0.49860440219999996 per run
290
+ ;; sig opt 2 : total 5.181041512, average 0.5181041512 per run
291
+ ;; sig opt 1 : total 5.458436572, average 0.5458436572 per run
292
+ ;; nil
293
+
294
+
295
+ ;; ================================================
296
+ ;; Benchmark: sig opt 1 - 10 runs of 100000 iterations each
297
+ ;; took: 0.538973581 ms, 5.38973581e-06 ms per iteration
298
+ ;; took: 0.531348816 ms, 5.3134881599999994e-06 ms per iteration
299
+ ;; took: 0.565600737 ms, 5.65600737e-06 ms per iteration
300
+ ;; took: 0.534819684 ms, 5.34819684e-06 ms per iteration
301
+ ;; took: 0.536657152 ms, 5.36657152e-06 ms per iteration
302
+ ;; took: 0.52856209 ms, 5.2856209e-06 ms per iteration
303
+ ;; took: 0.528734358 ms, 5.28734358e-06 ms per iteration
304
+ ;; took: 0.526918027 ms, 5.26918027e-06 ms per iteration
305
+ ;; took: 0.532292993 ms, 5.32292993e-06 ms per iteration
306
+ ;; took: 0.534837871 ms, 5.34837871e-06 ms per iteration
307
+ ;; total 5.358745308999999, average 0.5358745308999999 per run
308
+ ;; ================================================
309
+
310
+ ;; ================================================
311
+ ;; Benchmark: sig opt 2 - 10 runs of 100000 iterations each
312
+ ;; took: 0.515825533 ms, 5.15825533e-06 ms per iteration
313
+ ;; took: 0.512412581 ms, 5.12412581e-06 ms per iteration
314
+ ;; took: 0.515675872 ms, 5.15675872e-06 ms per iteration
315
+ ;; took: 0.519812429 ms, 5.19812429e-06 ms per iteration
316
+ ;; took: 0.515804433 ms, 5.15804433e-06 ms per iteration
317
+ ;; took: 0.515844402 ms, 5.1584440200000005e-06 ms per iteration
318
+ ;; took: 0.512207609 ms, 5.12207609e-06 ms per iteration
319
+ ;; took: 0.513890528 ms, 5.13890528e-06 ms per iteration
320
+ ;; took: 0.515194419 ms, 5.151944189999999e-06 ms per iteration
321
+ ;; took: 0.513272453 ms, 5.13272453e-06 ms per iteration
322
+ ;; total 5.149940259, average 0.5149940259 per run
323
+ ;; ================================================
324
+
325
+ ;; ================================================
326
+ ;; Benchmark: sig opt 3 - 10 runs of 1000 iterations each
327
+ ;; took: 0.494206291 ms, 0.000494206291 ms per iteration
328
+ ;; took: 0.490103847 ms, 0.000490103847 ms per iteration
329
+ ;; took: 0.551380196 ms, 0.0005513801959999999 ms per iteration
330
+ ;; took: 0.491522228 ms, 0.000491522228 ms per iteration
331
+ ;; took: 0.498186612 ms, 0.000498186612 ms per iteration
332
+ ;; took: 0.490628694 ms, 0.0004906286939999999 ms per iteration
333
+ ;; took: 0.496565118 ms, 0.000496565118 ms per iteration
334
+ ;; took: 0.491208812 ms, 0.000491208812 ms per iteration
335
+ ;; took: 0.494697483 ms, 0.000494697483 ms per iteration
336
+ ;; took: 0.492709838 ms, 0.000492709838 ms per iteration
337
+ ;; total 4.991209119, average 0.49912091189999996 per run
338
+ ;; ================================================
339
+ ;; sig opt 3 : total 4.991209119, average 0.49912091189999996 per run
340
+ ;; sig opt 2 : total 5.149940259, average 0.5149940259 per run
341
+ ;; sig opt 1 : total 5.358745308999999, average 0.5358745308999999 per run
342
+
343
+
3
344
  ;; (def bm-cond ()
4
345
  ;; (if (< 3 5) "less" "more"))
5
346
 
@@ -147,8 +488,11 @@
147
488
  ;; (for i 1 10
148
489
  ;; (pre-compile (dox-src rbs))))
149
490
 
150
- ;; (def bm-sym-lex-lex-lex () (with (a 1 b 2 c 3) (+ a b c)))
151
- ;; (def bm-sym-lex-lit-lex () (with (a 1 c 3) (+ a 2 c)))
491
+ ;; (def bm-cond-and ()
492
+ ;; (with (even? λn(eq? (mod n 2) 0)
493
+ ;; triple? λn(eq? (mod n 3) 0)
494
+ ;; big? λn(> n 10))
495
+ ;; (select (andify even? triple? big?) (range -10 31))))
152
496
 
153
497
  ;; (def bm-hash-fill ()
154
498
  ;; (with (h {} v1 1 v2 2 v3 3 v4 4 v5 5 v6 6)
@@ -183,23 +527,6 @@
183
527
  ;; (z 0) (z 1) (z 2) (z 3) (z 4) (z 5) (z 6) (z 7) (z 8) (z 9)
184
528
  ;; (z 0) (z 1) (z 2) (z 3) (z 4) (z 5) (z 6) (z 7) (z 8) (z 9)))
185
529
 
186
- (in-private
187
- (def bm-no-closures ()
188
- (list λ(+ 1 2)
189
- λ(+ 1 2)
190
- λ(+ 1 2)
191
- λ(+ 1 2)
192
- λ(+ 1 2)
193
- λ(+ 1 2)
194
- λ(+ 1 2)
195
- λ(+ 1 2)
196
- λ(+ 1 2)
197
- λ(+ 1 2)))
198
-
199
- (def bm-cons () (cons 'a 'b))
200
- (def bm-type-of () (type-of 'a)))
201
-
202
-
203
530
 
204
531
  ;; ================================================
205
532
  ;; Benchmark: string concatenation - 10 runs of 20000 iterations each
@@ -216,18 +543,6 @@
216
543
  ;; total 7.228159722999999, average 0.7228159722999999 per run
217
544
  ;; ================================================
218
545
  ;; string concatenation : total 7.228159722999999, average 0.7228159722999999 per run
219
- ;; (def bm-string-concat ()
220
- ;; (+
221
- ;; (+ "this" "that" "another")
222
- ;; (+ "this" "that" "another")
223
- ;; (+ "this" "that" "another")
224
- ;; (+ "this" "that" "another")
225
- ;; (+ "this" "that" "another")
226
- ;; (+ "this" "that" "another")
227
- ;; (+ "this" "that" "another")
228
- ;; (+ "this" "that" "another")
229
- ;; (+ "this" "that" "another")
230
- ;; (+ "this" "that" "another")))
231
546
 
232
547
 
233
548
  ;; ================================================
@@ -246,20 +561,73 @@
246
561
  ;; ================================================
247
562
  ;; random string : total 6.954955385999999, average 0.6954955385999999 per run
248
563
 
249
- ;; (def bm-random-string ()
250
- ;; (list (random-string)
251
- ;; (random-string)
252
- ;; (random-string)
253
- ;; (random-string)
254
- ;; (random-string)
255
- ;; (random-string)
256
- ;; (random-string)
257
- ;; (random-string)
258
- ;; (random-string)
259
- ;; (random-string)))
260
564
 
565
+
566
+ (def bm-setup ()
567
+ (def bm-map-range () (with (a 1 b 10) (map (fn (n) (apply + (range 0 n))) (range a b))))
568
+
569
+ (def bm-accum () (accum a (each b (range 1 10) (a b))))
570
+
571
+ (def bm-sym-lex-lex-lex () (with (a 1 b 2 c 3) (+ a b c)))
572
+
573
+ (def bm-sym-lex-lit-lex () (with (a 1 c 3) (+ a 2 c)))
574
+
575
+ (def bm-conditionals ()
576
+ (with (a 1 b 2)
577
+ (list
578
+ (if (pair? a) (no a) a)
579
+ (if a (pair? a) t)
580
+ (if (and (pair? a) (no a) a)
581
+ (or a b)
582
+ (or b a))
583
+ (if a (pair? a) b))))
584
+
585
+ (in-private
586
+ (def bm-no-closures ()
587
+ (list λ(+ 1 2)
588
+ λ(+ 1 2)
589
+ λ(+ 1 2)
590
+ λ(+ 1 2)
591
+ λ(+ 1 2)
592
+ λ(+ 1 2)
593
+ λ(+ 1 2)
594
+ λ(+ 1 2)
595
+ λ(+ 1 2)
596
+ λ(+ 1 2)))
597
+
598
+ (def bm-cons () (cons 'a 'b))
599
+ (def bm-type-of () (type-of 'a)))
600
+
601
+
602
+ (def bm-string-concat ()
603
+ (+
604
+ (+ "this" "that" "another")
605
+ (+ "this" "that" "another")
606
+ (+ "this" "that" "another")
607
+ (+ "this" "that" "another")
608
+ (+ "this" "that" "another")
609
+ (+ "this" "that" "another")
610
+ (+ "this" "that" "another")
611
+ (+ "this" "that" "another")
612
+ (+ "this" "that" "another")
613
+ (+ "this" "that" "another")))
614
+
615
+ (def bm-random-string ()
616
+ (list (random-string)
617
+ (random-string)
618
+ (random-string)
619
+ (random-string)
620
+ (random-string)
621
+ (random-string)
622
+ (random-string)
623
+ (random-string)
624
+ (random-string)
625
+ (random-string)))
626
+
627
+ (assign bm-setup noop))
628
+
629
+ ;; used in benchmarking
261
630
  (def bm-repeat (f n)
262
- ; used in benchmarking
263
631
  (for b 1 n (f)))
264
632
 
265
633
  (def bm (desc f repeats iterations)
@@ -279,9 +647,10 @@
279
647
 
280
648
 
281
649
  (def rbs (name)
650
+ (bm-setup)
282
651
  (let summary nil
283
- ;; (push (bm "random string " bm-random-string 10 20000) summary)
284
- ;; (push (bm "string concatenation " bm-string-concat 10 20000) summary)
652
+ (push (bm "random string " bm-random-string 10 20000) summary)
653
+ (push (bm "string concatenation " bm-string-concat 10 20000) summary)
285
654
  ;; (push (bm "type-of " bm-type-of 10 20000) summary)
286
655
  ;; (push (bm "accum " bm-acc 10 500) summary)
287
656
  ;; (push (bm "accum " bm-facc 10 500) summary)
@@ -294,8 +663,12 @@
294
663
  ;; (push (bm "optimise DO forms " bm-faster-do 10 10000) summary)
295
664
  ;; (push (bm "length of string " bm-len-str 10 40000) summary)
296
665
  ;; (push (bm "length of pair " bm-len-pair 10 10000) summary)
297
- ;; (push (bm "sig opt 1" bm-sym-lex-lex-lex 10 100000) summary)
298
- ;; (push (bm "sig opt 2" bm-sym-lex-lit-lex 10 100000) summary)
666
+ (push (bm "sig opt 1" bm-sym-lex-lex-lex 10 100000) summary)
667
+ (push (bm "sig opt 2" bm-sym-lex-lit-lex 10 100000) summary)
668
+ (push (bm "sig opt 3" bm-map-range 10 1000) summary)
669
+ (push (bm "sig opt 4" bm-accum 10 5000) summary)
670
+ ;; (push (bm "sig cond and" bm-cond-and 10 800) summary)
671
+ (push (bm "sig conditionals" bm-conditionals 10 25000) summary)
299
672
  ;; (push (bm "hashing" bm-hash-fill 10 5000) summary)
300
673
  ;; (push (bm "length of hash " bm-len-hash 10 15000) summary)
301
674
  ;; (push (bm "length of uncountable " bm-len-fn 10 50000) summary)
@@ -0,0 +1,5 @@
1
+ (examples-for empty-arg-list
2
+ ("empty rest args is really empty"
3
+ (let f (fn args args)
4
+ (apply f nil))
5
+ nil))
@@ -4,4 +4,4 @@
4
4
  triple? λn(eq? (mod n 3) 0)
5
5
  big? λn(> n 10))
6
6
  (select (andify even? triple? big?) (range -10 31)))
7
- (12 18 24 30)))
7
+ (12 18 24 30)))
@@ -2,4 +2,9 @@
2
2
  ("builds a hash from the existing lexical context"
3
3
  (with (a 1 b 2 c 3)
4
4
  (to-string (auto-hash a b c)))
5
- "{a=>1, b=>2, c=>3}"))
5
+ "{:a=>1, :b=>2, :c=>3}")
6
+
7
+ ("builds a hash using # prefix-syntax"
8
+ (with (d 2 e 4 f 6)
9
+ (to-string #(d e f)))
10
+ "{:d=>2, :e=>4, :f=>6}"))
@@ -26,7 +26,7 @@
26
26
  { i 2 size 7 }
27
27
  { i 3 size 4 }
28
28
  { i 4 size 5 }))
29
- "{i=>2, size=>7}")
29
+ "{:i=>2, :size=>7}")
30
30
 
31
31
  ("finds maximum of list of numbers"
32
32
  (best > '(3 5 4 7 8 2))
@@ -7,7 +7,7 @@
7
7
  (mac make-make-op (opname op)
8
8
  `(mac ,opname (name n . body)
9
9
  `(mac ,name (x)
10
- `(',',,op ,,n ,x))))
10
+ `(,',',op ,,n ,x))))
11
11
 
12
12
  (make-make-op make-mult *)
13
13
  (make-make-op make-plus +)