lambdaclass / cairo-vm

cairo-vm is a Rust implementation of the Cairo VM. Cairo (CPU Algebraic Intermediate Representation) is a programming language for writing provable programs, where one party can prove to another that a certain computation was executed correctly without the need for this party to re-execute the same program.
https://lambdaclass.github.io/cairo-vm
Apache License 2.0
518 stars 148 forks source link

Change ec_op_impl() to use ProjectivePoint. #1531

Closed fmoletta closed 10 months ago

fmoletta commented 10 months ago

TITLE

Description

Description of the pull request changes and motivation.

Checklist

codecov[bot] commented 10 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

:exclamation: No coverage uploaded for pull request base (releases/0.8.x@3e38d9e). Click here to learn what that means.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## releases/0.8.x #1531 +/- ## ================================================= Coverage ? 97.53% ================================================= Files ? 92 Lines ? 37544 Branches ? 0 ================================================= Hits ? 36618 Misses ? 926 Partials ? 0 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Oppen commented 10 months ago

The CHANGELOG needs updating I think.

Oppen commented 10 months ago

Benchmark results (v0.8.3 vs branch with projective points):

Running ../cairo_programs/benchmarks/big_factorial.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_factorial.json
  Time (mean ± σ):      1.961 s ±  0.009 s    [User: 1.824 s, System: 0.136 s]
  Range (min … max):    1.946 s …  1.972 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_factorial.json
  Time (mean ± σ):      1.881 s ±  0.011 s    [User: 1.735 s, System: 0.145 s]
  Range (min … max):    1.868 s …  1.898 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_factorial.json ran
    1.04 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_factorial.json
Running ../cairo_programs/benchmarks/big_fibonacci.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_fibonacci.json
  Time (mean ± σ):      1.712 s ±  0.046 s    [User: 1.566 s, System: 0.145 s]
  Range (min … max):    1.686 s …  1.842 s    10 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_fibonacci.json
  Time (mean ± σ):      1.628 s ±  0.012 s    [User: 1.476 s, System: 0.150 s]
  Range (min … max):    1.607 s …  1.648 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_fibonacci.json ran
    1.05 ± 0.03 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/big_fibonacci.json
Running ../cairo_programs/benchmarks/blake2s_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/blake2s_integration_benchmark.json
  Time (mean ± σ):      5.722 s ±  0.025 s    [User: 5.386 s, System: 0.332 s]
  Range (min … max):    5.666 s …  5.748 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/blake2s_integration_benchmark.json
  Time (mean ± σ):      5.444 s ±  0.030 s    [User: 5.091 s, System: 0.350 s]
  Range (min … max):    5.403 s …  5.511 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/blake2s_integration_benchmark.json ran
    1.05 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/blake2s_integration_benchmark.json
Running ../cairo_programs/benchmarks/compare_arrays_200000.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/compare_arrays_200000.json
  Time (mean ± σ):      1.899 s ±  0.007 s    [User: 1.744 s, System: 0.153 s]
  Range (min … max):    1.884 s …  1.909 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/compare_arrays_200000.json
  Time (mean ± σ):      1.861 s ±  0.029 s    [User: 1.705 s, System: 0.155 s]
  Range (min … max):    1.839 s …  1.915 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/compare_arrays_200000.json ran
    1.02 ± 0.02 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/compare_arrays_200000.json
Running ../cairo_programs/benchmarks/dict_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/dict_integration_benchmark.json
  Time (mean ± σ):      1.269 s ±  0.003 s    [User: 1.182 s, System: 0.086 s]
  Range (min … max):    1.265 s …  1.273 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/dict_integration_benchmark.json
  Time (mean ± σ):      1.261 s ±  0.003 s    [User: 1.165 s, System: 0.096 s]
  Range (min … max):    1.257 s …  1.265 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/dict_integration_benchmark.json ran
    1.01 ± 0.00 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/dict_integration_benchmark.json
Running ../cairo_programs/benchmarks/factorial_multirun.json benchmark

