|
Post by drventure on Nov 25, 2016 18:57:32 GMT
Hi
I had a question about PS with regards to loading speed.
I have about 3300 songs in my songs folders. Yes, I'm sure there's many that I could cull out, and eventually I will.
But my question is about the time that it takes PS to load those song defs.
Based on observing the progress bar, it +looks+ like PS enumerates the songs first, then goes back and performs some kind of "load" process. I say this because PS seems to know exactly how much progress has been made to accurately update the progress bar as the songs are loading.
The enumeration appears to happen very quickly.
But the load song process seems to take quite a while, esp with a lot of songs.
The good news is that it doesn't appear to slow down with more songs, so it looks like a constant time operation.
So my questions
1) Does anyone else here have this many songs, and if so, do you "manage" them in some way to alleviate the several minute delay while PS loads?
2) I know the source is closed, but I'd be happy to try to contribute in at least this small way to see if I could do anything to improve the song load speed, if the authors would be interested... I've done plenty of optimization work, in C, C++, VB, C#, SQL and Ruby, plus a small amount of python, if that would be any help.
Anyway, any thoughts about handling a larger library like this?
|
|
|
Post by vandorb12 on Nov 27, 2016 0:42:45 GMT
There's no real way to improve it from what I understand. I have thousands of songs, too, with a pretty beefy processor and SSD, and it takes minutes for the game to load up. You're not alone.
The game will always rebuild the search cache when it boots up. This cache is used for both the career mode and search. In a future update (whenever that may be... toss David some money to keep him motivated), I hope the devs implement a toggle to turn the startup scan off, and let the user rescan when they want.
In the meantime, the best thing to do to minimize load times is to carefully plan out what songs, series, genre, etc., you want to play and only load that particular folder by editing the game ini. Puts a hamper on random online multiplayer games, though...
|
|
|
Post by drventure on Nov 27, 2016 17:33:34 GMT
Yeah, That's basically what I was considering doing. Though I was thinking of just using hard junction points to swap out songs folders using a set of batch files.
So, for instance, if I want "Favorites", i'd run the favorites.bat file, it would remap the songs folder to a different folder and start.
I'm also thinking of building a little front end app that could be run right before PS, that you could feed some search args and it would clear and repopulate the SONGS folder with hard links to tracks in some other folder.
Anyway, just wondering.
Thanks for the response!
|
|
|
Post by djlastnight on Nov 28, 2016 18:58:40 GMT
Hm, nice idea. I saw similar operation in hacked Guitar Hero World Tour version, where the main programmer injects a particular song pack (GH:WoR in example) into the main game directory and this works really fast (just a 2-3 seconds). Here is the link to the tracker: rutracker.org/forum/viewtopic.php?t=4206513Please, let the devs remove the link, if they see something illegal in it. Anyone who needs the link can write me a PM.
|
|
|
Post by drventure on Nov 29, 2016 0:51:56 GMT
Interesting, but my Russian sucks <G>
Anyway, I'm playing with the idea now. If I come up with anything useful, I'll definitely post back.
I did do a little performance spot test.
Using Agent Ransack (a freeware file search), I was able to search all the INI files for specific content on the ssd in about 5 seconds.
Given that there's no indexing, so that program would have to
1) enumerate all the ini files. 2) open and read each one. 3) parse the contents to determine if there was any match or not
I'm definitely believing that there's gotta be a faster way to get that information into PS that whatever the code is doing now. Maybe PS is opening other files, or reading other information in. I'm not sure.
But it sure seems like for just populating menus of song names, the process could be lots faster than what it is now.
But again, without being able to check out the code first hand, I can only guess.
Hmmm, I CAN, however, use filemon to see what specific files are being opened by PS. That might yield some clues as well....
More poking around to do.
|
|
|
Post by djlastnight on Nov 29, 2016 6:59:25 GMT
I guess the game searches for song.ini && notes.mid && (guitar.ogg || song.ogg).
|
|
|
Post by Deleted on Sept 25, 2017 20:43:25 GMT
There's no real way to improve it from what I understand. I have thousands of songs, too, with a pretty beefy processor and SSD, and it takes minutes for the game to load up. You're not alone. The game will always rebuild the search cache when it boots up. This cache is used for both the career mode and search. In a future update (whenever that may be... toss David some money to keep him motivated), I hope the devs implement a toggle to turn the startup scan off, and let the user rescan when they want. In the meantime, the best thing to do to minimize load times is to carefully plan out what songs, series, genre, etc., you want to play and only load that particular folder by editing the game ini. Puts a hamper on random online multiplayer games, though... if the game builds a cache, why is it discarded? you already have the function to build the cache. all you need is a function to save the cache, and a button to rebuild the cache. then update the documentation to state "if you delete a song, click the re-build cache button". I actually don't have a big problem with this. It is a bit slower than ROcksmith with a big library but not really. I'm betting part of that stupid slow start up intro they do is in fact indexing/building a cache. Or, save the cache and throw down a md5 hash based off the cache. on boot, check the hash real quick and if it matches move on, else, re-build the cache.
|
|