|
From: Nicholas N. <nj...@cs...> - 2005-12-24 03:51:17
|
Hi, The COMPVBITS branch holds an improved version of Memcheck that runs significantly faster than the trunk (roughly 10--15% faster, and the trunk itself is 10--20% faster than 3.1.0, but the numbers vary greatly across different programs) and uses much less memory (the basic memory overhead is 2 bits per byte rather than 9 bits). It is intended to become the version of Memcheck that will be in release 3.2.0. It will also avoid the need for Addrcheck; if you want Addrcheck-like behaviour (ie. faster but with no definedness errors) use the --undef-value-errors=no flag. It would be great to have people test this branch out. It works well for me on x86, but I haven't tested it on AMD64 or PPC32. You might even like to switch to this version for your day-to-day use to take advantage of the speed improvements. To check the branch out and build it, use: svn co svn://www.valgrind.org/valgrind/branches/COMPVBITS cd COMPVBITS sh ./autogen.sh ./configure --prefix=<...> make I'm most interested in making sure that it is functionally identical to the current trunk; please let me know if this isn't the case. I'm also interested in seeing how its performance compares against the current trunk and maybe 3.1.0. To do so, run "make check" and then this command: perl perf/vg_perf --vg=<dir1> --vg=<dir2> --vg=<dir3> perf where <dir1>, <dir2> and <dir3> are the directories holding the three different Valgrind versions. Please post the results, and try to avoid line wrapping if you can :) Below are the results I get on my dual 3GHz P4 (Prescott). The run will take 15 minutes or more depending on machine speed; if you do it please try to minimise other activity on the machine while the tests are running. I'd love to see performance numbers for any other apps you might have, particularly big ones. Thanks. Nick Versions are: - 3.1.X branch (performance-wise equivalent to 3.1.0) - current trunk - current COMPVBITS - current COMPVBITS with --undef-value-errors=no baked in (Addrcheck mode) 'gcc' is a benchmark that's not checked into SVN, so you won't see it if you run the suite yourself. -- bigcode1 -- bigcode1 vg-3.1.X : 0.2s nl: 7.1s (33.7x, -----) mc:12.8s (61.1x, -----) bigcode1 trunk1 : 0.2s nl: 5.7s (27.1x, 19.5%) mc: 9.4s (44.7x, 26.9%) bigcode1 compvbits : 0.2s nl: 5.5s (26.0x, 22.9%) mc: 8.8s (41.9x, 31.5%) bigcode1 compvbits2: 0.2s nl: 5.4s (25.8x, 23.4%) mc: 6.6s (31.3x, 48.8%) -- bigcode2 -- bigcode2 vg-3.1.X : 0.2s nl:13.2s (65.8x, -----) mc:25.5s (127.3x, -----) bigcode2 trunk1 : 0.2s nl:11.8s (59.0x, 10.3%) mc:20.6s (103.2x, 19.0%) bigcode2 compvbits : 0.2s nl:11.1s (55.6x, 15.6%) mc:19.9s (99.5x, 21.8%) bigcode2 compvbits2: 0.2s nl:11.1s (55.7x, 15.4%) mc:15.2s (75.8x, 40.5%) -- bz2 -- bz2 vg-3.1.X : 1.3s nl: 9.3s ( 7.2x, -----) mc:26.3s (20.3x, -----) bz2 trunk1 : 1.3s nl: 7.3s ( 5.6x, 22.0%) mc:28.8s (22.2x, -9.5%) bz2 compvbits : 1.3s nl: 7.2s ( 5.5x, 22.7%) mc:21.1s (16.2x, 19.8%) bz2 compvbits2: 1.3s nl: 7.2s ( 5.5x, 22.9%) mc:16.1s (12.4x, 39.0%) -- fbench -- fbench vg-3.1.X : 1.1s nl: 4.9s ( 4.4x, -----) mc:13.6s (12.0x, -----) fbench trunk1 : 1.1s nl: 4.5s ( 3.9x, 9.6%) mc:12.2s (10.8x, 10.6%) fbench compvbits : 1.1s nl: 4.5s ( 4.0x, 8.3%) mc:11.2s ( 9.9x, 17.7%) fbench compvbits2: 1.1s nl: 4.5s ( 4.0x, 8.3%) mc: 8.6s ( 7.6x, 37.0%) -- ffbench -- ffbench vg-3.1.X : 0.8s nl: 4.1s ( 4.9x, -----) mc:11.4s (13.6x, -----) ffbench trunk1 : 0.8s nl: 4.0s ( 4.8x, 1.7%) mc:10.9s (13.0x, 3.9%) ffbench compvbits : 0.8s nl: 3.9s ( 4.6x, 6.6%) mc: 8.8s (10.5x, 22.7%) ffbench compvbits2: 0.8s nl: 3.7s ( 4.4x, 10.7%) mc: 7.3s ( 8.7x, 35.7%) -- gcc -- gcc vg-3.1.X : 0.3s nl:12.8s (39.8x, -----) mc:34.5s (107.9x, -----) gcc trunk1 : 0.3s nl:10.9s (34.1x, 14.4%) mc:29.7s (92.9x, 13.9%) gcc compvbits : 0.3s nl:10.8s (33.7x, 15.5%) mc:29.0s (90.7x, 16.0%) gcc compvbits2: 0.3s nl:10.8s (33.8x, 15.2%) mc:22.1s (69.0x, 36.1%) -- heap -- heap vg-3.1.X : 0.4s nl: 3.2s ( 7.8x, -----) mc:27.2s (66.3x, -----) heap trunk1 : 0.4s nl: 2.2s ( 5.3x, 31.6%) mc:19.0s (46.4x, 30.1%) heap compvbits : 0.4s nl: 2.3s ( 5.6x, 28.1%) mc:16.6s (40.6x, 38.8%) heap compvbits2: 0.4s nl: 2.2s ( 5.4x, 30.6%) mc:16.3s (39.7x, 40.2%) -- sarp -- sarp vg-3.1.X : 0.1s nl: 0.9s (12.4x, -----) mc:11.0s (157.0x, -----) sarp trunk1 : 0.1s nl: 0.5s ( 6.4x, 48.3%) mc:10.9s (155.7x, 0.8%) sarp compvbits : 0.1s nl: 0.5s ( 6.4x, 48.3%) mc: 4.1s (58.7x, 62.6%) sarp compvbits2: 0.1s nl: 0.4s ( 6.3x, 49.4%) mc: 3.8s (54.1x, 65.5%) -- tinycc -- tinycc vg-3.1.X : 0.8s nl:10.3s (12.2x, -----) mc:43.4s (51.7x, -----) tinycc trunk1 : 0.8s nl: 7.3s ( 8.7x, 29.1%) mc:41.2s (49.0x, 5.2%) tinycc compvbits : 0.8s nl: 7.3s ( 8.7x, 29.2%) mc:38.6s (46.0x, 11.1%) tinycc compvbits2: 0.8s nl: 7.2s ( 8.6x, 29.9%) mc:33.0s (39.3x, 24.0%) -- Finished tests in perf ---------------------------------------------- |