www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript

c++ - Benchmarks

↑ ↓ ← "Javier Gutiérrez" <nikkho hotmail.com> writes:
    Are there any benchmarks that compare DMC with other C/C++ compilers?

    In particular I am very interested about the performance of DMC against
BCC, VC++, Watcom C++ and GCC.
Jul 10 2001
Jan Knepper <jan smartsoft.cc> writes:
What kind of Benchmarks are you looking for?
Compile time?
Link time?
Executable size?
Execution time of generated executable?



"Javier Gutiérrez" wrote:

     Are there any benchmarks that compare DMC with other C/C++ compilers?

     In particular I am very interested about the performance of DMC against
 BCC, VC++, Watcom C++ and GCC.

Jul 10 2001
↑ ↓ Josh Soref <soref wam.umd.edu> writes:
Jan Knepper wrote:
 What kind of Benchmarks are you looking for?
 Compile time?
 Link time?
 Executable size?
 Execution time of generated executable?

The only benchmark i've found interesting (not useful, not valid, just interesting) was compiling and running the TwoFish encryption algorithm. iirc The authors compared MSVC, Borland, and hand coded assembler. http://www.counterpane.com/twofish.html For things like twofish, you usually want executable size or executable speed to be good (twofish can be tweaked to help out for either of those features). For larger projects like mozilla (yeah i'll try again RSN) compile time, link time and execution performance are probably the most important, lesser would be executable size. <- getting numbers from building mozilla is really too complicated to be practical. Usually you want to do depend builds but build time measurements require clobbers. Execution performance is kind of measurable, but then you have the same sort of questions,.. what and how to measure.
Jul 10 2001
↑ ↓ Jan Knepper <jan smartsoft.cc> writes:
I have written some benchmark test for basically all the things I mentioned.
However, I am not to the point yet were I want to publish the stuff...

My general conclusion so far is that DMC++ usually compiles quite a bit faster
than *any* competitor. I've tried this with small projects, but also with
projects of over 200 source files. (Just compiled a project of 260 source
files...). Surprizingly DMC++ on top taking the shortest time to compile and
build also generated the smallest and actually fastest executables... These two
together are reasons for me to stay with DMC++ dispite the lack of some later
C++ language additions that have not been implemented yet. I would guess that
my benchmarks are limited as I have not yet tested any complicated mathematical
stuff. For that reason I still hesitate to publish my experience also I have
mentioned these results before.

Jan



Josh Soref wrote:

 Jan Knepper wrote:
 What kind of Benchmarks are you looking for?
 Compile time?
 Link time?
 Executable size?
 Execution time of generated executable?

The only benchmark i've found interesting (not useful, not valid, just interesting) was compiling and running the TwoFish encryption algorithm. iirc The authors compared MSVC, Borland, and hand coded assembler. http://www.counterpane.com/twofish.html For things like twofish, you usually want executable size or executable speed to be good (twofish can be tweaked to help out for either of those features). For larger projects like mozilla (yeah i'll try again RSN) compile time, link time and execution performance are probably the most important, lesser would be executable size. <- getting numbers from building mozilla is really too complicated to be practical. Usually you want to do depend builds but build time measurements require clobbers. Execution performance is kind of measurable, but then you have the same sort of questions,.. what and how to measure.

Jul 10 2001
↑ ↓ "Javier Gutiérrez" <nikkho hotmail.com> writes:
I am interested specilly in spped and size of the generated executable.

Could you tell me the numbers, seconds and KBs of your tests? Which are the
other compilers in your tests?


"Jan Knepper" <jan smartsoft.cc> escribió en el mensaje
news:3B4B62EC.137F13E7 smartsoft.cc...
 I have written some benchmark test for basically all the things I

stuff...
 My general conclusion so far is that DMC++ usually compiles quite a bit

with projects of over 200 source files. (Just compiled a project of 260 source files...). Surprizingly DMC++ on top taking the shortest time to compile and build also generated the smallest and actually fastest executables... These two together are reasons for me to stay with DMC++ dispite the lack of some later
 C++ language additions that have not been implemented yet. I would guess

mathematical stuff. For that reason I still hesitate to publish my experience also I have mentioned these results before.
 Jan



 Josh Soref wrote:

 Jan Knepper wrote:
 What kind of Benchmarks are you looking for?
 Compile time?
 Link time?
 Executable size?
 Execution time of generated executable?

The only benchmark i've found interesting (not useful, not valid, just


iirc The authors compared MSVC, Borland, and hand coded assembler. http://www.counterpane.com/twofish.html
 For things like twofish, you usually want executable size or executable


