Optimize Util#sequence

This commit is contained in:
IzzelAliz 2021-12-13 21:57:07 +08:00
parent 03877441bd
commit aba187d46e
No known key found for this signature in database
GPG Key ID: EE50E123A11D8338
2 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,29 @@
package io.izzel.arclight.common.mixin.optimization.general;
import net.minecraft.Util;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@Mixin(Util.class)
public class UtilMixin_Optimize {
/**
* @author IzzelAliz
* @reason original method allocates tons of garbage
*/
@Overwrite
public static <V> CompletableFuture<List<V>> sequence(List<? extends CompletableFuture<? extends V>> futures) {
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
.thenApply(v -> {
var list = new ArrayList<V>(futures.size());
for (CompletableFuture<? extends V> future : futures) {
list.add(future.join());
}
return list;
});
}
}

View File

@ -8,6 +8,7 @@
"ClassInheritanceMultiMapMixin",
"EntityDataManagerMixin_Optimize",
"MobMixin_Optimization",
"UtilMixin_Optimize",
"VoxelShapesMixin",
"activationrange.ActivationRangeMixin",
"activationrange.EntityMixin_ActivationRange",