results2text: Benchmark Comparisons

I’ve added a new tool (added in September 2025) to enable you to compare benchmark results that are generated and stored in the database (see here). The tool allows you to choose which results to compare and outputs the results in text or csv. This makes it far easier to analyze multiple runs without juggling local XML files.

What this gives you:

  • Direct DB comparisons for Overview, DML totals, per-transaction metrics, and Top Database Wait Events.
  • Colourized terminal output.
  • CSV export for easy spreadsheet/dashboard analysis.
  • A clean, declarative CLI.
  • Robust JSON parsing.

Highlights

  • Compare multiple runs by ID or pick the most recent N by time.
  • List available runs for quick selection.
  • See the same metrics you’re used to (TPS, totals, percentiles, waits).
  • Output is aligned and colourized for quick scanning.
  • Export to CSV files with one flag.

Quick Start

Some examples of the types of commands you might want to use

# Compare last 3 runs (default)
./results2text -cs //host/service -u USER -p PASS

# List latest runs (ID, Time, Name)
./results2text -cs //host/service -u USER -p PASS --list

# Compare specific IDs
./results2text -cs //host/service -u USER -p PASS--ids 122,121,102

# Export CSV (overview.csv, dml.csv, transactions.csv, waits.csv)
./results2text -cs //host/service -u USER -p PASS --last 4 --csv-dir out --csv-prefix tpcc_

Tip: Colours are enabled by default; turn them off with --no-color or when piping output to files.


Command-Line Options

  • Connection
    • -cs or --connectstring Oracle DSN, e.g. //host:1521/service
    • -u or--user Database username
    • -p or--password Database password
  • Scope and filters
    • -lr or --last N Compare/List last N runs (default: 3)
    • -i or--ids 1,2,3 Compare explicit run IDs (overrides --last)
    • -nl or--name-like TEXT Filter by recording name
    • -l or --list List runs and exit
  • Sections and output
    • -tw or --top-waits N Number of top wait events shown (default: 10)
    • -tx or --tx "Name1,Name2" Restrict transaction comparison to these names
    • -nc or --no-color Disable terminal colour
    • -cd or -cs or --csv-dir DIR Write CSV outputs to DIR
    • -cp or --csv-prefix PREFIX Optional CSV file prefix (default: results_)
  • Table selection
    • -t or --table NAME Results table name (default: BENCHMARK_RESULTS)
    • -o or --owner SCHEMA Optional schema owner prefix

Sample Output

The following shows the output of probably the most common use of the command. By default it will fetch the last 3 results from the database to compare.

full

Colours help call out “hot” percentages (e.g., red for >= 20%, yellow for >= 5%, green otherwise).


CSV Export

Add --csv-dir out to write four files:

  • overview.csv – Summary metrics by run.
  • dml.csv – Select/Insert/Update/Delete/Commit/Rollback totals by run.
  • transactions.csv – Per-transaction counts and percentiles across runs.
  • waits.csv – Top-N wait events across runs with “% time / waits / time”.

Whilst I haven’t added all of the metrics to the output I have included a python version of this program in the utils directory which can be modified to included any missing metrics you wish to include.

2025

Swingbench 2.8

4 minute read

I’m pleased to announce the release of Swingbench 2.8. It includes A new html front end to run and review benchmark runs New tool to render results with...

results2text: Benchmark Comparisons

2 minute read

I’ve added a new tool (added in September 2025) to enable you to compare benchmark results that are generated and stored in the database (see here). The tool...

Benchmarks results stored to the database

2 minute read

I’ve just added some functionality to Swingbench that I probably should have added a long time ago. Now, every time you run a benchmark using Charbench, Swin...

Back to Top ↑

2024

Back to Top ↑

2023

New functionality for swingbench…

4 minute read

A small but significant set of changes Last weekend I updated swingbench to add a few features that I’ve had frequent requests for. One is the addition of da...

Swingbench 2.7 June 2023 Update

less than 1 minute read

A new build of Swingbench with a whole bunch of small changes mainly related to the benchmarks. Faster build time for the JSON benchmark when creating lar...

Size Makes A Difference

6 minute read

In my previous post “Going Big” I discussed the difference testing a data set of a representative size can make to the usefulness of a benchmark. Running a w...

Going Big

9 minute read

Swingbench makes it simple to generate a dataset that you can simulate transactions against. However one of the problems I commonly see is that the users of ...

Back to Top ↑

2022

Swingbench 2.7

1 minute read

Swingbench 2.7 So I finally found some time to get a new build of swingbench done. The big change is that swingbench now only supports JDK-17 and above. Now,...

A new build of DB Time Monitor

less than 1 minute read

Following quickly on the heels of the update to MonitorDB I’m releasing a new build of DBTimeMonitor. This is a simple update using the latest Oracle jdbc dr...

A new build of MonitorDB

less than 1 minute read

I’ve just updated MonitorDB. It’s never going to replace Grafana but if you need a quick solution to monitor a few values inside of the Oracle Database and y...

Making Colour work on the Command Line for Windows

less than 1 minute read

I’ll make a confession. I don’t own a Microsoft Windows Machine. I never have and probably never will. This means that I generally never get the oppertunity ...

A New Release of Swingbench

2 minute read

A New Release of Swingbench… Along with a new website, I’m rolling out a new build of Swingbench. This release is a little embarrassing for me, as it include...

A New Look

2 minute read

A New Start… Quite a lot has changed since I last posted on this website. I had just left Oracle to join Google… A year and a half later I returned to Oracle...

Back to Top ↑