Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quick benchmark for pysmt #304

Open
karmacoma-eth opened this issue Jun 6, 2024 · 1 comment
Open

Quick benchmark for pysmt #304

karmacoma-eth opened this issue Jun 6, 2024 · 1 comment
Labels
enhancement New feature or request

Comments

@karmacoma-eth
Copy link
Collaborator

karmacoma-eth commented Jun 6, 2024

Do a quick comparison for a given trace of z3 ops including simplify with the equivalent pysmt api. We want to see if this can lower our overhead.

Some extra context: every bytecode operates on symbolic operand, i.e. Z3 objects. Everything that is put on the EVM stack is a Z3 object. That's a lot of Z3 objects. We suspect this contributes significantly to our overhead. For instance:

PUSH1 1
PUSH1 2
ADD

will result in the following objects on the stack:

  • [BitVec(1, 256)]
  • [BitVec(1, 256), BitVec(2, 256)]
  • [BitVec(3, 256)]

It would be great to investigate if manipulating pysmt objects is any more efficient than Z3 objects.

@karmacoma-eth karmacoma-eth added the enhancement New feature or request label Jun 6, 2024
@karmacoma-eth
Copy link
Collaborator Author

side questions: are z3 objects costly in general, or are some objects more costly than others?

  • concat
  • extract
  • zeroext
  • uninterpreted functions
  • arrays
  • ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant