lux-QAQ wrote:

I ran performance tests by following the LLVM Test Suite Guide and obtained the 
following results.

The `results_old` data represents the baseline performance using the 
**original, unmodified Clang**. The `results_new` data shows the performance 
using the **Clang with my modifications applied**.
[results_new.json](https://github.com/user-attachments/files/20655379/results_new.json)
[results_old.json](https://github.com/user-attachments/files/20655389/results_old.json)

``` shell

(base) ***@DESKTOP-80T55HI:~/code/llvmleak$ llvm-test-suite/utils/compare.py -m 
compile_time results_old.json results_new.json
Tests: 3327
Metric: compile_time

Program                                       compile_time
                                              results_old  results_new diff
SingleSour...tTests/2020-01-06-coverage-008     0.00         0.02      484.6%
SingleSour...tTests/2010-05-24-BitfieldTest     0.00         0.01      265.9%
SingleSour.../2006-01-29-SimpleIndirectCall     0.00         0.01      238.9%
SingleSour...006-12-07-Compare64BitConstant     0.00         0.01      186.8%
SingleSour...itTests/2003-07-06-IntOverflow     0.01         0.02      159.7%
SingleSour...UnitTests/2002-05-02-CastTest1     0.00         0.01      117.9%
tools/test/check_env                            0.02         0.05      107.9%
tools/test/ret0                                 0.02         0.05      107.9%
tools/test/abrt                                 0.02         0.05      107.9%
tools/test/ret1                                 0.02         0.05      107.9%
tools/fpcmp-target                              0.02         0.05      107.9%
SingleSour...UnitTests/2006-01-23-UnionInit     0.01         0.02       88.5%
SingleSour.../UnitTests/block-call-r7674133     0.01         0.01       76.2%
SingleSour...UnitTests/2005-05-12-Int64ToFP     0.01         0.02       64.2%
SingleSour.../UnitTests/SignlessTypes/cast2     0.01         0.02       62.4%
                           Geomean difference                           -5.4%
      compile_time
run    results_old  results_new        diff
count  3327.000000  3327.000000  454.000000
mean   0.197357     0.184994    -0.005927
std    2.103227     1.847044     0.393625
min    0.000000     0.000000    -0.797814
25%    0.000000     0.000000    -0.139927
50%    0.000000     0.000000    -0.031750
75%    0.000000     0.000000     0.055100
max    92.449400    75.736300    4.846154
(base) ***@DESKTOP-80T55HI:~/code/llvmleak$ llvm-test-suite/utils/compare.py 
--filter-short results_old.json results_new.json
Tests: 3327
Short Running: 2390 (filtered out)
Remaining: 937
Metric: exec_time

Program                                       exec_time
                                              results_old results_new
SingleSour...ut-C++/Shootout-C++-sieve.test       0.00        1.05
SingleSour...marks/CoyoteBench/lpbench.test       0.00        1.29
MultiSourc...lt/CrossingThresholds-flt.test       0.00        1.21
SingleSour...ce/Benchmarks/Misc/perlin.test       0.00        1.20
MultiSourc...CI_Purple/SMG2000/smg2000.test       0.00        1.23
MicroBench...HMARK_ANISTROPIC_DIFFUSION/256   20620.89    48887.01
MicroBench..._MemCmp<31, LessThanZero, Mid>     294.71      677.21
MicroBench...HMARK_ANISTROPIC_DIFFUSION/128    6420.34    13718.01
MicroBench...MemCmp<5, LessThanZero, First>     501.73     1004.02
MicroBench...test:benchAutoVecForBigLoopTC8       1.44        2.88
MicroBench...test:benchAutoVecForBigLoopTC2       1.51        3.01
MicroBench...t:BENCHMARK_asinf_novec_float_     109.42      217.25
MicroBench...rks.test:benchForIC4VW4LoopTC4       2.04        4.01
MicroBench...BENCHMARK_ORDERED_DITHER/128/2      37.37       72.65
MicroBench...BENCHMARK_acos_autovec_double_     158.15      302.43
           exec_time
run      results_old    results_new
count  937.000000     937.000000
mean   2723.168099    2608.870807
std    30514.292833   28486.676194
min    0.000000       0.000000
25%    2.978695       3.087209
50%    17.409600      17.785316
75%    281.905940     283.165699
max    666889.746452  622151.000000
```
### **Performance Test Results**

Following the LLVM Test Suite Guide, I conducted performance tests to evaluate 
the impact of my changes.

The results are encouraging. All tests passed successfully for both the 
baseline and modified versions. Furthermore, the preliminary data indicates a 
**compile-time reduction of 5.4%** with the modified Clang compared to the 
original.

### **Caveats and Future Work**

However, I want to be cautious with these initial findings. It is important to 
note that this is based on a single test run, and I suspect this performance 
difference could be attributed to random chance or environmental factors.

I am currently busy with my final exams, but as soon as I have time, I plan to 
conduct more rigorous testing. My plan is to repeat the experiments on my WSL 
setup and on a separate Mac to obtain more robust and reliable results.

### **Test Environment & Configuration**

To ensure the test was reproducible, the following configuration was used.

**Host Compiler:**
The same host compiler (installed via `apt`) was used to build both Clang 
versions:
```
$ /usr/bin/clang --version
Ubuntu clang version 18.1.3 (1ubuntu1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```

**Build Configuration:**
The following environment and CMake command were used to build both the 
baseline (original) and the modified Clang, ensuring a consistent build 
configuration between the two.

```shell
# Environment variables were set to ensure optimization

unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
unset LD_LIBRARY_PATH
unset CC
unset CXX

export CFLAGS="-O3 -march=native"
export CXXFLAGS="-O3 -march=native" 

# CMake command
cmake -G "Ninja" \
  -S /home/***/llvmtestfix/llvm \
  -B /home/***/llvmtestfix/build \
  -DCMAKE_INSTALL_PREFIX=/home/***/fixtestinstall \
  -DCMAKE_INSTALL_RPATH=/home/***/fixtestinstall/lib \
  -DLLVM_ENABLE_PROJECTS="clang;lld" \
  -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind;openmp" \
  -DCMAKE_C_COMPILER=/usr/bin/clang \
  -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
  -DCMAKE_CXX_COMPILER_TARGET=x86_64-pc-linux-gnu \
  -DCMAKE_C_COMPILER_TARGET=x86_64-pc-linux-gnu \
  -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-pc-linux-gnu \
  -DCMAKE_LINKER=/usr/bin/ld.lld \
  -DLLVM_ENABLE_LLD=ON \
  -DLLVM_PROFILE_GENERATE=OFF \
  -DLLVM_INCLUDE_DOCS=OFF \
  -DLLVM_BUILD_DOCS=OFF \
  -DLIBCXX_INSTALL_MODULES=ON \
  -DCMAKE_AR=/usr/bin/llvm-ar \
  -DCMAKE_RANLIB=/usr/bin/llvm-ranlib \
  -DCMAKE_BUILD_TYPE=Release \
  -DLLVM_BUILD_LLVM_DYLIB=ON \
  -DLLVM_LINK_LLVM_DYLIB=ON \
  -DLLVM_ENABLE_RTTI=ON \
  -DLLVM_ENABLE_EH=ON \
  -DLLVM_ENABLE_EXCEPTIONS=ON \
  -DLLVM_TARGETS_TO_BUILD="X86"
```

https://github.com/llvm/llvm-project/pull/143142
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to