Tuesday, February 19, 2019

Performance / Optimization

1. Practical Performance
 - gprof
 - PAPI
 - Callgrind
 - Compiler Flags

1.1
 - IA-32 (32 bit, intel architecture 32 bit, i386): the 32 bit version of the x86 instruction set
 - AMD64 (64 bit, x64, x86_64, AMD64); the 64 bit version of the x86 instruction set
1.2 SIMD
 SISD (single instruction, single data) vs. SIMD (single instruction, multiple data)
 - SIMD 병렬 프로그래밍


Sunday, February 17, 2019

Duplicated code detection

1. PMD (https://pmd.github.io/)
CPD (copy paste detector)
If you use the Java 11 or more version, please use the PMD 6.11.0 or more

windows
> bin\cpdgui.bat

linux
$ ./run.sh cpd --minimum-tokens 100 -- files /usr/local/java/src/java
https://stackoverflow.com/questions/53260053/current-eclipse-plugin-for-duplicated-code



2. ConQAT
ConQAT end of life
You can download old versions from here.

Thursday, December 13, 2018

CPU profiler


1. CPU profilter
1. 1 gprof, Valgrind and gperftools - an evaluation of some tools for application level CPU profiling on Linux

1.2 List of performance analysis tools

2. Valgrind
 - memory leak profiling: $ valgrind ./sample
 - cache profileing: $ valgrind --tool==cachegrind ./sample
 - function profiling: $ valgrind --tool==callgrind ./sample
 - kcachegrind (GUI tool)

3. gprof
 - WIKI
 - tutorial: https://www.thegeekstuff.com/2012/08/gprof-tutorial/
 - What is gprof?
 - How to install and use profiling tool Gprof on Linux
 - GPROF Tutorial
    To write the gmon.out file properly, your program must exit normally. _exit()
    Call graph: gprof2dot
 - gprof Quick-Start Guide


  • use the makefile (edit CFLAGS / FFLAGS first) or call compiler at the shell
  • required flags for profiling: -pg -g
  • try with and without inlining: -finline / -fno-inline


4. gprof2dot