Why?
So, why do the speed tests turn out like that do, and why is
freebsd-rustdate
way faster than freebsd-update
?
freebsd-update
is a shell script.
As mentioned in the
FAQ, freebsd-update
is a shell script.
That means it’s effectively a fork
/exec
stress test, and it does
zillions of them.
We have data structures
freebsd-update
has to do tons of
grep | cut | grep | sort | ...
pipelines, usually over the same data
many many times, to extract information to work with. Being in a full
programming language freebsd-rustdate
can parse data once, build data
structures in a useful way out of it, and then just chase some pointers
when it needs some subset of the information.
We have cores
freebsd-rustdate
has the ability to use multiple cores (if you have them) for
various actions, like scanning your system and stashing up data. We
don’t currently use any parallelism in installing the files, but may in
the future. That doesn’t help you on a tiny little single-core VM or the
like, but a few cores can give you a nice linear speedup on some steps.