Skip to content

performance optimizations #1017

@kushalkolar

Description

@kushalkolar

Doing some performance optimizations in the ndwidget branch.

  • lighting objects are only present in a PlotArea.scene when a mesh is added to it. This buys us a lot of fps when using lots of subplots, went from 40 -> 50 with an NDWidget viz with 7 subplots.
  • optimize Axes update. I added an Axes._get_state() which returns a tuple[camera_matrix, viewport_rect, viewport_logical_size, scale]. The axes update only if this state changes. Went from 50 -> ~65fps !
  • we're probably doing a bunch of copies all over the place, use astype(copy=False) when necessary
  • implement yuv and other colorspaces and "bufferless" TextureArray #1033
  • disable AA by default, pixel_scale = 1.0 by default, top UI menu to set renderer options
  • Reactive rendering #1018

Here's a flamegraph with pyinstrument on some NDWidget stuff with 7 subplots:

Image

I think the only way to bump up the performance more (other than IO and NDWidget-specific stuff) is reactive rendering, I will make a dedicate issue about that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions