Skip to content
Snippets Groups Projects

Optimize interpolated B field

This is my work on #384 (closed) . On my machine, a microbenchmark that hammers getField() in a loop goes from ~500ns/iteration to ~50ns/iteration with these changes. I think going beyond that would require more significant interface changes than I'm willing to commit to for now.

Quick summary of the work done:

  • Replace dynamically allocated std::sets with lazy iterables that produce the same values.
  • Where heap allocation is useful, prefer std::vector over std::set
  • Avoid some unnecessary ping-poing between local and global grid coordinates
  • Remove redundant array bound check
  • Replace expensive trig functions with judicious use of trig identities (similar to earlier Jacobian work)

This reminds me that we really need some serious magnetic field benchmarks, I'll try to write a couple when I have more time.

Fixes #384 (closed) .

Edited by Hadrien Benjamin Grasland

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading