I'm writing to a network drive if that makes any difference (I think it makes all the difference). The overall file size is small (3.49mb) but it took ~5 minutes to save. CPU usage is low and I have plenty of memory free which leads me to believe the file is being written in small segments. Small writes to a network drive can have serious latency issues. I suggest creating a "large" memory buffer and writing the entire cache to it, then flushing the cache to disk in one shot. The cbCache file is not very big compared to the amount of memory available these days. If that doesn't work, maybe a fixed 5mb memory buffer that is flushed when it fills up?
It just took 10 minutes to close my workspace due to saving the code-completion cache for 4 projects. Total size of the 4 caches is a combined 7.2mb.
Edit: All 4 reloaded when I opened the project in under 5
seconds combined.

So yeah that's acceptable.