[cfe-dev] Compilation benchmark: bzip2: Follow up data

Richard Pennington rich at pennware.com
Sun Dec 23 09:16:56 PST 2007


Richard Pennington wrote:
> Richard Pennington wrote:
> [snip]

More data. I know have the ellsif driver doing all the steps except 
preprocessing. The first steps are done in memory:
1. compiling (C->bitcode) for each file.
2. Optimize each bitcode module.
3. Link the bitcode modules and optimize the result.

The bitcode is then converted to assembly and sent to disk as a .s file.
The final action is to use gcc to assemble and link the result.

[~/elsa/ellsif] dev% time gcc -O5 -o gcc.out -std=c9x test/sieve.i 
test/ofmt.i
1.228u 0.080s 0:01.38 94.2%     0+0k 0+0io 0pf+0w
[~/elsa/ellsif] dev% time ./ellsif test/ofmt.i test/sieve.i -O5
<premain>: CommandLine Error: Argument 'machine-licm' defined more than 
once!
ellsif: CommandLine Error: Argument 'machine-licm' defined more than once!
0.852u 0.044s 0:00.90 98.8%     0+0k 0+0io 0pf+0w
[~/elsa/ellsif] dev%

As you can see. At -O5 ellsif is slighty faster. This is a pretty small 
example: I'll try it on bzip2 soon.

Here are the ellsif phases and the timing by action:


[~/elsa/ellsif] dev% time ./ellsif test/ofmt.i test/sieve.i -O5 
-time-actions -v
<premain>: CommandLine Error: Argument 'machine-licm' defined more than 
once!
ellsif: CommandLine Error: Argument 'machine-licm' defined more than once!
Adding test/ofmt.i as a preprocessed C file
Adding test/sieve.i as a preprocessed C file
Phase: Preprocessing
   test/ofmt.i is ignored during this phase
   test/sieve.i is ignored during this phase
Phase: Translation
   compile test/ofmt.i to become an unoptimized LLVM bitcode file
   compile test/sieve.i to become an unoptimized LLVM bitcode file
Phase: Optimization
   optimize ofmt.ubc to become an LLVM bitcode file
   optimize sieve.ubc to become an LLVM bitcode file
Phase: Bitcode linking
   bclink ofmt.bc to become a file that has been linked
   bclink sieve.bc to become a file that has been linked
   bclink a.bc added to the file list
Phase: Generating
   ofmt.bc is ignored during this phase
   sieve.bc is ignored during this phase
   generate a.bc to become an assembly source file
Phase: Linking
   ofmt.bc is ignored during this phase
   sieve.bc is ignored during this phase
   assemble a.s to become a file that has been linked
Generating Native Executable With:
'/usr/bin/gcc' '-fno-strict-aliasing' '-O3' '-o' 'a.out' 'a.s'
===-------------------------------------------------------------------------===
                       ... Ellsif action timing report ...
===-------------------------------------------------------------------------===
   Total Execution Time: 0.6920 seconds (0.8302 wall clock)

    ---User Time---   --System Time--   --User+System--   ---Wall 
Time---  --- Name ---
    0.2040 ( 30.5%)   0.0120 ( 50.0%)   0.2160 ( 31.2%)   0.2192 ( 
26.4%)  Generating
    0.2040 ( 30.5%)   0.0000 (  0.0%)   0.2040 ( 29.4%)   0.2140 ( 
25.7%)  Optimization
    0.1640 ( 24.5%)   0.0120 ( 50.0%)   0.1760 ( 25.4%)   0.1788 ( 
21.5%)  Type checking
    0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.1190 ( 
14.3%)  Linking
    0.0560 (  8.3%)   0.0000 (  0.0%)   0.0560 (  8.0%)   0.0602 ( 
7.2%)  Bitcode linking
    0.0200 (  2.9%)   0.0000 (  0.0%)   0.0200 (  2.8%)   0.0178 ( 
2.1%)  LLVM generation
    0.0080 (  1.1%)   0.0000 (  0.0%)   0.0080 (  1.1%)   0.0103 ( 
1.2%)  Integrity checking
    0.0080 (  1.1%)   0.0000 (  0.0%)   0.0080 (  1.1%)   0.0077 ( 
0.9%)  Elaboration
    0.0040 (  0.5%)   0.0000 (  0.0%)   0.0040 (  0.5%)   0.0027 ( 
0.3%)  Parsing
    0.6680 (100.0%)   0.0240 (100.0%)   0.6920 (100.0%)   0.8302 
(100.0%)  TOTAL

0.860u 0.072s 0:00.95 97.8%     0+0k 0+0io 0pf+0w
[~/elsa/ellsif] dev%

-Rich



More information about the cfe-dev mailing list