2 ms·
(1) PDiffs are merged before being applied, and the downloads are pipelined, so it does not matter much anymore. (2) The cache generation is somewhat slow, it
by julian-klode 11y ago
(1) PDiffs are merged before being applied, and the downloads are pipelined, so it does not matter much anymore.
(2) The cache generation is somewhat slow, it currently takes about 2 seconds on a 2 generation old laptop.
I sped it up a bit now, and replaced a map in that path with an unordered_map in the process.
Profiling it does not show anything obvious that can be optimized, though, most of the time is spent parsing files.
Most importantly, as you can see in https://people.debian.org/~jak/gencache.svg https://people.debian.org/~jak/gencache.svg only about 10% are spent in the string code.
(3) We don't want to recover from errors. Error recovery masks problems.
(4) ABI breaks: We try to avoid them a lot. We added tons of dpointers everywhere these days, so we can extend stuff as needed without breaking ABI.
Sometimes you do need to break ABI. For example, offsets were 32-bit sometimes causing large files not to work correctly.
- julian-klode 11y agoFindGrp() is somewhat slow as we do not store the untruncated hash value in the groups, so we have to compare all strings (well, we order them on insertion, but it's still 2 to 3 on the average - an average 3 integer comparisons would be nicer). But fixing that requires an ABI break, so it has to wait for a chance. Like in a year or something.