SymbolicML / DynamicExpressions.jl

Ridiculously fast symbolic expressions
https://symbolicml.org/DynamicExpressions.jl/dev
Apache License 2.0
90 stars 11 forks source link

Build full interface to SymbolicUtils.jl #42

Closed MilesCranmer closed 4 months ago

MilesCranmer commented 12 months ago

This is to use the simplification utilities directly on the Node type, rather than needing to convert back and forth.

coveralls commented 12 months ago

Pull Request Test Coverage Report for Build 5319738782


Changes Missing Coverage Covered Lines Changed/Added Lines %
src/EquationUtils.jl 0 4 0.0%
src/Utils.jl 0 4 0.0%
src/SelfContainedEquation.jl 0 34 0.0%
ext/DynamicExpressionsSymbolicUtilsExt.jl 0 40 0.0%
<!-- Total: 3 85 3.53% -->
Totals Coverage Status
Change from base Build 5308064791: -6.3%
Covered Lines: 951
Relevant Lines: 1143

💛 - Coveralls
github-actions[bot] commented 12 months ago

Benchmark Results

master c12d5a7672a7a7... t[master]/t[c12d5a7672a7a7...]
eval/ComplexF32/evaluation 10.7 ± 0.68 ms 10.6 ± 0.66 ms 1.01
eval/ComplexF64/evaluation 12.7 ± 0.86 ms 12.4 ± 0.87 ms 1.02
eval/Float32/derivative 17 ± 2.5 ms 1.28 ± 0.03 s 0.0133
eval/Float32/derivative_turbo 19.7 ± 2.4 ms 24.3 ± 2.5 ms 0.809
eval/Float32/evaluation 3.65 ± 0.28 ms 3.61 ± 0.29 ms 1.01
eval/Float32/evaluation_turbo 0.883 ± 0.07 ms 0.878 ± 0.047 ms 1.01
eval/Float64/derivative 21 ± 0.69 ms 1.22 ± 0.0047 s 0.0172
eval/Float64/derivative_turbo 24.6 ± 0.72 ms 30.5 ± 0.67 ms 0.809
eval/Float64/evaluation 3.74 ± 0.3 ms 3.73 ± 0.29 ms 1
eval/Float64/evaluation_turbo 1.35 ± 0.086 ms 1.33 ± 0.081 ms 1.02
time_to_load 1.79 ± 0.027 s 1.99 ± 0.0052 s 0.901
utils/combine_operators 0.0609 ± 0.0036 ms 0.0836 ± 0.004 ms 0.728
utils/convert/break_sharing 0.0511 ± 0.0055 ms 0.0505 ± 0.0061 ms 1.01
utils/convert/preserve_sharing 0.233 ± 0.0083 ms 0.235 ± 0.011 ms 0.991
utils/copy/break_sharing 0.0497 ± 0.0047 ms 0.0494 ± 0.0043 ms 1.01
utils/copy/preserve_sharing 0.234 ± 0.007 ms 0.234 ± 0.0084 ms 1
utils/count_constants 25.9 ± 0.7 μs 26.2 ± 0.8 μs 0.989
utils/count_depth 28.2 ± 0.7 μs 28.8 ± 0.7 μs 0.979
utils/count_nodes 25.4 ± 0.8 μs 25.3 ± 0.8 μs 1
utils/get_set_constants! 0.103 ± 0.0022 ms 0.106 ± 0.0027 ms 0.974
utils/has_constants 7.23 ± 0.38 μs 7.23 ± 0.4 μs 1
utils/has_operators 1.9 ± 0.06 μs 1.91 ± 0.05 μs 0.995
utils/index_constants 0.0802 ± 0.0042 ms 0.0846 ± 0.0052 ms 0.948
utils/is_constant 7.88 ± 0.65 μs 7.61 ± 0.76 μs 1.04
utils/simplify_tree 0.177 ± 0.016 ms 0.102 ± 0.01 ms 1.74
utils/string_tree 0.367 ± 0.0097 ms 0.341 ± 0.0091 ms 1.08

Benchmark Plots

A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR. Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).

MilesCranmer commented 4 months ago

SymbolicUtils.jl requires n-ary operators allowed whereas DynamicExpressions.jl is only up to 2-ary. Thus, this sadly seems not possible. Closing.