Skip to content

Vedlegg I — Ytelse og optimalisering

Formål

Mål før du optimaliserer, og koble ytelsespåstander til AVR-instruksjoner og ressurser.

Måleverdier

  • instruksjonssykluser og kjøretid;
  • interrupt-latency og ISR-varighet;
  • Flash-størrelse;
  • statisk SRAM-bruk;
  • stack-bruk;
  • peripheral-throughput;
  • energi/effekt bare når det er fysisk målt.

Cycle-analyse

Bruk timing fra instruksjonssettet sammen med den faktiske kontrollflytbanen. Branches, kall, minneaksesser og flerbyte-operasjoner har betydning.

C kontra assembler

Sammenlign ekvivalent oppførsel, ikke kunstige snippets. Registrer compiler-versjon/options og inspiser generert assembler. Håndskrevet assembler er verdifullt når det øker forståelsen eller oppfyller et målt krav, ikke fordi det antas å være raskere.

Optimaliseringseksperiment

Bygg én øvelse med flere optimization levels. Registrer Flash/SRAM, disassembly og målt/modellert timing. Forklar semantiske endringer som skyldes undefined behavior separat fra legitim optimalisering.

Interrupts

Mål den verste relevante banen, ikke bare gjennomsnittlig kjøretid. Lange ISR-er kan påvirke latency andre steder.

Regel

Oppgi for hvert tall om det er beregnet, simulert eller fysisk målt.