|
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