Running ../cairo_programs/benchmarks/fibonacci_1000_multirun.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/fibonacci_1000_multirun.json
  Time (mean ± σ):      1.672 s ±  0.007 s    [User: 1.531 s, System: 0.140 s]
  Range (min … max):    1.662 s …  1.685 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/fibonacci_1000_multirun.json
  Time (mean ± σ):      1.602 s ±  0.009 s    [User: 1.469 s, System: 0.132 s]
  Range (min … max):    1.591 s …  1.617 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/fibonacci_1000_multirun.json ran
    1.04 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/fibonacci_1000_multirun.json
Running ../cairo_programs/benchmarks/field_arithmetic_get_square_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/field_arithmetic_get_square_benchmark.json
  Time (mean ± σ):     934.3 ms ±   4.2 ms    [User: 883.4 ms, System: 50.0 ms]
  Range (min … max):   928.5 ms … 940.4 ms    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/field_arithmetic_get_square_benchmark.json
  Time (mean ± σ):     885.5 ms ±   7.3 ms    [User: 842.4 ms, System: 42.3 ms]
  Range (min … max):   873.6 ms … 896.4 ms    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/field_arithmetic_get_square_benchmark.json ran
    1.06 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/field_arithmetic_get_square_benchmark.json
Running ../cairo_programs/benchmarks/integration_builtins.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/integration_builtins.json
  Time (mean ± σ):      5.235 s ±  0.054 s    [User: 4.921 s, System: 0.310 s]
  Range (min … max):    5.173 s …  5.353 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/integration_builtins.json
  Time (mean ± σ):      4.854 s ±  0.060 s    [User: 4.531 s, System: 0.319 s]
  Range (min … max):    4.770 s …  4.934 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/integration_builtins.json ran
    1.08 ± 0.02 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/integration_builtins.json
Running ../cairo_programs/benchmarks/keccak_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/keccak_integration_benchmark.json
  Time (mean ± σ):      5.901 s ±  0.050 s    [User: 5.531 s, System: 0.366 s]
  Range (min … max):    5.833 s …  5.999 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/keccak_integration_benchmark.json
  Time (mean ± σ):      5.506 s ±  0.059 s    [User: 5.150 s, System: 0.352 s]
  Range (min … max):    5.461 s …  5.663 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/keccak_integration_benchmark.json ran
    1.07 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/keccak_integration_benchmark.json

Running ../cairo_programs/benchmarks/linear_search.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/linear_search.json
  Time (mean ± σ):      1.879 s ±  0.033 s    [User: 1.721 s, System: 0.156 s]
  Range (min … max):    1.864 s …  1.971 s    10 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/linear_search.json
  Time (mean ± σ):      1.849 s ±  0.008 s    [User: 1.693 s, System: 0.154 s]
  Range (min … max):    1.841 s …  1.868 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/linear_search.json ran
    1.02 ± 0.02 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/linear_search.json
Running ../cairo_programs/benchmarks/math_cmp_and_pow_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_cmp_and_pow_integration_benchmark.json
  Time (mean ± σ):      1.261 s ±  0.002 s    [User: 1.145 s, System: 0.115 s]
  Range (min … max):    1.258 s …  1.264 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_cmp_and_pow_integration_benchmark.json
  Time (mean ± σ):      1.234 s ±  0.003 s    [User: 1.108 s, System: 0.125 s]
  Range (min … max):    1.230 s …  1.240 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_cmp_and_pow_integration_benchmark.json ran
    1.02 ± 0.00 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_cmp_and_pow_integration_benchmark.json
Running ../cairo_programs/benchmarks/math_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_integration_benchmark.json
  Time (mean ± σ):      1.196 s ±  0.006 s    [User: 1.097 s, System: 0.097 s]
  Range (min … max):    1.191 s …  1.205 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_integration_benchmark.json
  Time (mean ± σ):      1.193 s ±  0.005 s    [User: 1.098 s, System: 0.094 s]
  Range (min … max):    1.187 s …  1.205 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_integration_benchmark.json ran
    1.00 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/math_integration_benchmark.json
