VulkanShader_1.21.10-0.0.4-alpha.jar
Download file
package net.vulkanmod.mixin.profiling;
import com.google.common.base.Stopwatch;
import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap;
import java.util.Map;
import java.util.OptionalLong;
import java.util.concurrent.TimeUnit;
import net.minecraft.class_7965;
import net.minecraft.class_7966;
import net.minecraft.class_7969;
import net.minecraft.class_8561;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@Mixin({class_8561.class})
public class GameLoadTimeEventM {
@Shadow
@Final
private Map<class_7969<class_8561.class_8562>, Stopwatch> field_44845;
@Shadow
@Final
private static Logger field_44843;
@Shadow
private OptionalLong field_44846;
public void send(class_7965 telemetryEventSender) {
Map<class_7969, class_8561.class_8562> measurements = new Reference2ReferenceOpenHashMap();
synchronized(this) {
this.field_44845.forEach((telemetryProperty, stopwatch) -> {
if (!stopwatch.isRunning()) {
long l = stopwatch.elapsed(TimeUnit.MILLISECONDS);
measurements.put(telemetryProperty, new class_8561.class_8562((int)l));
} else {
field_44843.warn("Measurement {} was discarded since it was still ongoing when the event {} was sent.", telemetryProperty.comp_1171(), class_7966.field_44833.method_47720());
}
});
this.field_44846.ifPresent((l) -> measurements.put(class_7969.field_44835, new class_8561.class_8562((int)l)));
this.field_44845.clear();
}
StringBuilder stringBuilder = new StringBuilder("\n");
for(class_7969 property : measurements.keySet()) {
class_8561.class_8562 measurement = (class_8561.class_8562)measurements.get(property);
stringBuilder.append("%s: %sms\n".formatted(property.comp_1171(), measurement.comp_1531()));
}
field_44843.info(stringBuilder.toString());
}
}
Download file