|
1 | 1 | using DynamicExpressions, BenchmarkTools, Random
|
| 2 | +using DynamicExpressions: copy_node |
2 | 3 | using SymbolicRegression: gen_random_tree_fixed_size, Options
|
3 | 4 |
|
4 | 5 | const v_PACKAGE_VERSION = try
|
|
81 | 82 |
|
82 | 83 | function benchmark_utilities()
|
83 | 84 | suite = BenchmarkGroup()
|
84 |
| - for func in [simplify_tree, combine_operators] |
85 |
| - suite[string(func)] = let s = BenchmarkGroup() |
86 |
| - options = Options(; binary_operators=[+, -, /, *], unary_operators=[cos, exp]) |
87 |
| - #! format: off |
88 |
| - nfeatures = 5 |
89 |
| - s["break_topology"] = @benchmarkable( |
90 |
| - $(func)(tree, $options.operators), |
91 |
| - evals=300, |
92 |
| - samples=300, |
93 |
| - seconds=10.0, |
94 |
| - setup=( |
95 |
| - n=20; |
96 |
| - tree=gen_random_tree_fixed_size(n, $options, $nfeatures, Float32) |
97 |
| - ) |
98 |
| - ) |
99 |
| - if v_PACKAGE_VERSION >= v"0.6.1" |
100 |
| - s["preserve_topology"] = @benchmarkable( |
101 |
| - $(func)(tree, $options.operators; preserve_topology=true), |
| 85 | + options = Options(; binary_operators=[+, -, /, *], unary_operators=[cos, exp]) |
| 86 | + for func_k in ("copy", "convert", "simplify_tree", "combine_operators") |
| 87 | + suite[func_k] = let s = BenchmarkGroup() |
| 88 | + for k in ("break_topology", "preserve_topology") |
| 89 | + f = if func_k == "copy" |
| 90 | + tree -> copy_node(tree; preserve_topology=(k == "preserve_topology")) |
| 91 | + elseif func_k == "convert" |
| 92 | + if v_PACKAGE_VERSION >= v"0.6.1" |
| 93 | + tree -> convert( |
| 94 | + Node{Float64}, |
| 95 | + tree; |
| 96 | + preserve_topology=(k == "preserve_topology"), |
| 97 | + ) |
| 98 | + else |
| 99 | + tree -> convert(Node{Float64}, tree) |
| 100 | + end |
| 101 | + elseif func_k == "simplify_tree" |
| 102 | + if v_PACKAGE_VERSION >= v"0.6.1" |
| 103 | + tree -> simplify_tree( |
| 104 | + tree, |
| 105 | + options.operators; |
| 106 | + preserve_topology=(k == "preserve_topology"), |
| 107 | + ) |
| 108 | + else |
| 109 | + tree -> simplify_tree(tree, options.operators) |
| 110 | + end |
| 111 | + elseif func_k == "combine_operators" |
| 112 | + if v_PACKAGE_VERSION >= v"0.6.1" |
| 113 | + tree -> combine_operators( |
| 114 | + tree, |
| 115 | + options.operators; |
| 116 | + preserve_topology=(k == "preserve_topology"), |
| 117 | + ) |
| 118 | + else |
| 119 | + tree -> combine_operators(tree, options.operators) |
| 120 | + end |
| 121 | + end |
| 122 | + |
| 123 | + #! format: off |
| 124 | + s[k] = @benchmarkable( |
| 125 | + $(f)(tree), |
102 | 126 | evals=300,
|
103 | 127 | samples=300,
|
104 | 128 | seconds=10.0,
|
105 | 129 | setup=(
|
106 | 130 | n=20;
|
107 |
| - tree=gen_random_tree_fixed_size(n, $options, $nfeatures, Float32) |
| 131 | + tree=gen_random_tree_fixed_size(n, $options, 5, Float32) |
108 | 132 | )
|
109 | 133 | )
|
| 134 | + #! format: on |
110 | 135 | end
|
111 |
| - #! format: on |
112 | 136 | s
|
113 | 137 | end
|
114 | 138 | end
|
|
0 commit comments