Skip to content

Conversation

@bbyalcinkaya
Copy link
Member

@bbyalcinkaya bbyalcinkaya commented Mar 13, 2025

This PR improves performance by embedding large configuration cells without variables directly into a Step. This prevents the substitution algorithm from needlessly traversing these large terms, leading to a 3x speedup in fuzzing.

The speedup was measured using the existing test suite, particularly the FxDAO tests. In cases where the initial state is larger—such as tests involving multiple contracts or bigger contracts—the performance improvement is even more significant.

While this optimization is effective, a more robust solution would be to extend the fuzz function from pyk with an optional parameter for custom substitution functions. This would allow direct manipulation of variables in the template without requiring a full tree traversal.

@bbyalcinkaya bbyalcinkaya changed the title Fuzzer optimization Optimize fuzzer by avoiding traversal of the whole configuration in term substitution Mar 13, 2025
@bbyalcinkaya bbyalcinkaya marked this pull request as ready for review March 14, 2025 16:42
@bbyalcinkaya bbyalcinkaya requested a review from gtrepta March 14, 2025 16:42
automergerpr-permission-manager bot added a commit to runtimeverification/k that referenced this pull request Mar 14, 2025
Replaces `top_down` with `bottom_up` to avoid redundant traversals in
replacement terms, improving performance for large terms. While
replacement terms are usually not large, this change enables an
optimization in komet that results in a 3x speedup.

The optimization in komet works by embedding large configuration cells
without variables directly into a replacement term. This prevents the
substitution algorithm from needlessly traversing these large terms,
significantly reducing overhead.
* runtimeverification/komet#69

Co-authored-by: automergerpr-permission-manager[bot] <190534181+automergerpr-permission-manager[bot]@users.noreply.github.com>
@bbyalcinkaya bbyalcinkaya removed the request for review from gtrepta April 14, 2025 07:19
@bbyalcinkaya bbyalcinkaya marked this pull request as draft April 14, 2025 07:19
@bbyalcinkaya
Copy link
Member Author

Closing in favor of #77

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants