# XO0914: a small list allocated and freed every iteration

Reported by `xo vet --cost`. Each list literal or with_capacity allocates; a small one made every iteration costs an allocation and a free each time. Keep the values in locals, or make one list before the loop and reuse it: std path's clean in eight locals instead of an offsets list ran in 0.927 of the time (knowledgebase/std-performance-guide.md 3).

## Example

```xo
fn sum(xs: List[Int]) -> Int {
  var t = 0
  for x in xs {
    let q = [x, x * 2]
    t += q[0] + q[1]
  }
  t
}
```

## Fix

```xo
fn sum(xs: List[Int]) -> Int {
  var t = 0
  for x in xs {
    let (a, b) = (x, x * 2)
    t += a + b
  }
  t
}
```

Run `xo explain XO0914` for this text in a terminal, or see
[section 10.6 of the specification](../../spec/core/#106-diagnostic-codes).

