You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
Activity
nikoscham commentedon Nov 4, 2026
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:
There are two benchmarks so far:
frontal,lusolveandjacobi, linear and quadratic meshes up to 51,681 nodesResults 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:
tests/regressiondoes.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.