Home Page

Amphimixis is an automated project intelligence and evaluation tool for performance and migration readiness. It helps inspect a project for existing infrastructure such as CI, tests, benchmarks, dependencies, and build scripts, then runs builds and collects performance data for further comparison.

Amphimixis uses perf for profiling and produces a cross-table with two builds per CPU event for comparison.

Features

Analysis

Inspect CI, tests, benchmarks, build config and dependencies

Building

Build with configured recipes and platforms

Profiling

Run executables and collect timing and perf statistics

Comparison

Produce a cross-table per CPU event

Performance cross-table example

The cross-table below was generated by running Amphimixis on a YAML project, comparing builds on RISC‑V and x86.

What does a cross-table contain? The cross-table displays gathered performance counter profiles, grouped by CPU event for each function, of the two builds for performance comparison.

See the Usage Examples for the complete walkthrough and tables.

Note: For readability, only the most significant rows per event are shown. [unknown] symbols are omitted; one-sided 0.00% values are kept because they point to symbols available on only one architecture.

EVENT: BRANCH-MISSES

Symbol

2_2_2 (RISC-V) %

1_1_1 (x86) %

Delta %

__strncmp_evex

0.00

32.97

+32.97

strncmp

25.75

0.00

-25.75

tinyxml2::StrPair::ParseText(char*, char const*, int, int*)

8.62

25.64

+17.02

tinyxml2::XMLNode::DeleteNode(tinyxml2::XMLNode*)

0.00

6.38

+6.38

tinyxml2::XMLDocument::Identify(char*, tinyxml2::XMLNode**, bool)

3.73

0.00

-3.73

EVENT: CYCLES

Symbol

2_2_2 (RISC-V) %

1_1_1 (x86) %

Delta %

tinyxml2::StrPair::ParseText(char*, char const*, int, int*)

6.86

16.43

+9.56

tinyxml2::XMLDocument::Identify(char*, tinyxml2::XMLNode**, bool)

12.25

3.27

-8.99

tinyxml2::XMLNode::ParseDeep(char*, tinyxml2::StrPair*, int*)

8.82

11.53

+2.71

isspace

2.45

4.94

+2.48

isalpha

3.43

1.53

-1.90

What do 0.00% mean? 0.00% values mean the symbol exists only on one architecture (e.g. __strncmp_evex AVX-512 on x86 vs scalar strncmp on RISC-V) or the event is not available on RISC-V (cycles is approximated by the cpu-clock event).

Requirements

See the Usage Guide for the full list of required tools and system dependencies.

Quick Start

If you want to try Amphimixis right away, create a virtual environment, install the package from GitHub, and run the full pipeline on a target project:

python3 -m venv .venv
source .venv/bin/activate
pip install git+https://github.com/Amphimixis/amphimixis
amixis init local
amixis run /path/to/project --config local.yml