This is pretty relevant to my day today because I sat out to load test
Fossil to make sure it will be a good fit for our future projects. I
took our existing source and asset folders (so, not importing from
Perforce, just taking the current 'head') of our recent project and put
them into Fossil.

For reference: 78,353 files   5,708 folders   total file size:
16,371,476,646 bytes (15.2 GB)
Mostly text files (cpp, h, cs, html, xml, json, dae, etc.) with some binary

I will provide some times, and some comparisons to Mercurial. Not
because I'm out to say Mercurial is better or worse, I need some DVCS to
compare it to and Mercurial is installed on my computer -- Windows 7
64-bit quad-core 7200 RPM drive

Initial 'add' of all the files took roughly 10 minutes. For comparison,
Mercurial took less than a minute.

Initial 'commit' of all the files took roughly 50 minutes, Mercurial
took about 38 minutes.

Repository size (.fossil file) after initial commit was 3,529,995,264
bytes (3.28 GB -- pretty good!). The size of my ".hg" folder after
commit is 3.60GB...but really 3.82GB due to filesystem overhead of
81,482 files (6,085 folders). Fossil beats Mercurial for sure here.

To open the repository to a new checkout it took Fossil about 26
minutes. Roughly 13 minutes extracting the files into the directory, and
then 13 minutes of ... doing something, before it came back.
The equivalent command in Mercurial ("hg update null" to reset the
checkout then the timed "hg update") took 19.5 minutes

The above timings and stats are important, but not that important, to
me. For the above are uncommon operations related to initial setup,
initial clone, etc. What matters (to me) is the stats below:

Fossil "ls" takes about 36 seconds, most of that time is just the spew
going to the console. If I pipe the results to a file it takes about 8
seconds. Fossil "extra" takes about 8-12 seconds (with no extra files
reported). Fossil "changes" takes about 6-8 seconds (with no changes
reported). Fossil "info" is less than a second, Fossil "status" is about
6-8 seconds (since it is practically doing "info" + "changes").

Something to note, the very first time you do a ls/changes/extra in a
fresh checkout, it takes much longer, about 50-75 seconds to complete.
After that, you get the timings above.

For comparison to Mercurial, "hg status" takes 3 seconds -- I did not
use any other commands.

Also, using fossil "artifact" and providing the artifact id of the
current checkout (to get its manifest) only takes about 6 seconds --
taking that and parsing it might be faster than "ls" if you are writing
tools/scripts around Fossil (as I currently am).

I should note that I tried with my Fossil repository both in the default
"delete mode" and went through my process again (post repository
creation) with "wal mode" and the above timings did not change.

And now here is where things get bad.

I created a single text file in the root of my checkout (created by
doing "dir * /s > out.txt") -- it was several megs in size, lets say
about 12 megs.

fossil add out.txt    --- takes about 1-5 seconds (varies within that range)
hg add out.txt --- takes about 3 seconds

fossil commit -m "testing" out.txt  --- takes about 17-20 minutes 
hg commit -m "testing" --- takes about 10 seconds

This has killed me. At first I tried fossil commit without providing the
file to commit and it took about 22 minutes. I repeated the process,
specifying the file, and it saved ~5 minutes, but still took a bit too
long for me to ask my fellow employees to wait for.

Also to note: Fossil is very well behaved with its memory usage (only a
couple megs of ram) while Mercurial bounces around up to  60 or 100
megs. Fossil seems to have a little better throughput when it comes to
writing out files also. With all of the time "waiting" I can see Fossil
is just doing a lot of file I/O (as expected).

Just some numbers for you guys. Speaking for myself, I can live with a
lot of the above, but that commit time kills it :( I hope there are some
possible optimizations available.

Thanks,
Jeff






_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to