AMDCodeAnalyst is aGUI-based codeprofiler forx86 andx86-64-based machines. CodeAnalyst has similar look and feel on bothLinux andMicrosoft Windows platforms. CodeAnalyst uses specific hardware profiling techniques which are designed to work with AMD processors, as well as a timer-based profiling technique which does not require specific hardware support; this allows a subset of profiling features to work on non-AMD processors, such asIntel processors.[2]
As of March 2013, CodeAnalyst has been replaced byAMD CodeXL.[3]
CodeAnalyst is built onOProfile for the Linux platform and is available as a free download. The GUI assists in various kinds ofcode profiling including time based profiling, hardware event-based profiling, instruction-based profiling and others. This produces statistics about details such as time spent in eachsubroutine which can bedrilled down to the source code orinstruction level. The time taken by the instructions can be indicative of stalls in thepipeline during instruction execution. Optimization could be as simple as reordering the instructions for maximum utilization of a data line cache or altering/removing thebranches andloops so that the maximum number of execution units(Load/Store units,ALU,FP execution unit...) are utilized in parallel.
Support forPERF was added in CodeAnalyst 3.4, allowing users to choose between OProfile and PERF as the profiling backend.[4]
CodeAnalyst supports IBS (Instruction-Based Sampling) that was introduced in Family 10h AMD processors (Barcelona). With IBS support, CodeAnalyst can more precisely identify instructions that cause pipeline stalls and cache misses.[5]
The Linux version of CodeAnalyst is available underGNU General Public License 2.0.[6]
CodeAnalyst also uses other open-source components, including theQt framework,libdwarf,libelf, and theBinary File Descriptor library.