loot / libloot

A C++ library for accessing LOOT's metadata and sorting functionality.
GNU General Public License v3.0
32 stars 12 forks source link

Slow start #35

Closed ElminsterAU closed 6 years ago

ElminsterAU commented 6 years ago

LOOT takes a significant time to start up. Attached is the debug log:

LOOTDebugLog - slow start.zip

Ortham commented 6 years ago

Significant times:

[06:53:13.113143] [info]: LOOT Version: 0.13.1+fc664279
[06:53:13.263640] [info]: Attempting to open link: http://loot/ui/index.html
[06:53:15.434012] [info]: Getting LOOT's supported languages.
[06:53:16.147175] [trace]: Sending progress update: Parsing, merging and evaluating metadata...
[06:53:16.859902] [info]: Loading 360 plugins using 6 threads, with up to 60 plugins per thread.
[06:53:16.866274] [trace]: Starting plugin loading.
[06:53:50.456895] [debug]: Parsing metadata list(s).
[06:53:50.949079] [trace]: Getting masterlist metadata for: Skyrim.esm
[06:53:56.937978] [trace]: Getting masterlist metadata for: ccbgssse010-petdwarvenarmoredmudcrab.esl
[06:53:59.825111] [info]: Getting LOOT's version.

So that's:

ElminsterAU commented 6 years ago

Just a further bit of information, I'm running LOOT from inside MO2.

Ortham commented 6 years ago

@eFrysTon Try replacing your loot_api.dll with this one, and upload the debug log that results in.

MacSplody commented 6 years ago

I'll add a few Debug logs for comparison.

Only DLC outside MO2.

LOOTDebugLog.txt

Start up with no metadata, only the settings.toml in appdata\local\loot folder. Then updated metadata, sorted & restarted.


Only DLC running from MO2.

LOOTDebugLog.txt

Start up with no metadata, only the settings.toml in appdata\local\loot folder. Then updated metadata, sorted & restarted.

ElminsterAU commented 6 years ago

LOOTDebugLog - slowish start.zip

There are some slight differences because my load order has changed slightly. But I don't think these changes should have a huge impact on the time.

Before: [06:53:13.113143] [06:53:59.825111] ~46 sec

After: [18:08:15.338328] [18:08:25.455277] ~10 sec

Ortham commented 6 years ago

Some more detail from the new log:

[18:08:15.338328] [info]: LOOT Version: 0.13.1+fc664279
[18:08:15.558051] [info]: Attempting to open link: http://loot/ui/index.html
[18:08:17.913766] [info]: Getting LOOT's supported languages.
[18:08:17.914230] [info]: Getting LOOT's settings.
[18:08:18.678810] [trace]: Sending progress update: Parsing, merging and evaluating metadata...
[18:08:20.950628] [info]: Loading 374 plugins using 6 threads, with up to 63 plugins per thread.
[18:08:21.112473] [trace]: Starting plugin loading.
[18:08:21.207521] [debug]: Parsing metadata list(s).
[18:08:21.666102] [trace]: Getting masterlist metadata for: Skyrim.esm
[18:08:22.294237] [trace]: Getting masterlist metadata for: ccbgssse010-petdwarvenarmoredmudcrab.esl
[18:08:25.455277] [info]: Getting LOOT's version.

Observations:

So I might be able to shave off another second or so in the LOOT API without too much effort, otherwise the remaining areas of improvement are in the LOOT application.

Ortham commented 6 years ago

Finding valid plugins is actually done in the LOOT application. As all the low hanging fruit are now outside the LOOT API, I'll close this issue and open another in the loot/loot tracker.