Performance Awareness
Preallocate Vector
Fill Known Size
When the output size is known, preparing the vector shape before filling it keeps intent clear.
Program
Play the script to change the planned length and watch the filled total update.
preallocate_vector.R
Replay: real traced execution (multi-file project)
item_count <- 3
result <- numeric(item_count)
result <- seq_len(item_count) * 2
total <- sum(result)
label <- paste("sum", total, sep = ":")
cat(label, "\n", sep = "")
item_count <- 2
result <- numeric(item_count)
result <- seq_len(item_count) * 2
total <- sum(result)
label <- paste("sum", total, sep = ":")
cat(label, "\n", sep = "")
item_count <- 4
result <- numeric(item_count)
result <- seq_len(item_count) * 2
total <- sum(result)
label <- paste("sum", total, sep = ":")
cat(label, "\n", sep = "")
item_count ← 3
1item_count <- 32result <- numeric(item_count)values this step3item_countresult ← 0, 0, 0
1item_count <- 32result <- numeric(item_count)3result <- seq_len(item_count) * 2values this step0, 0, 0result3item_countresult ← 2, 4, 6
2result <- numeric(item_count)3result <- seq_len(item_count) * 24total <- sum(result)values this step2, 4, 6result3item_counttotal ← 12
3result <- seq_len(item_count) * 24total <- sum(result)5label <- paste("sum", total, sep = ":")values this step12total2, 4, 6resultlabel ← sum:12
4total <- sum(result)5label <- paste("sum", total, sep = ":")6cat(label, "\n", sep = "")values this stepsum:12label12totalcat(label, " ", sep = "")
5label <- paste("sum", total, sep = ":")6cat(label, "\n", sep = "")outputsum:12values this stepsum:12label
item_count ← 2
1item_count <- 22result <- numeric(item_count)values this step2item_countresult ← 0, 0
1item_count <- 22result <- numeric(item_count)3result <- seq_len(item_count) * 2values this step0, 0result2item_countresult ← 2, 4
2result <- numeric(item_count)3result <- seq_len(item_count) * 24total <- sum(result)values this step2, 4result2item_counttotal ← 6
3result <- seq_len(item_count) * 24total <- sum(result)5label <- paste("sum", total, sep = ":")values this step6total2, 4resultlabel ← sum:6
4total <- sum(result)5label <- paste("sum", total, sep = ":")6cat(label, "\n", sep = "")values this stepsum:6label6totalcat(label, " ", sep = "")
5label <- paste("sum", total, sep = ":")6cat(label, "\n", sep = "")outputsum:6values this stepsum:6label
item_count ← 4
1item_count <- 42result <- numeric(item_count)values this step4item_countresult ← 0, 0, 0, 0
1item_count <- 42result <- numeric(item_count)3result <- seq_len(item_count) * 2values this step0, 0, 0, 0result4item_countresult ← 2, 4, 6, 8
2result <- numeric(item_count)3result <- seq_len(item_count) * 24total <- sum(result)values this step2, 4, 6, 8result4item_counttotal ← 20
3result <- seq_len(item_count) * 24total <- sum(result)5label <- paste("sum", total, sep = ":")values this step20total2, 4, 6, 8resultlabel ← sum:20
4total <- sum(result)5label <- paste("sum", total, sep = ":")6cat(label, "\n", sep = "")values this stepsum:20label20totalcat(label, " ", sep = "")
5label <- paste("sum", total, sep = ":")6cat(label, "\n", sep = "")outputsum:20values this stepsum:20label
known size
The selected count defines the output length before values are filled.
preallocation
`numeric(item_count)` creates a vector of the intended size.
filled vector
Replacing the zeros with computed values models a predictable fill step.