• Stars
    star
    246
  • Rank 164,726 (Top 4 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 4 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fabric mod that makes Minecraft DataFixerUpper initialization lazy

LazyDFU

LazyDFU is an optimization mod that makes the initialization of DataFixerUpper "lazy" - that is, it will not immediately create the rules required to migrate data from older versions of Minecraft to newer versions until it actually needs to do so. It does not modify DFU and should be safe, but do exercise more than the usual caution.

The premise of LazyDFU is simple: most of the time, you will not need to convert data for every version of the game. As a result, DFU rule compilation occurs later, when the game is already up and running. This means it is possible you may see lag spikes if LazyDFU forces the game to compile migration rules, but once complete there is no performance penalty.

Give me the numbers!

On an i5-8250U laptop:

  • Vanilla: ~58 seconds spent initializing DFU and compiling DFU rules
  • LazyDFU: 498 milliseconds spent initializing DFU

This results in a smooth, responsive game startup.

I want to see to believe it!

Here's a video I recorded.

Comparing it to other mods

Cadmium

LazyDFU is complementary to Cadmium. While Cadmium tackles the root source of the problem (rule optimization being slow), it only partially improves the situation. LazyDFU will still be highly effective by deferring the initial compilation of DFU rules until needed, so the game will start up much more quickly.

Smooth Boot

LazyDFU takes a similar implementation approach to Smooth Boot: both mods do not try to modify DFU. However, LazyDFU is superior to Smooth Boot as it does not compile DFU rules at all, which is the most expensive part of the game startup process.

In comparison, Smooth Boot will instead limit the number of threads that compile DFU rules and run them at a lower priority.

DataBreaker

DataBreaker is fundamentally unsafe. If you load an older world with DataBreaker then it will corrupt that world. There's some safeguards in DataBreaker, but even the author does not recommend using DataBreaker. In comparison, with LazyDFU you may experience a nasty lag spike instead, which is vastly superior to having a completely hosed world. So prefer LazyDFU over DataBreaker :)

More Repositories

1

krypton

A Fabric mod that optimizes the Minecraft networking stack and entity tracker.
Java
358
star
2

libdeflate-java

libdeflate JNI bindings for Java.
Java
26
star
3

HubMagic

Very powerful hub balancing for BungeeCord.
Java
22
star
4

SuperbVote

A superb Votifier listener.
Java
18
star
5

varint-writing-showdown

How fast can you write a Google Protocol Buffer (signed) VarInt?
Java
11
star
6

anvil2slime

Convert worlds from Anvil to the Slime region format.
Go
7
star
7

warpdrive

An experimental hard fork of Velocity.
Java
6
star
8

lotus

Java
6
star
9

spark-ignition

An UI for the Minecraft spark profiler with improved performance.
JavaScript
4
star
10

LibertyCord

Another fork of BungeeCord. An efficient Layer 7 proxy for Minecraft: Java Edition servers.
Java
3
star
11

paste-ploughman

It's another code pastebin. Built on Cloudflare Workers.
TypeScript
2
star
12

origins-velocity-adapter

Makes Origins work with Velocity, no changes required.
Java
2
star
13

brainchug

Brainchug is a JVM Brainfuck implementation that generates Java classes.
Java
2
star
14

mcping-elixir

A simple library to ping Minecraft: Java Edition servers using Elixir.
Elixir
2
star
15

serpentinised

Making non-Sentinel-aware Redis clients aware of Sentinel
Go
2
star
16

proxypipe-velocity

ProxyPipe support for Velocity (VelocityPowered)
Java
2
star
17

game-of-life-rust

a toy game of life program in Rust, because why not?
Rust
2
star
18

shout

Cross-platform announcement plugin built on adventure, successor to AdvancedBungeeAnnouncer
Java
2
star
19

bson-objectid-python

An implementation of BSON ObjectIds in Python.
1
star
20

chute

A Minecraft launcher based on Electron. WIP.
1
star
21

crafthead-fetcher

Service that Crafthead calls out to in order to avoid 429s
1
star
22

crafthead-ex

Crafthead, but it's Elixir (with Rustler)
Elixir
1
star
23

dotfiles

Some of my dotfiles
CSS
1
star
24

astei

1
star
25

studious-garbanzo

Run a command remotely after a Github push using webhooks ✨ 🎣
Go
1
star
26

rabbitmq-relocation-bug

Java
1
star
27

silver-chainsaw

1
star
28

carveout

A modern, ergonomic Minecraft beta 1.7.x server.
Java
1
star
29

math

A mathematics library.
Java
1
star