Skip to content

Performance Benchmarking #52

Closed
Closed

Description

@nikoscham

Create benchmarks for solvers, mesh generators, and visualization routines. Integrate these benchmarks into the existing node.js examples. For visualization, implement an export-to-image feature to support the benchmarks.

Tasks

  • Collect and store performance metrics, including runtime, peak memory usage, and result accuracy. Regarding results accuracy, we can store a reference solution, for every example, and compare the solution of some random nodes with the reference solution.
  • Automate benchmark runs in CI. Extend the current workflow, which currently performs only basic runs.

Activity

  1. self-assigned this
    on Oct 16, 2025
  2. added theissue type on Oct 16, 2025
  3. linked a pull request that will close this issueAdd solver input validation and test scripts #83on Jul 14, 2026
  4. added this to the 0.4.0 milestone on Oct 31, 2026
  5. changed the issue type fromtoon Oct 31, 2026
  6. changed the issue type fromtoon Oct 31, 2026
  7. nikoscham commented on Nov 4, 2026

    @nikoscham
    MemberAuthor

    The performance benchmarks are now in a separate repository, FEAScript-benchmark, instead of in the Node.js examples. Each benchmark runs FEAScript and Elmer on identical meshes, on one pinned core, and records for every machine and FEAScript version:

    • Run time: assembly and solve, and end to end, as the median of 5 fresh processes
    • Peak memory of each process
    • Accuracy: against the exact solution where one exists, and node by node against Elmer
    • The setup: FEAScript version and commit, Elmer and Node versions, CPU, RAM and date

    There are two benchmarks so far:

    • 2D fin, heat conduction: frontal, lusolve and jacobi, linear and quadratic meshes up to 51,681 nodes
    • Lid-driven cavity, creeping flow: up to 16,641 velocity nodes

    Results are kept for FEAScript 0.2.0, 0.3.1 and 0.4.0 (RC), with plots of the speed-up by version. They have already guided #121, #120 and #132; for example, the 64×64 cavity went from 145 s to 10 s. The Solvers page of the documentation summarizes the results.

    On the two tasks:

    • Collect and store performance metrics: done, as above. For accuracy, the benchmarks compare with Elmer and with exact solutions instead of stored reference solutions; stored references are what tests/regression does.
    • Automate benchmark runs in CI: not planned. Timings on shared CI runners vary too much to track performance, and the benchmarks need Elmer, so they are run by hand on fixed machines and the results are committed.

    Benchmarks of mesh generation and of plotting, with an export to image, are not covered yet. If needed, they can be opened as new issues in FEAScript-benchmark. Closing this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

enhancementNew feature or request

Type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions