Skip to content

Commit 84a99ed

Browse files
committed
Optimize loop over IntList
1 parent 6fbaca5 commit 84a99ed

File tree

3 files changed

+13
-9
lines changed
  • bukkit
    • src/main/kotlin/io/github/rothes/esu/bukkit/module/networkthrottle/entityculling
    • version/v1_18/src/main/kotlin/io/github/rothes/esu/bukkit/module/networkthrottle/chunkdatathrottle/v1_18
  • core/src/main/kotlin/io/github/rothes/esu/core/util/extension

3 files changed

+13
-9
lines changed

bukkit/src/main/kotlin/io/github/rothes/esu/bukkit/module/networkthrottle/entityculling/UserCullData.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import io.github.rothes.esu.bukkit.util.scheduler.Scheduler
77
import io.github.rothes.esu.bukkit.util.version.Versioned
88
import io.github.rothes.esu.bukkit.util.version.adapter.PlayerAdapter.Companion.connected
99
import io.github.rothes.esu.bukkit.util.version.adapter.TickThreadAdapter.Companion.checkTickThread
10+
import io.github.rothes.esu.core.util.extension.forEachInt
1011
import io.github.rothes.esu.core.util.extension.math.square
1112
import it.unimi.dsi.fastutil.Hash
1213
import it.unimi.dsi.fastutil.ints.Int2ReferenceOpenHashMap
@@ -59,10 +60,9 @@ class UserCullData(
5960

6061
fun onEntityRemove(entities: IntArrayList) {
6162
if (entities.isEmpty) return
62-
val iterator = entities.listIterator()
6363
synchronized(hiddenEntities) {
64-
while (iterator.hasNext()) {
65-
hiddenEntities.remove(iterator.nextInt())
64+
entities.forEachInt { i ->
65+
hiddenEntities.remove(i)
6666
}
6767
}
6868
}

bukkit/version/v1_18/src/main/kotlin/io/github/rothes/esu/bukkit/module/networkthrottle/chunkdatathrottle/v1_18/ChunkDataThrottleHandlerImpl.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import io.github.rothes.esu.bukkit.util.version.adapter.nms.ChunkSender
4343
import io.github.rothes.esu.bukkit.util.version.adapter.nms.LevelHandler
4444
import io.github.rothes.esu.bukkit.util.version.adapter.nms.PalettedContainerReader
4545
import io.github.rothes.esu.core.util.UnsafeUtils.usObjAccessor
46+
import io.github.rothes.esu.core.util.extension.forEachInt
4647
import it.unimi.dsi.fastutil.ints.IntArrayList
4748
import it.unimi.dsi.fastutil.longs.Long2ObjectMap
4849
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap
@@ -450,9 +451,7 @@ class ChunkDataThrottleHandlerImpl: ChunkDataThrottleHandler,
450451
if (z != 0 ) pending.add(id - 0x010)
451452
if (z != 15) pending.add(id + 0x010)
452453
}
453-
val iterator = pending.intIterator()
454-
while (iterator.hasNext()) {
455-
val i = iterator.nextInt()
454+
pending.forEachInt { i ->
456455
if (bvArr[i] and INVISIBLE == INVISIBLE) {
457456
invisible[i] = BV_INVISIBLE
458457
}
@@ -484,9 +483,7 @@ class ChunkDataThrottleHandlerImpl: ChunkDataThrottleHandler,
484483
checkBlock(id + 0x100, Y_MINUS)
485484
pending.add(id)
486485
}
487-
val iterator = pending.intIterator()
488-
while (iterator.hasNext()) {
489-
val i = iterator.nextInt()
486+
pending.forEachInt { i ->
490487
if (bvArr[i] and INVISIBLE == INVISIBLE) {
491488
invisible[i] = BV_INVISIBLE
492489
}

core/src/main/kotlin/io/github/rothes/esu/core/util/extension/Collections.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.github.rothes.esu.core.util.extension
22

3+
import it.unimi.dsi.fastutil.ints.IntList
4+
35
fun <T> listOfJvm(element: T): List<T> {
46
return ArrayList<T>(1).apply {
57
add(element)
@@ -19,4 +21,9 @@ inline fun <T, R> Collection<T>.mapJvm(transform: (T) -> R): List<R> {
1921
for (item in this)
2022
destination.add(transform(item))
2123
return destination
24+
}
25+
26+
inline fun IntList.forEachInt(action: (Int) -> Unit) {
27+
for (i in 0 until this.size)
28+
action(getInt(i))
2229
}

0 commit comments

Comments
 (0)