Przejdź do treści
Biblioteka skilli
AI i agenci · Przegląd i audyt

binary-size

/binary-size

Analizuje i zmniejsza rozmiar binariów ExecuTorch, przy badaniu rozmiaru, testach rozmiaru i optymalizacji środowiska uruchomieniowego pod urządzenia o ograniczonych zasobach.

Repozytorium
executorch ↗
Licencja
BSD-3-Clause
Ostatnia zmiana repozytorium
27.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 27.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

BSD-3-Clause, otwarta.

Co robi i kiedy

Analizuje i zmniejsza rozmiar binariów ExecuTorch, przy badaniu rozmiaru, testach rozmiaru i optymalizacji środowiska uruchomieniowego pod urządzenia o ograniczonych zasobach.

Oryginalny opis (EN)

Analyze and reduce ExecuTorch binary size. Use when investigating binary size, running size tests, or optimizing the runtime for size-constrained deployments.

Jak działa

  1. Start from the main branch of executorch
  2. Build and measure baseline
  3. Analyze with bloaty
  4. Key build flags
  5. Constraints
  6. Where to look for size reductions
  7. For each change
Sekcje z nagłówków SKILL.md, w oryginale · 69 linii, 401 słów
Podgląd SKILL.md
---
name: binary-size
description: Analyze and reduce ExecuTorch binary size. Use when investigating binary size, running size tests, or optimizing the runtime for size-constrained deployments.
---

# Binary Size

## Start from the `main` branch of executorch
Ask the user where the executorch repo is.

```bash
git checkout main && git pull
```

## Build and measure baseline
```bash
conda activate executorch
bash test/build_size_test.sh
strip -o /tmp/size_test_stripped cmake-out/test/size_test
strip -o /tmp/size_test_all_ops_stripped cmake-out/test/size_test_all_ops
ls -la /tmp/size_test_stripped /tmp/size_test_all_ops_stripped
```

Produces two binaries:
- `cmake-out/test/size_test` — ExecuTorch runtime without operator implementations
- `cmake-out/test/size_test_all_ops` — ExecuTorch runtime with portable ops

## Analyze with bloaty
```bash
bloaty cmake-out/test/size_test -d symbols -n 30   # by symbol
bloaty cmake-out/test/size_test -d sections        # by ELF section
bloaty <after> -- <before>                          # diff two builds
nm -S <binary> | sort -k2 -rn | head -30           # symbol sizes
strings <binary> | less                             # string literals in .rodata
```

Note: `bloaty -d compileunits` requires debug info (`-g`). The Release build does not include it.

## Key build flags
Set by `test/build_size_test.sh`:
- `CMAKE_BUILD_TYPE=Release`
- `EXECUTORCH_OPTIMIZE_SIZE=ON` — enables `-Os`, `-fno-exceptions`, `-fno-rtti`, unwind table suppression
- `CXXFLAGS="-fno-exceptions -fno-rtti -Wall -Werror"`

## Constraints
- Use **CMake** to build (not Buck)
- **C++17 minimum** language standard
- Must build on **GCC 9** (CI uses `executorch-ubuntu-22.04-gcc9-nopytorch`) and **Clang 12** — avoid compiler-specific flags or pragmas without version guards
- Do not regress existing functionality — run tests for modified files
- Do not change build flags in `build_size_test.sh` for size reductions
- Do not increase latency in the core runtime

## Where to look for size reductions
- `.text`: look for large functions, template bloat, duplicate instantiations
- `.rodata`: verbose error messages, format strings, embedded file paths (`__FILE__`)
- `.eh_frame`: should already be suppressed when `EXECUTORCH_OPTIMIZE_SIZE=ON`
- Static init functions (`nm -S <binary> | grep GLOBAL__sub_I`): use `constexpr` constructors to constant-initialize static arrays
- Logging strings: `ET_LOG_ENABLED=0` in Release eliminates format strings; ensure it propagates to consumers via `PUBLIC` compile definitions on cmake targets
- Inline header functions: watch for compile-define mismatches between library and consumer TUs (e.g. `ET_LOG_ENABLED` set in library but not in consumer)

## For each change
1. Create a branch: `git checkout -b binary-size-<N>`
2. Implement, rebuild, measure stripped sizes
3. Create a separate PR — one logical change per PR
4. Record results in `binary-size-<N>.md`:

| Binary | This change (N vs N-1) | Cumulative (N vs main) |
|---|---|---|
| `size_test` (stripped) | -X | -Y |
| `size_test_all_ops` (stripped) | -X | -Y |

5. Update the CI size threshold in `.github/workflows/pull.yml` if sizes decrease

Wersje

W bazie nie ma innych skilli o nazwie binary-size.

Migawka bazy z 13.11.2026 · wersja paczki 7e3d178bf9a6 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100binary-size-analysis
    Analizuje zmiany rozmiaru binarki biblioteki hermesvm w zakresie commitów i mierzy, jak poszczególne commity wpływają na regresję rozmiaru.
  • 90benchmark-model-runtime
    Porównuje środowiska uruchomieniowe modeli pod kątem opóźnień, przepustowości, pamięci, energii, czasu ładowania, rozmiaru i stabilności: Core AI, Core ML, MLX, ExecuTorch, PyTorch.
  • 100go-binary-size
    Zmniejsza rozmiar skompilowanych binariów Go i obrazów kontenerów: flagi linkera, budżet inliningu, CGO i tagi buildów, osadzone zasoby, waga zależności i pomiar, co kosztuje bajty.
  • 90esp32-binary-size-regression
    Pilnuje, by rozmiar binarki firmware ESP32 nie rósł bez kontroli, z ograniczeniami układu, analizą awarii i weryfikacją przed wydaniem.
  • 100executorch-kb
    Przeszukuje bazę wiedzy ExecuTorch o backendach QNN, XNNPACK, Vulkan, CoreML, Arm i Cadence, recepturach kwantyzacji, pułapkach eksportu, błędach runtime i zgodności SoC.
  • 100pr-review
    Sprawdza pull requesty w ExecuTorch pod kątem problemów, których CI nie wykryje, zwłaszcza przy zmianach w kodzie.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.