diff --git a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/BootstrapMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/BootstrapMixin.java new file mode 100644 index 00000000..a3ef7818 --- /dev/null +++ b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/BootstrapMixin.java @@ -0,0 +1,31 @@ +package org.embeddedt.modernfix.mixin.feature.measure_time; + +import com.google.common.base.Stopwatch; +import net.minecraft.util.registry.Bootstrap; +import org.apache.logging.log4j.Logger; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.concurrent.TimeUnit; + +@Mixin(Bootstrap.class) +public class BootstrapMixin { + @Shadow @Final private static Logger LOGGER; + private static Stopwatch startWatch; + @Inject(method = "bootStrap", at = @At(value = "FIELD", opcode = Opcodes.PUTSTATIC, target = "Lnet/minecraft/util/registry/Bootstrap;isBootstrapped:Z", ordinal = 0)) + private static void recordStartTime(CallbackInfo ci) { + startWatch = Stopwatch.createStarted(); + } + @Inject(method = "bootStrap", at = @At("RETURN")) + private static void printStartTime(CallbackInfo ci) { + if(startWatch != null && startWatch.isRunning()) { + startWatch.stop(); + LOGGER.info("Vanilla bootstrap took " + startWatch.elapsed(TimeUnit.MILLISECONDS) + " milliseconds"); + } + } +} diff --git a/src/main/resources/modernfix.mixins.json b/src/main/resources/modernfix.mixins.json index 1adf5d8d..63f2e8bd 100644 --- a/src/main/resources/modernfix.mixins.json +++ b/src/main/resources/modernfix.mixins.json @@ -24,7 +24,8 @@ "perf.sync_executor_sleep.SyncExecutorMixin", "perf.compress_biome_container.MixinBiomeContainer", "perf.nuke_empty_chunk_sections.MixinChunk", - "perf.cache_blockstate_cache_arrays.AbstractBlockStateCacheMixin" + "perf.cache_blockstate_cache_arrays.AbstractBlockStateCacheMixin", + "feature.measure_time.BootstrapMixin" ], "client": [ "feature.measure_time.MinecraftMixin",