Running ../cairo_programs/benchmarks/memory_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/memory_integration_benchmark.json
  Time (mean ± σ):      1.071 s ±  0.001 s    [User: 0.980 s, System: 0.090 s]
  Range (min … max):    1.069 s …  1.073 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/memory_integration_benchmark.json
  Time (mean ± σ):      1.041 s ±  0.005 s    [User: 0.952 s, System: 0.088 s]
  Range (min … max):    1.037 s …  1.055 s    10 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/memory_integration_benchmark.json ran
    1.03 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/memory_integration_benchmark.json

Running ../cairo_programs/benchmarks/operations_with_data_structures_benchmarks.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/operations_with_data_structures_benchmarks.json
  Time (mean ± σ):      1.197 s ±  0.012 s    [User: 1.104 s, System: 0.091 s]
  Range (min … max):    1.165 s …  1.206 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/operations_with_data_structures_benchmarks.json
  Time (mean ± σ):      1.196 s ±  0.025 s    [User: 1.095 s, System: 0.100 s]
  Range (min … max):    1.180 s …  1.267 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/operations_with_data_structures_benchmarks.json ran
    1.00 ± 0.02 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/operations_with_data_structures_benchmarks.json
Running ../cairo_programs/benchmarks/pedersen.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/pedersen.json
  Time (mean ± σ):     420.9 ms ±   2.4 ms    [User: 401.1 ms, System: 19.3 ms]
  Range (min … max):   417.5 ms … 423.1 ms    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/pedersen.json
  Time (mean ± σ):     414.4 ms ±   1.4 ms    [User: 394.6 ms, System: 19.3 ms]
  Range (min … max):   412.8 ms … 417.5 ms    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/pedersen.json ran
    1.02 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/pedersen.json
Running ../cairo_programs/benchmarks/poseidon_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/poseidon_integration_benchmark.json
  Time (mean ± σ):     809.6 ms ±   2.3 ms    [User: 777.6 ms, System: 31.3 ms]
  Range (min … max):   806.4 ms … 812.8 ms    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/poseidon_integration_benchmark.json
  Time (mean ± σ):     800.0 ms ±   2.3 ms    [User: 766.4 ms, System: 33.0 ms]
  Range (min … max):   796.6 ms … 803.9 ms    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/poseidon_integration_benchmark.json ran
    1.01 ± 0.00 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/poseidon_integration_benchmark.json
Running ../cairo_programs/benchmarks/secp_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/secp_integration_benchmark.json
  Time (mean ± σ):      1.514 s ±  0.004 s    [User: 1.447 s, System: 0.066 s]
  Range (min … max):    1.508 s …  1.522 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/secp_integration_benchmark.json
  Time (mean ± σ):      1.461 s ±  0.005 s    [User: 1.393 s, System: 0.067 s]
  Range (min … max):    1.453 s …  1.469 s    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/secp_integration_benchmark.json ran
    1.04 ± 0.00 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/secp_integration_benchmark.json
Running ../cairo_programs/benchmarks/set_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/set_integration_benchmark.json
  Time (mean ± σ):     837.5 ms ±   4.9 ms    [User: 805.8 ms, System: 31.0 ms]
  Range (min … max):   831.8 ms … 845.5 ms    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/set_integration_benchmark.json
  Time (mean ± σ):     824.6 ms ±   8.2 ms    [User: 794.9 ms, System: 29.0 ms]
  Range (min … max):   815.0 ms … 844.0 ms    10 runs

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/set_integration_benchmark.json ran
    1.02 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/set_integration_benchmark.json

Running ../cairo_programs/benchmarks/uint256_integration_benchmark.json benchmark
Benchmark 1: ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/uint256_integration_benchmark.json
  Time (mean ± σ):      3.505 s ±  0.023 s    [User: 3.297 s, System: 0.204 s]
  Range (min … max):    3.478 s …  3.557 s    10 runs

Benchmark 2: ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/uint256_integration_benchmark.json
  Time (mean ± σ):      3.324 s ±  0.026 s    [User: 3.111 s, System: 0.210 s]
  Range (min … max):    3.309 s …  3.395 s    10 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  ./0.8.3_pp --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/uint256_integration_benchmark.json ran
    1.05 ± 0.01 times faster than ./0.8.3 --proof_mode --memory_file /dev/null --trace_file /dev/null --layout starknet_with_keccak ../cairo_programs/benchmarks/uint256_integration_benchmark.json