diff --git a/src/net/torvald/terrarum/CircularArray.kt b/src/net/torvald/terrarum/CircularArray.kt index 1452f6cb6..a84ce0777 100644 --- a/src/net/torvald/terrarum/CircularArray.kt +++ b/src/net/torvald/terrarum/CircularArray.kt @@ -27,11 +27,21 @@ class CircularArray(val size: Int) { } fun forEach(action: (T) -> Unit) { - if (tail >= head) { // queue not full + /*if (tail >= head) { // queue not full (head..tail - 1).map { buffer[it] }.forEach { action(it) } } else { // queue full (0..size - 1).map { buffer[(it + head) % size] }.forEach { action(it) } + }*/ + + // has slightly better iteration performance than lambda + if (tail >= head) { + for (i in head..tail - 1) + action(buffer[i]) + } + else { + for (i in 0..size - 1) + action(buffer[(i + head) % size]) } }