WIP - Huge performance upgrade for SSD based devices & cache rework for less iPod reads#90
WIP - Huge performance upgrade for SSD based devices & cache rework for less iPod reads#90B0N3head wants to merge 8 commits into
Conversation
Initial attempt at allowing for higher speed read/write with multiple workers for SSD based iPods
|
Also small question, why is there an inconsistency in directories between the logs/settings/bin files? Current Setup
I was close of pushing a change of making all setting/log files to be stored in the %appdata% dir and the main files (fpcalc.exe/backups/cache) to be stored in this %userprofile% dir, but as unsure if it goes against a design decision or some oddity with the macos/linux versions. Proposed change
Thoughts??? |
|
i'd recommend storing device tags within the iopenpod json file on device. a seperate file is fine too if you don't want to touch that giant file. on device file storage is correct for this case as it will maintain the tags between computers for multi pc users. |
|
as for the current setup for those files, i wouldn't touch them. moving them would mean we'd have to add code to check both spots so current users don't lose their configuration, and i just don't think it's worth the hassle. |
Yeah ok easy, I'll give a shot at writing to the iOpenPod json file on the device itself (and ofc checking backwards comparability). I didn't even think about persistent settings across pcs. Minor update:The automatic disk based speedtests had too much variance between runs for them to be a concrete answer of SSD vs HDD (plus stressing an old HDD or cheap HDD to flash probably isn't the best idea). So for the current build I'm just prompting on newly (non tagged) devices if it is SSD or HDD based. Currently under a large workload, so I most likely won't be working on this till the 25th, I'm sorry :(Love this project 🙏🙏 |
More sync more faster
I had a look into slowdown with initial syncing (as it took an ungodly long time with 4k songs). I found that each song was 1 by 1 being checked with
fpcalc.exeto ID tracks, which is fine, HOWEVER on a solid state based iPods (or any modded one iFlashQuad for example) this is barely using 1/4th of the USB bandwidth available. So now when you connect a device to iOpenPod it will ask if the connected device is SSD based. If it is then it will use 3-4 workers (instead of the single) to ID the music not only on your local PC library but also on your iPod.I'm currently going through the rest of the codebase to try incorporate more speedups to do with single IO functions for SSD based speedups.
Changes made so far*
*originally built off 1.0.49 and updated to v1.0.51 so there might be minor differences between this fork and v1.0.51
Current coverage map
I'd love some help testing these speed changes on other devices.
Before attempting to merge the changes made in the new v1.0.51 is was getting a 3-5x speed increase in hashing and fingerprinting on my iPod Classic 7th Gen with an iFlashQuad (1x512GB MicroSD).
This could be easily improved further by automatically flagging iPod nano and shuffles as SSD based, or even running a small disk speedtest on the later gen iPod classics to try automatically determine this.
More details will be added as this pull request is closer to completion ❤