Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

2.2 KiB

Performance And Size Measurements

This document shows a procedure for making performance and size comparisons between two versions of the SQLite Amalgamation "sqlite3.c". You will need:

  • fossil
  • valgrind
  • tclsh
  • A script or program named "open" that brings up *.txt files in an editor for viewing. (Macs provide this by default. You'll need to come up with your own on Linux and Windows.)
  • An SQLite source tree

The procedure described in this document is not the only way to make performance and size measurements. Use this as a guide and make adjustments as needed.

Establish the baseline measurement

  • Begin at the root the SQLite source tree
  • mkdir -p ../speed
    ↑ Speed measurement output files will go into this directory. You can actually put those files wherever you want. This is just a suggestion. It might be good to keep these files outside of the source tree so that "fossil clean" does not delete them.
  • Obtain the baseline SQLite amalgamation. For the purpose of this technical note, assume the baseline SQLite sources are in files "../baseline/sqlite3.c" and "../baseline/sqlite3.h".
  • test/speedtest.tcl ../baseline/sqlite3.c ../speed/baseline.txt
    ↑ The performance measure will be written into ../speed/baseline.txt and that file will be brought up in an editor for easy viewing.
    ↑ The "sqlite3.h" will be taken from the directory that contains the "sqlite3.c" amalgamation file.

Comparing the current checkout against the baseline

  • make sqlite3.c
  • test/speedtest.tcl sqlite3.c ../speed/test.txt ../speed/baseline.txt
    ↑ Test results written into ../speed/test.txt and then "fossil xdiff" is run to compare ../speed/baseline.txt against the new test results.

When to do this

Performance and size checks should be done prior to trunk check-ins. Sometimes a seemingly innocuous change can have large performance impacts. A large impact does not mean that the change cannot continue, but it is important to be aware of the impact.

Additional hints

Use the --help option to test/speedtest.tcl to see other available options.