noir-optimize-acir
Workflow for measuring and optimizing the ACIR circuit size of a constrained Noir program. Use when asked to optimize a Noir program's gate count or circuit size.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Workflow for measuring and optimizing the ACIR circuit size of a constrained Noir program. Use when asked to optimize a Noir program's gate count or circuit size.
How to use
Przygotuj projekt Noir. Jeśli to projekt binarny, upewnij się, że można go skompilować za pomocą nargo compile. Jeśli to biblioteka, oznacz funkcje, które chcesz mierzyć, dekoratorem #[export].
Ustaw punkt odniesienia. Dla projektów binarnych uruchom nargo compile && bb gates -b ./target/
.json i zanotuj wartości circuit_size oraz acir_opcodes. Dla bibliotek użyj nargo export && bb gates -b ./export/ .json. Te liczby będą Twoją bazą porównawczą. Zastosuj jedną zmianę na raz. Może to być zmiana algorytmu, redukcja liczby operacji, czy inny sposób napisania kodu. Nigdy nie zmieniaj kilku rzeczy jednocześnie — nie będziesz wiedzieć, która zmiana faktycznie pomogła.
Ponownie skompiluj i zmierz wyniki. Uruchom te same komendy co w kroku 2 i porównaj nowe wartości circuit_size z punktem odniesienia. Priorytet: circuit_size wpływa na czas dowodzenia, który zwykle jest wąskim gardłem.
Cofnij zmianę, jeśli nie pomogła. Jeśli circuit_size wzrósł lub pozostał taki sam, wycofaj zmianę. Zapisz tylko te, które zmniejszyły rozmiar obwodu.
Powtarzaj proces. Kontynuuj iteracyjnie: zmiana → pomiar → decyzja (zatrzymaj lub cofnij) → następna zmiana. Prowadź dziennik zmian i ich wpływu na metryki.