features).
 For larger projects like mozilla (yeah i'll try again RSN) compile time,


would be executable size. <- getting numbers from building mozilla is really too complicated to be practical. Usually you want to do depend builds but build time measurements require clobbers. Execution performance is kind of measurable, but then you have the same sort of questions,.. what and how to measure.

Jul 11 2001
↑ ↓ → Jan Knepper <jan smartsoft.cc> writes:
"Javier Gutiérrez" wrote:

 I am interested specilly in spped and size of the generated executable.

OK, I can get you those.
 Could you tell me the numbers, seconds and KBs of your tests? Which are the
 other compilers in your tests?

Borland C++ Builder V5.0 Microsoft Visual C-- 6.0 I also used to compile with Watcom C++, but I do not want to Install it again... Jan
 "Jan Knepper" <jan smartsoft.cc> escribió en el mensaje
 news:3B4B62EC.137F13E7 smartsoft.cc...
 I have written some benchmark test for basically all the things I

stuff...
 My general conclusion so far is that DMC++ usually compiles quite a bit

with projects of over 200 source files. (Just compiled a project of 260 source files...). Surprizingly DMC++ on top taking the shortest time to compile and build also generated the smallest and actually fastest executables... These two together are reasons for me to stay with DMC++ dispite the lack of some later
 C++ language additions that have not been implemented yet. I would guess

mathematical stuff. For that reason I still hesitate to publish my experience also I have mentioned these results before.
 Jan



 Josh Soref wrote:

 Jan Knepper wrote:
 What kind of Benchmarks are you looking for?
 Compile time?
 Link time?
 Executable size?
 Execution time of generated executable?

The only benchmark i've found interesting (not useful, not valid, just


iirc The authors compared MSVC, Borland, and hand coded assembler. http://www.counterpane.com/twofish.html
 For things like twofish, you usually want executable size or executable


features).
 For larger projects like mozilla (yeah i'll try again RSN) compile time,


would be executable size. <- getting numbers from building mozilla is really too complicated to be practical. Usually you want to do depend builds but build time measurements require clobbers. Execution performance is kind of measurable, but then you have the same sort of questions,.. what and how to measure.


Jul 11 2001
"jacob navia" <jacob jacob.remcomp.fr> writes:
"Javier Gutiérrez" <nikkho hotmail.com> wrote in message
news:9iffn8$1r78$1 digitaldaemon.com...
     Are there any benchmarks that compare DMC with other C/C++ compilers?

     In particular I am very interested about the performance of DMC

 BCC, VC++, Watcom C++ and GCC.

is a good real life application: it makes heavy use of I/O, calculations, etc. Optimizations on in all compilers (dmc flag: -o, lcc flag -O, gcc flag -O9, msvc flag -Ox) To test the generated compilers I used a preprocessed C source (274K) NOTES: MSVC 6.0: Crashes during compilation with: d:\lcc\egcs\reload.c(2852) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'f:\vs70builds\9030\vc\Compiler\Utc\src\P2\main.c', line 148) I used MSVC 4.2 instead Borlands free compiler generates a faulty executable (crashes during execution). Compilation time DMC 325.29 seconds lcc-win32: 38.7 seconds gcc: 207.3 seconds MSVC: 64.112 seconds Execution time DMC 6.038 seconds lcc-win32: 6.77 seconds gcc 5.92 seconds MSVC4.2 5.728 seconds Executable size (bytes) DMC 1 890 332 lcc-win32: 1 778 208 gcc: 1 956 864 MSVC 1 884 672 Discussion: 1: The option /IMPLIBC made the linker of DMC crash, so the executable size mentioned above includes the size of the C library that was statically linked. This should reduce the size of the DMC executable by 40K approx. 2: MSVC 6.0 should have approx twice the compilation time of MSVC 4.2 and approx the same speed. A bigger executable size too, since progress is progress :-) 3: To minimize the influence of I/O, I used a source code with a BIG switch statement (approx 600 cases) that makes the gcc code stop for at least 4-5 seconds, almost all the compilation time is spent in optimizing that switch statement, so the influence of I/O is minimized but still present. 4: I used a Windows 2000 system with an Athlon 650MHZ CPU and 256MB of RAM. 5: Without optimization, the speed of DMC is INCREDIBLE (26 seconds!!!). The execution speed increses to 7.6 seconds only, and the executable size increases to 2 115 100. It beats even lcc-win32!
Jul 24 2001
→ "Walter" <walter digitalmars.com> writes:
Make sure you use -6 on dmc. Some versions used -5 (Pentium scheduling),
which is not optimal for later CPUs. -Walter

jacob navia wrote in message <9jjjvc$16o9$1 digitaldaemon.com>...
"Javier Gutiérrez" <nikkho hotmail.com> wrote in message
news:9iffn8$1r78$1 digitaldaemon.com...
     Are there any benchmarks that compare DMC with other C/C++ compilers?

     In particular I am very interested about the performance of DMC

 BCC, VC++, Watcom C++ and GCC.


is a good real life application: it makes heavy use of I/O, calculations,
etc.

Optimizations on in all compilers (dmc flag: -o, lcc flag -O, gcc flag -O9,
msvc flag -Ox)
To test the generated compilers I used a preprocessed C source (274K)

