# Повторная потребляемая materialization / Материализация растущего префикса

RuleID: performance.repeated-consumed-materialization@1.0.0
Status: recovery-required
Catalog snapshot: 4558458d

Accepted subset is bounded. If required evidence is incomplete, the affected result is unknown.

## V-PERF-03 — Повторная потребляемая materialization

Материализация полностью потребляемого промежуточного результата на каждом шаге может многократно копировать растущий объём данных.

Status: recovery-required

Scope notes: Source producer требует восстановления и квалификации. Если необходимые факты не получены, результат — unknown, а не «ошибки нет».

### Before (illustrative)

```swift
for chunk in chunks {
    output = Array(output + chunk)
}
```

### After (illustrative)

```swift
var output: [Element] = []
for chunk in chunks { output.append(contentsOf: chunk) }
```

Boundary: View/sharing/discarded result не physical copy

## V-PERF-11 — Материализация растущего префикса

Потребление всех растущих prefixes даёт суммарный объём порядка n², даже если каждый отдельный prefix выглядит дешёвым.

Status: recovery-required

Scope notes: Source producer требует восстановления и квалификации. Если необходимые факты не получены, результат — unknown, а не «ошибки нет».

### Before (illustrative)

```swift
for end in 1...items.count {
    consume(Array(items.prefix(end)))
}
```

### After (illustrative)

```swift
// Передавать только delta, если consumer допускает:
for item in items { consumeNext(item) }
```

Boundary: Sharing и builder; += не универсальный признак quadratic cost

---
Language: ru
Canonical: https://docs.swift-analyzer.com/catalog/performance.repeated-consumed-materialization/
Source revision: 4558458d
