Addressing memory use
For the last couple weeks I've been taking a closer look at the way SoulseekQt uses up memory. If you're a casual user, sharing no more than a couple of tens of thousands of files or less, and you don't go around leaving a whole lot of search and share browse windows open, chances are you haven't had too many problems with SoulseekQt's memory use. If you're one of the more heavy users out there, well, you should still be fine as long as your rig gives you enough memory to play around with. Whatever your situation may be, there's no denying that placed alongside Soulseek NS, SoulseekQt takes more memory to do pretty much anything. The reason for this is the data system I've been designing over the last few years and finally put into actual use with SoulseekQt, which has been a blessing and a curse. Certainly more blessing than curse, but the tradeoffs are there. It's a type of database that's extremely flexible and lets me implement relatively complex features reliably and painlessly, but that flexibility hasn't come cheap. Browsing another user's very large share that would take about 40 megabytes to load into memory under Soulseek NS could easily balloon up to 100-120 megabytes under SoulseekQt. And the situation is similar when you're sharing a very large number of files yourself. Without getting too technical, I've been going into the data system's internals and looking for any places where serious savings could be had. I tried a lot of different things, most of them made no difference, or made things worse to various degrees. The most successful experiments have been in the area of diminishing the system's reliance on complex data containers by replacing them with wrappers that only use them when they're absolutely needed. In the end, I arrived at something like a %15-20 percent savings in memory for your own share, and a more impressive %30 percent for browsed shares. Neither takes SoulseekQt out of memory-hungry territory, but it's certainly an improvement.
If you try the new build out, just remember that a lot has changed internally. We'd love to hear from you in the comments whether it works well for you or not! We want to make a big global push to advertise SoulseekQt to our users, but we'd like to know that we have a relatively stable build at the top of the download page before we do that.
- Fixed a crash when downloading a folder containing other folders from a browsed share.
- Multiple download entries can now be selected.
- 'Stop Search' button for search results.
- Searches only containing tokens that are one or two characters short are not longer processed by the client.
- The client will look for a new parent in the search distribution network if no searches are received from the current parent for over a minute.
- Dump Data option under Diagnostics tab. I can use this to diagnose very specific problems a user is having with their client if they dump their own data and send me the file.
Links on the download page!