# Run an analysis

### Analysis process

After setting up the ***FFT-C*** project, you end up on the following page.

![FFT-C project details](/files/46752150cf52f49dd9178f95dffdf295b808104c)

Clicking on any element of the project will take you back to the configuration tunnel, allowing you to change any parameter at any time. In general, changing a parameter will require you to redo the rest of the tunnel, as most of the steps depend on the previous choices.

To run the analysis, click on ***Run analysis***.

![Analysis is running](/files/fb7ed77bc7b87a7e632db438d81660f61e18ce41)

{% stepper %}
{% step %}

### Static analysis

The source files and the compiled binary objects are related to produce an omniscient representation mapping each code statement to the associated instructions. The instructions are statically characterized in terms of functionality and impact, and by consequence, the associated code too.
{% endstep %}

{% step %}

### Dynamic analysis

The code is instrumented, built and executed to produce profile data.
{% endstep %}

{% step %}

### Fusion of static and dynamic data

Static and dynamic analysis data are fused so both can be leveraged through cost models, estimating self and cumulative costs for each function.
{% endstep %}

{% step %}

### Optimization potential detection

Optimization potentials are researched based on identification of advanced code patterns, knowledge of instruction costs for the target, and possible target-specific instructions.
{% endstep %}
{% endstepper %}

***

### Analysis results

#### General results

![Analysis is done](/files/b97c118a075986324cc1ce6a337ac186f307aaf2)

After the analysis is over, which can take some time depending on the project and analysis mode, you can see an estimation of how much the code could benefit in terms of performance (here **9.5%**). This result can be obtained by applying the **14 detected optimization points**.

Click ***See latest analysis*** to view further details.

#### Analysis dashboard

![](/files/0998016e868e7cf5e23ec971a1d6bef0bb071554)

![](/files/cc18332f6bca84a8250692bb80d1bdd0938fbbb4)

The analysis dashboard contains useful information about the code.

* The three first tiles represent the **potential gain score**, indicating possible improvements in performance (and energy) by applying optimizations in your source code.
* Each tile corresponds to a kind of optimization:
  * Bit-exact: optimizations that do not change application outputs (safe, no trade-off).
  * Permissive: may change binary representation of outputs without degrading quality (e.g., different data types or math functions).
  * Lossy: modify accuracy (e.g., float→fixed, polynomial approximations, smaller data sizes). These can yield large performance gains but come with accuracy trade-offs.

The **Detected optimization kinds** tile shows details about which optimizations were detected and their implications.

You may also see estimated **CPU cycles** for your program and its functions, both self and cumulative costs.

Functionality repartition shows how your code behaves over time: for each function, the relative weight of calculations, memory, or control instructions. This helps prioritize optimization efforts (e.g., a function heavy on memory operations when you expect it to be compute-bound may suggest problematic memory access patterns).

Code coverage informs:

* Static coverage: which parts of code map to machine instructions (helps identify statically dead code).
* Dynamic coverage: which parts were executed during dynamic analysis (helps assess if execution was representative).

![Call graph](/files/b17db5d33a48154deb603f7adf8dd4a08df5ada6)

A call graph summarizes all information. Functions shown in red and orange are the most costly and indicate where to focus optimization efforts first.

Once you've analyzed your code, you can [run the optimization](/documentation/below/quickstart/run-an-optimization.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.wedolow.com/documentation/below/quickstart/run-an-analysis.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