NOTES:
MSVC 6.0: Crashes during compilation with:
d:\lcc\egcs\reload.c(2852) : fatal error C1001: INTERNAL COMPILER ERROR
                (compiler file
'f:\vs70builds\9030\vc\Compiler\Utc\src\P2\main.c', line 148)
I used MSVC 4.2 instead

Borlands free compiler generates a faulty executable (crashes during
execution).

Compilation time
DMC       325.29 seconds
lcc-win32: 38.7 seconds
gcc:          207.3 seconds
MSVC:     64.112 seconds

Execution time
DMC         6.038 seconds
lcc-win32:  6.77 seconds
gcc             5.92 seconds
MSVC4.2   5.728 seconds

Executable size (bytes)
DMC       1 890 332
lcc-win32: 1 778 208
gcc:           1 956 864
MSVC      1 884 672

Discussion:
1: The option /IMPLIBC made the linker of DMC crash, so the executable size
mentioned above includes the size of the C library that was statically
linked. This should reduce the size of the DMC executable by 40K approx.
2: MSVC 6.0 should have approx twice the compilation time of MSVC 4.2 and
approx the same speed. A bigger executable size too, since progress is
progress :-)
3: To minimize the influence of I/O, I used a source code with a BIG switch
statement (approx 600 cases) that makes the gcc code stop for at least 4-5
seconds, almost all the compilation time is spent in optimizing that switch
statement, so the influence of I/O is minimized but still present.
4: I used a Windows 2000 system with an Athlon 650MHZ CPU and 256MB of RAM.
5: Without optimization, the speed of DMC is INCREDIBLE (26 seconds!!!).

execution speed increses to 7.6 seconds only, and the executable size
increases to 2 115 100. It beats even lcc-win32!

Jul 24 2001
"Javier Gutiérrez" <nikkho hotmail.com> writes:
    That's incredible! Seems that DMC is more stable than BCC 5.5 and MSVC
6!

    I think Walter can improve it with the time in order to generate better
executables...


"jacob navia" <jacob jacob.remcomp.fr> escribió en el mensaje
news:9jjjvc$16o9$1 digitaldaemon.com...
 "Javier Gutiérrez" <nikkho hotmail.com> wrote in message
 news:9iffn8$1r78$1 digitaldaemon.com...
     Are there any benchmarks that compare DMC with other C/C++


     In particular I am very interested about the performance of DMC

 BCC, VC++, Watcom C++ and GCC.


 is a good real life application: it makes heavy use of I/O, calculations,
 etc.

 Optimizations on in all compilers (dmc flag: -o, lcc flag -O, gcc

 msvc flag -Ox)
 To test the generated compilers I used a preprocessed C source (274K)

 NOTES:
 MSVC 6.0: Crashes during compilation with:
 d:\lcc\egcs\reload.c(2852) : fatal error C1001: INTERNAL COMPILER ERROR
                 (compiler file
 'f:\vs70builds\9030\vc\Compiler\Utc\src\P2\main.c', line 148)
 I used MSVC 4.2 instead

 Borlands free compiler generates a faulty executable (crashes during
 execution).

 Compilation time
 DMC       325.29 seconds
 lcc-win32: 38.7 seconds
 gcc:          207.3 seconds
 MSVC:     64.112 seconds

 Execution time
 DMC         6.038 seconds
 lcc-win32:  6.77 seconds
 gcc             5.92 seconds
 MSVC4.2   5.728 seconds

 Executable size (bytes)
 DMC       1 890 332
 lcc-win32: 1 778 208
 gcc:           1 956 864
 MSVC      1 884 672

 Discussion:
 1: The option /IMPLIBC made the linker of DMC crash, so the executable

 mentioned above includes the size of the C library that was statically
 linked. This should reduce the size of the DMC executable by 40K approx.
 2: MSVC 6.0 should have approx twice the compilation time of MSVC 4.2 and
 approx the same speed. A bigger executable size too, since progress is
 progress :-)
 3: To minimize the influence of I/O, I used a source code with a BIG

 statement (approx 600 cases) that makes the gcc code stop for at least 4-5
 seconds, almost all the compilation time is spent in optimizing that

 statement, so the influence of I/O is minimized but still present.
 4: I used a Windows 2000 system with an Athlon 650MHZ CPU and 256MB of

 5: Without optimization, the speed of DMC is INCREDIBLE (26 seconds!!!).

 execution speed increses to 7.6 seconds only, and the executable size
 increases to 2 115 100. It beats even lcc-win32!

Jul 25 2001
↑ ↓ → Jan Knepper <jan smartsoft.cc> writes:
"Javier Gutiérrez" wrote:

     That's incredible! Seems that DMC is more stable than BCC 5.5 and MSVC
 6!

     I think Walter can improve it with the time in order to generate better
 executables...

<g> As if I didn't know.... Jan
Jul 25 2001