From f893c828d8035f4448dca8679fa73aca78c5ee58 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Tue, 21 Nov 2023 22:54:29 +0100 Subject: [PATCH] minor startup performance improvements --- src/main/java/de/bixilon/minosoft/Minosoft.kt | 27 ++++++++++++++----- .../minosoft/terminal/CommandLineArguments.kt | 1 + .../de/bixilon/minosoft/terminal/cli/CLI.kt | 5 +--- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/Minosoft.kt b/src/main/java/de/bixilon/minosoft/Minosoft.kt index 13178f273..bd7800c74 100644 --- a/src/main/java/de/bixilon/minosoft/Minosoft.kt +++ b/src/main/java/de/bixilon/minosoft/Minosoft.kt @@ -33,6 +33,7 @@ import de.bixilon.kutil.unit.UnitFormatter.formatNanos import de.bixilon.minosoft.assets.file.ResourcesAssetsUtil import de.bixilon.minosoft.assets.meta.MinosoftMeta import de.bixilon.minosoft.assets.properties.version.AssetsVersionProperties +import de.bixilon.minosoft.config.StaticConfiguration import de.bixilon.minosoft.config.profile.manager.ProfileManagers import de.bixilon.minosoft.config.profile.profiles.eros.ErosProfileManager import de.bixilon.minosoft.data.entities.event.EntityEvents @@ -42,6 +43,8 @@ import de.bixilon.minosoft.data.registries.fallback.FallbackRegistries import de.bixilon.minosoft.data.registries.fallback.tags.FallbackTags import de.bixilon.minosoft.data.registries.identified.Namespaces import de.bixilon.minosoft.data.registries.identified.Namespaces.minosoft +import de.bixilon.minosoft.data.text.formatting.FormattingCodes +import de.bixilon.minosoft.data.text.formatting.color.ChatColors import de.bixilon.minosoft.datafixer.DataFixer import de.bixilon.minosoft.gui.eros.Eros import de.bixilon.minosoft.gui.eros.crash.ErosCrashReport @@ -77,14 +80,14 @@ object Minosoft { private fun preBoot(args: Array) { - async(ThreadPool.Priorities.HIGHEST) { Jackson.init(); MinosoftPropertiesLoader.init() } + DefaultThreadPool += ForcePooledRunnable { Jackson.init(); MinosoftPropertiesLoader.init() } DefaultThreadPool += ForcePooledRunnable { KUtil.initBootClasses() } CommandLineArguments.parse(args) Log.log(LogMessageType.OTHER, LogLevels.INFO) { "Starting minosoft..." } val latch = SimpleLatch(2) - DefaultThreadPool += { MINOSOFT_ASSETS_MANAGER.load(); MinosoftPropertiesLoader.load(); latch.dec() } - DefaultThreadPool += { ModLoader.initModLoading(); latch.dec() } + DefaultThreadPool += ForcePooledRunnable { MINOSOFT_ASSETS_MANAGER.load(); MinosoftPropertiesLoader.load(); latch.dec() } + DefaultThreadPool += ForcePooledRunnable { ModLoader.initModLoading(); latch.dec() } KUtil.init() @@ -98,7 +101,7 @@ object Minosoft { } private fun boot() { - val taskWorker = TaskWorker(errorHandler = { _, error -> error.printStackTrace(); error.crash() }) + val taskWorker = TaskWorker(errorHandler = { _, error -> error.printStackTrace(); error.crash() }, forcePool = true) taskWorker += WorkerTask(identifier = BootTasks.VERSIONS, priority = ThreadPool.HIGHER, executor = VersionLoader::load) taskWorker += WorkerTask(identifier = BootTasks.PROFILES, priority = ThreadPool.HIGHEST, executor = ProfileManagers::load) @@ -149,15 +152,25 @@ object Minosoft { taskWorker += WorkerTask(identifier = BootTasks.STARTUP_PROGRESS, executor = { StartingDialog(BOOT_LATCH).show() }, dependencies = arrayOf(BootTasks.LANGUAGE_FILES, BootTasks.JAVAFX)) taskWorker += WorkerTask(identifier = BootTasks.EROS, dependencies = arrayOf(BootTasks.JAVAFX, BootTasks.PROFILES, BootTasks.MODS, BootTasks.VERSIONS, BootTasks.LANGUAGE_FILES), executor = { DefaultThreadPool += { Eros.preload() } }) - Eros::class.java.forceInit() + DefaultThreadPool += ForcePooledRunnable { Eros::class.java.forceInit() } + } + + private fun initLog() { + DefaultThreadPool += ForcePooledRunnable { Log.init() } + DefaultThreadPool += ForcePooledRunnable { RunConfiguration } + DefaultThreadPool += ForcePooledRunnable { FormattingCodes } + DefaultThreadPool += ForcePooledRunnable { ChatColors } } @JvmStatic fun main(args: Array) { val start = nanos() - Log.init() + initLog() - Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Pre booting..." } + + if (StaticConfiguration.DEBUG_MODE) { + // Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Pre booting..." } + } preBoot(args) Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Booting..." } diff --git a/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt b/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt index f16608f54..0c0feb95c 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt @@ -103,6 +103,7 @@ object CommandLineArguments { fun parse(args: Array) { check(!this::ARGUMENTS.isInitialized) { "Already initialized!" } + if (args.isEmpty()) return this.ARGUMENTS = args.toList() val namespace: Namespace try { diff --git a/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt b/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt index 5501045fc..c213e9545 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt @@ -38,10 +38,6 @@ object CLI { var connection: PlayConnection? by observed(null) val commands = RootNode() - init { - register() - } - @Synchronized private fun register() { commands.clear() @@ -62,6 +58,7 @@ object CLI { } private fun startLoop() { + register() val builder = TerminalBuilder.builder() val terminal: Terminal = builder.build()