AztecProtocol / barretenberg

Apache License 2.0
133 stars 81 forks source link

Barretenberg compilation time #573

Open codygunton opened 1 year ago

codygunton commented 1 year ago

We have been working to address the time needed to compile Barretenberg (eg #572).

We have analyzed compilation using: https://github.com/aras-p/ClangBuildAnalyzer. Cloning this into cpp/ and building it there, the "magic command" to produce a build analysis is: rm -rf build && cmake --preset clang15 -DCMAKE_CXX_FLAGS="-ftime-trace" && cmake --build --preset clang15 && ./ClangBuildAnalyzer/build/ClangBuildAnalyzer --all build artifacts && ./ClangBuildAnalyzer/build/ClangBuildAnalyzer --analyze artifacts > build-analysis

Here is the compilation analysis at the moment:

Analyzing build trace from 'artifacts'...
**** Time summary:
Compilation (642 times):
  Parsing (frontend):         1265.6 s
  Codegen & opts (backend):    722.4 s

**** Files that took longest to parse (compiler frontend):
 18015 ms: build/src/barretenberg/ecc/CMakeFiles/ecc_test_objects.dir/curves/bn254/pairing.test.cpp.o
 10985 ms: build/src/barretenberg/honk/CMakeFiles/honk_test_objects.dir/sumcheck/sumcheck.test.cpp.o
  8946 ms: build/src/barretenberg/honk/CMakeFiles/honk_objects.dir/proof_system/ultra_prover.cpp.o
  8913 ms: build/src/barretenberg/stdlib/recursion/CMakeFiles/stdlib_recursion_test_objects.dir/verifier/verifier_turbo.test.cpp.o
  8806 ms: build/src/barretenberg/stdlib/recursion/CMakeFiles/stdlib_recursion_test_objects.dir/verifier/verifier.test.cpp.o
  8767 ms: build/src/barretenberg/stdlib/primitives/CMakeFiles/stdlib_primitives_test_objects.dir/bigfield/bigfield.test.cpp.o
  8644 ms: build/src/barretenberg/honk/CMakeFiles/honk_test_objects.dir/sumcheck/sumcheck_round.test.cpp.o
  8542 ms: build/src/barretenberg/honk/CMakeFiles/honk_objects.dir/proof_system/ultra_verifier.cpp.o
  8439 ms: build/src/barretenberg/honk/CMakeFiles/honk_test_objects.dir/sumcheck/polynomials/multivariates.test.cpp.o
  8326 ms: build/src/barretenberg/honk/CMakeFiles/honk_objects.dir/proof_system/prover.cpp.o

**** Files that took longest to codegen (compiler backend):
 25369 ms: build/src/barretenberg/stdlib/recursion/CMakeFiles/stdlib_recursion_test_objects.dir/verifier/verifier.test.cpp.o
 21986 ms: build/src/barretenberg/ecc/CMakeFiles/ecc_test_objects.dir/curves/secp256k1/secp256k1.test.cpp.o
 20581 ms: build/src/barretenberg/ecc/CMakeFiles/ecc_test_objects.dir/curves/secp256r1/secp256r1.test.cpp.o
 17696 ms: build/src/barretenberg/stdlib/encryption/ecdsa/CMakeFiles/stdlib_ecdsa_test_objects.dir/ecdsa.test.cpp.o
 16405 ms: build/src/barretenberg/stdlib/primitives/CMakeFiles/stdlib_primitives_test_objects.dir/biggroup/biggroup.test.cpp.o
 15335 ms: build/src/barretenberg/stdlib/recursion/CMakeFiles/stdlib_recursion_test_objects.dir/verifier/verifier_turbo.test.cpp.o
 14227 ms: build/src/barretenberg/stdlib/primitives/CMakeFiles/stdlib_primitives_test_objects.dir/bigfield/bigfield.test.cpp.o
 11733 ms: build/src/barretenberg/solidity_helpers/CMakeFiles/stdlib_solidity_helpers_objects.dir/key_gen.cpp.o
 11625 ms: build/src/barretenberg/crypto/ecdsa/CMakeFiles/crypto_ecdsa_test_objects.dir/ecdsa.test.cpp.o
 11483 ms: build/src/barretenberg/solidity_helpers/CMakeFiles/stdlib_solidity_helpers_objects.dir/proof_gen.cpp.o

**** Templates that took longest to instantiate:
 11772 ms: proof_system::honk::flavor::create_relation_univariates_container<ba... (32 times, avg 367 ms)
 11060 ms: proof_system::plonk::widget::GenericVerifierWidget<barretenberg::fie... (78 times, avg 141 ms)
 10934 ms: proof_system::plonk::widget::PlookupArithmeticKernel<barretenberg::f... (78 times, avg 140 ms)
  7875 ms: std::reverse_iterator<std::_Bit_iterator> (280 times, avg 28 ms)
  7637 ms: proof_system::honk::flavor::create_relation_univariates_container<ba... (32 times, avg 238 ms)
  7018 ms: std::reverse_iterator<std::_Bit_const_iterator> (280 times, avg 25 ms)
  6165 ms: std::vector<plookup::MultiTable>::operator= (146 times, avg 42 ms)
  6043 ms: std::vector<proof_system::UltraCircuitBuilder::RomTranscript>::opera... (146 times, avg 41 ms)
  5185 ms: proof_system::honk::flavor::create_relation_univariates_container<ba... (32 times, avg 162 ms)
  4941 ms: std::vector<plookup::BasicTable>::operator= (146 times, avg 33 ms)
  4814 ms: numeric::uintx<numeric::uint256_t>::operator% (254 times, avg 18 ms)
  4788 ms: numeric::uintx<numeric::uint256_t>::divmod (254 times, avg 18 ms)
  4432 ms: testing::internal::ValueArray<bool, bool>::operator ParamGenerator<b... (121 times, avg 36 ms)
  4119 ms: barretenberg::field<barretenberg::Bn254FrParams>::batch_invert (308 times, avg 13 ms)
  4058 ms: proof_system::honk::flavor::create_relation_univariates_container<ba... (32 times, avg 126 ms)
  4037 ms: std::vector<proof_system::UltraCircuitBuilder::RamTranscript>::opera... (146 times, avg 27 ms)
  3816 ms: barretenberg::field2<barretenberg::field<crypto::pedersen::sidon::Si... (1 times, avg 3816 ms)
  3815 ms: barretenberg::field<crypto::pedersen::sidon::SidonFqParams<1019>>::one (1 times, avg 3815 ms)
  3815 ms: barretenberg::field<crypto::pedersen::sidon::SidonFqParams<1019>>::f... (1 times, avg 3815 ms)
  3814 ms: barretenberg::field<crypto::pedersen::sidon::SidonFqParams<1019>>::s... (1 times, avg 3814 ms)
  3792 ms: proof_system::honk::flavor::create_relation_univariates_container<ba... (35 times, avg 108 ms)
  3743 ms: std::_Rb_tree<std::basic_string<char>, std::pair<const std::basic_st... (326 times, avg 11 ms)
  3597 ms: proof_system::honk::flavor::create_relation_values_container<barrete... (32 times, avg 112 ms)
  3341 ms: std::unordered_map<int, int> (276 times, avg 12 ms)
  3293 ms: testing::ValuesIn<std::vector<bool>> (121 times, avg 27 ms)
  3264 ms: testing::ValuesIn<std::_Bit_const_iterator> (121 times, avg 26 ms)
  3182 ms: RecursiveCircuit<proof_system::UltraCircuitBuilder>::generate (4 times, avg 795 ms)
  3127 ms: RecursiveCircuit<proof_system::UltraCircuitBuilder>::create_outer_ci... (4 times, avg 781 ms)
  2999 ms: std::sort<__gnu_cxx::__normal_iterator<proof_system::UltraCircuitBui... (146 times, avg 20 ms)
  2981 ms: std::__sort<__gnu_cxx::__normal_iterator<proof_system::UltraCircuitB... (146 times, avg 20 ms)

**** Template sets that took longest to instantiate:
 27934 ms: std::__and_<$> (27116 times, avg 1 ms)
 24455 ms: std::__or_<$> (32614 times, avg 0 ms)
 19780 ms: std::vector<$> (7593 times, avg 2 ms)
 19534 ms: std::copy<$> (9494 times, avg 2 ms)
 17151 ms: std::tuple<$> (2097 times, avg 8 ms)
 16694 ms: testing::internal::TypeParameterizedTest<$>::Register (307 times, avg 54 ms)
 15837 ms: std::__copy_move_a<$> (8373 times, avg 1 ms)
 15565 ms: proof_system::honk::flavor::create_relation_univariates_container<$> (67 times, avg 232 ms)
 15252 ms: std::__uninitialized_copy_a<$> (5518 times, avg 2 ms)
 15115 ms: testing::internal::TestFactoryImpl<$>::CreateTest (765 times, avg 19 ms)
 15088 ms: std::reverse_iterator<$> (568 times, avg 26 ms)
 14939 ms: std::vector<$>::emplace_back<$> (3070 times, avg 4 ms)
 14709 ms: std::unique_ptr<$> (1013 times, avg 14 ms)
 14409 ms: std::_Destroy<$> (6850 times, avg 2 ms)
 14379 ms: proof_system::plonk::widget::GenericVerifierWidget<$>::compute_quoti... (742 times, avg 19 ms)
 14191 ms: std::vector<$>::vector (3332 times, avg 4 ms)
 13763 ms: std::uninitialized_copy<$> (5107 times, avg 2 ms)
 13562 ms: std::vector<$>::_M_realloc_insert<$> (3817 times, avg 3 ms)
 11833 ms: std::__uniq_ptr_data<$> (1013 times, avg 11 ms)
 11701 ms: std::__uniq_ptr_impl<$> (1013 times, avg 11 ms)
 11588 ms: proof_system::plonk::widget::PlookupArithmeticKernel<$>::compute_non... (89 times, avg 130 ms)
 11521 ms: std::is_nothrow_copy_constructible<$> (10067 times, avg 1 ms)
 11507 ms: proof_system::honk::sumcheck::BarycentricData<$> (45 times, avg 255 ms)
 11131 ms: std::vector<$>::~vector (3479 times, avg 3 ms)
 10694 ms: std::pair<$> (4389 times, avg 2 ms)
 10386 ms: std::__niter_base<$> (8393 times, avg 1 ms)
 10255 ms: std::_Vector_base<$> (7435 times, avg 1 ms)
 10105 ms: std::tuple_cat<$> (524 times, avg 19 ms)
  9990 ms: std::_Tuple_impl<$> (2032 times, avg 4 ms)
  9821 ms: std::_Rb_tree<$>::_M_erase (1354 times, avg 7 ms)

**** Functions that took longest to compile:
  1107 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp)
  1065 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/solidity_helpers/key_gen.cpp)
   556 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.test.cpp)
   552 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp)
   547 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp)
   529 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp)
   476 ms: test_secp256r1::secp256r1_eq_Test::TestBody() (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp)
   472 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp)
   464 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/solidity_helpers/key_gen.cpp)
   458 ms: test_secp256k1::secp256k1_eq_Test::TestBody() (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.test.cpp)
   455 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/solidity_helpers/proof_gen.cpp)
   414 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/solidity_helpers/key_gen.cpp)
   395 ms: test_secp256k1::secp256k1_add_exception_test_infinity_Test::TestBody() (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/secp256k1.test.cpp)
   371 ms: test_secp256r1::secp256r1_add_exception_test_infinity_Test::TestBody() (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp)
   294 ms: barretenberg::group_elements::element<barretenberg::field<secp256k1:... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/non_native_group_generator.cpp)
   288 ms: barretenberg::group_elements::element<barretenberg::field<secp256k1:... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/secp256k1/c_bind.cpp)
   283 ms: barretenberg::group_elements::element<barretenberg::field<secp256k1:... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.cpp)
   260 ms: void proof_system::honk::sumcheck::AuxiliaryRelationBase<barretenber... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/honk/sumcheck/relations/ultra_relation_consistency.test.cpp)
   240 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp)
   238 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/encryption/ecdsa/ecdsa.test.cpp)
   238 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp)
   236 ms: proof_system::honk_relation_tests::UltraRelationConsistency_Auxiliar... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/honk/sumcheck/relations/ultra_relation_consistency.test.cpp)
   233 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/recursion/verifier/verifier.test.cpp)
   233 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.cpp)
   220 ms: proof_system::plonk::stdlib::element<proof_system::UltraCircuitBuild... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/primitives/biggroup/biggroup.test.cpp)
   218 ms: proof_system::plonk::VerifierPermutationWidget<barretenberg::field<b... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/plonk/proof_system/proving_key/proving_key.test.cpp)
   213 ms: test_grumpkin::grumpkin_eq_Test::TestBody() (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/grumpkin/grumpkin.test.cpp)
   212 ms: testing::internal::ExecDeathTest::AssumeRole() (/mnt/user-data/cody/barretenberg/cpp/build/_deps/gtest-src/googletest/src/gtest-all.cc)
   209 ms: test_secp256r1::secp256r1_add_mixed_add_consistency_check_Test::Test... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/secp256r1/secp256r1.test.cpp)
   208 ms: proof_system::TurboCircuitBuilder::create_logic_constraint(unsigned ... (/mnt/user-data/cody/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/turbo_circuit_builder.cpp)

**** Function sets that took longest to compile / optimize:
 12322 ms: testing::internal::TypeParameterizedTest<$>::Register(char const*, t... (794 times, avg 15 ms)
  7280 ms: proof_system::plonk::stdlib::element<$>::lookup_table_plookup<$>::lo... (30 times, avg 242 ms)
  7016 ms: proof_system::plonk::VerifierPermutationWidget<$>::compute_quotient_... (76 times, avg 92 ms)
  6597 ms: proof_system::plonk::VerifierPlookupWidget<$>::compute_quotient_eval... (76 times, avg 86 ms)
  2752 ms: numeric::uintx<$>::divmod(numeric::uintx<$> const&) const (127 times, avg 21 ms)
  2302 ms: barretenberg::group_elements::element<$>::self_dbl() (81 times, avg 28 ms)
  2264 ms: barretenberg::field<$>::field(int) (241 times, avg 9 ms)
  2134 ms: barretenberg::field<$>::invert() const (195 times, avg 10 ms)
  2077 ms: barretenberg::group_elements::element<barretenberg::field<secp256k1:... (11 times, avg 188 ms)
  2044 ms: proof_system::plonk::stdlib::bigfield<$>::unsafe_evaluate_multiply_a... (26 times, avg 78 ms)
  1922 ms: proof_system::plonk::stdlib::bigfield<$>::unsafe_evaluate_multiple_m... (20 times, avg 96 ms)
  1802 ms: testing::internal::SuiteApiResolver<$>::GetSetUpCaseOrSuite(char con... (888 times, avg 2 ms)
  1734 ms: proof_system::plonk::stdlib::element<$>::batch_lookup_table_plookup<... (6 times, avg 289 ms)
  1652 ms: testing::internal::SuiteApiResolver<$>::GetTearDownCaseOrSuite(char ... (888 times, avg 1 ms)
  1357 ms: testing::internal::TestFactoryImpl<$>::CreateTest() (1519 times, avg 0 ms)
  1208 ms: std::__cxx11::basic_string<$>::_M_replace(unsigned long, unsigned lo... (187 times, avg 6 ms)
  1160 ms: proof_system::CircuitBuilderBase<$>::CircuitBuilderBase(std::vector<... (83 times, avg 13 ms)
  1085 ms: barretenberg::group_elements::element<barretenberg::field<barretenbe... (36 times, avg 30 ms)
  1054 ms: barretenberg::field<$>::field(numeric::uint256_t const&) (209 times, avg 5 ms)
   992 ms: proof_system::plonk::stdlib::recursion::aggregation_state<$> proof_s... (8 times, avg 124 ms)
   977 ms: proof_system::CircuitBuilderBase<$>::add_variable(barretenberg::fiel... (109 times, avg 8 ms)
   941 ms: barretenberg::group_elements::element<$>::mul_with_endomorphism(barr... (47 times, avg 20 ms)
   894 ms: std::array<$> proof_system::plonk::stdlib::element<$>::create_group_... (34 times, avg 26 ms)
   840 ms: proof_system::plonk::stdlib::bigfield<$>::conditional_negate(proof_s... (18 times, avg 46 ms)
   831 ms: numeric::uintx<numeric::uint256_t>::operator>>(unsigned long) const (107 times, avg 7 ms)
   822 ms: numeric::uintx<numeric::uint256_t>::operator<<(unsigned long) const (107 times, avg 7 ms)
   817 ms: std::__cxx11::basic_string<$>::_M_mutate(unsigned long, unsigned lon... (190 times, avg 4 ms)
   817 ms: barretenberg::field<$> proof_system::plonk::compute_public_input_del... (77 times, avg 10 ms)
   808 ms: std::vector<$>::~vector() (485 times, avg 1 ms)
   806 ms: proof_system::plonk::stdlib::element<$>::multiple_montgomery_ladder(... (15 times, avg 53 ms)

**** Expensive headers:
201919 ms: /mnt/user-data/cody/barretenberg/cpp/src/barretenberg/ecc/curves/bn254/fr.hpp (included 243 times, avg 830 ms), included via:
  bit_array.cpp.o bit_array.hpp uint.hpp bool.hpp witness.hpp  (2294 ms)
  blake2s.test.cpp.o blake2s.hpp byte_array.hpp bool.hpp witness.hpp  (2204 ms)
  c_bind_new.cpp.o c_bind.hpp  (2115 ms)
  multivariates.test.cpp.o  (2095 ms)
  power_polynomial.test.cpp.o power_polynomial.hpp polynomial.hpp evaluation_domain.hpp  (2077 ms)
  evaluation_domain.cpp.o evaluation_domain.hpp  (2076 ms)
  ...

160715 ms: /mnt/user-data/cody/barretenberg/cpp/src/barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp (included 146 times, avg 1100 ms), included via:
  ultra_circuit_builder.test.cpp.o  (3587 ms)
  ultra_circuit_builder.cpp.o  (3207 ms)
  ultra_composer.test.cpp.o  (1832 ms)
  pedersen.bench.cpp.o pedersen.hpp byte_array.hpp safe_uint.hpp circuit_builders.hpp  (1728 ms)
  ram_table.test.cpp.o  (1408 ms)
  bigfield.test.cpp.o byte_array.hpp safe_uint.hpp circuit_builders.hpp  (1387 ms)
  ...

121709 ms: /mnt/user-data/cody/barretenberg/cpp/src/barretenberg/proof_system/plookup_tables/plookup_tables.hpp (included 147 times, avg 827 ms), included via:
  plookup_tables.cpp.o  (2791 ms)
  plookup.test.cpp.o plookup.hpp  (2618 ms)
  sha256_plookup.cpp.o sha256_plookup.hpp  (2589 ms)
  blake3s_plookup.cpp.o blake3s_plookup.hpp  (2588 ms)
  blake2s_plookup.cpp.o blake2s_plookup.hpp  (2579 ms)
  plookup.cpp.o plookup.hpp  (2426 ms)
  ...

109926 ms: /mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders.hpp (included 83 times, avg 1324 ms), included via:
  comparison.cpp.o  (3412 ms)
  logic.cpp.o  (3371 ms)
  logic.cpp.o  (3243 ms)
  comparison.cpp.o  (3218 ms)
  arithmetic.cpp.o  (3198 ms)
  arithmetic.cpp.o  (3050 ms)
  ...

101693 ms: /usr/include/c++/10/string (included 304 times, avg 334 ms), included via:
  ecdsa.test.cpp.o bigfield.hpp fq.hpp iomanip ios_base.h locale_classes.h  (692 ms)
  bit_array.cpp.o bit_array.hpp uint.hpp bool.hpp witness.hpp fr.hpp iomanip ios_base.h locale_classes.h  (647 ms)
  transcript_wrappers.cpp.o transcript_wrappers.hpp transcript.hpp manifest.hpp  (612 ms)
  verifier_turbo.test.cpp.o verifier.hpp fq12.hpp field12.hpp engine.hpp uint128.hpp iomanip ios_base.h locale_classes.h  (603 ms)
  file_crs_factory.cpp.o file_crs_factory.hpp bn254.hpp fr.hpp iomanip ios_base.h locale_classes.h  (586 ms)
  evaluation_domain.cpp.o evaluation_domain.hpp fr.hpp iomanip ios_base.h locale_classes.h  (580 ms)
  ...

98364 ms: /mnt/user-data/cody/barretenberg/cpp/build/_deps/gtest-src/googletest/include/gtest/gtest.h (included 121 times, avg 812 ms), included via:
  verification_key.test.cpp.o test.hpp  (2355 ms)
  compute_nullifier.test.cpp.o  (2150 ms)
  membership.test.cpp.o  (2147 ms)
  serialize.test.cpp.o  (2065 ms)
  group.test.cpp.o  (1996 ms)
  ram_table.test.cpp.o  (1978 ms)
  ...

92207 ms: /usr/include/c++/10/iomanip (included 268 times, avg 344 ms), included via:
  bit_array.cpp.o bit_array.hpp uint.hpp bool.hpp witness.hpp fr.hpp  (1223 ms)
  ecdsa.test.cpp.o bigfield.hpp fq.hpp  (1164 ms)
  verifier_turbo.test.cpp.o verifier.hpp fq12.hpp field12.hpp engine.hpp uint128.hpp  (963 ms)
  evaluation_domain.cpp.o evaluation_domain.hpp fr.hpp  (912 ms)
  prover.cpp.o prover.hpp shplonk.hpp claim.hpp polynomial.hpp evaluation_domain.hpp fr.hpp  (883 ms)
  power_polynomial.test.cpp.o power_polynomial.hpp polynomial.hpp evaluation_domain.hpp fr.hpp  (877 ms)
  ...

86326 ms: /mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/primitives/byte_array/byte_array.hpp (included 102 times, avg 846 ms), included via:
  blake2s.test.cpp.o blake2s.hpp  (3643 ms)
  blake2s.cpp.o blake2s.hpp  (3333 ms)
  blake3s.cpp.o blake3s.hpp  (3287 ms)
  byte_array.cpp.o  (3191 ms)
  blake3s.test.cpp.o blake3s.hpp  (3161 ms)
  pedersen.bench.cpp.o pedersen.hpp  (1881 ms)
  ...

80892 ms: /mnt/user-data/cody/barretenberg/cpp/src/barretenberg/stdlib/primitives/safe_uint/safe_uint.hpp (included 105 times, avg 770 ms), included via:
  safe_uint.cpp.o  (3477 ms)
  pedersen.bench.cpp.o pedersen.hpp byte_array.hpp  (1851 ms)
  bigfield.test.cpp.o byte_array.hpp  (1484 ms)
  membership.test.cpp.o merkle_tree.hpp hash_path.hpp hash.hpp blake2s.hpp byte_array.hpp  (1441 ms)
  sha256.test.cpp.o sha256.hpp uint.hpp byte_array.hpp  (1400 ms)
  nullifier_memory_tree.test.cpp.o nullifier_memory_tree.hpp hash.hpp blake2s.hpp byte_array.hpp  (1399 ms)
  ...

80249 ms: /usr/include/c++/10/algorithm (included 292 times, avg 274 ms), included via:
  sha256.bench.cpp.o benchmark.h  (1084 ms)
  polynomials.bench.cpp.o benchmark.h  (1028 ms)
  external.bench.cpp.o benchmark.h  (1011 ms)
  barycentric_data.test.cpp.o barycentric_data.hpp  (892 ms)
  sumcheck_round.test.cpp.o sumcheck_round.hpp log.hpp  (545 ms)
  verifier.cpp.o throw_or_abort.hpp log.hpp  (513 ms)
  ...

  done in 0.4s.
codygunton commented 4 months ago

Suspected major culprits at the moment: transcript is all in a header; zeromorph is all in a header; new Univariate template parameter; use of MANY different tuple types in relations.