Rhino WIP Feature: General Optimization

I have spent a decent portion of the last few months identifying and fixing bottlenecks in Rhino performance. As a result, in many cases Rhino WIP runs significantly faster than Rhino 8 for many tasks. These include, but are not restricted to:

  1. Opening large files.

  2. Display performance for files with large numbers of objects.

  3. Saving speed for large files.

  4. General performance improvements for adding/modifying objects in large files.

I am typically seeing speed improvements of about 2x in these areas on the test models I have here.

  • Andy
22 Likes

At this point I would like to request users to report areas of Rhino that they consider to be slow - especially if it is something that we will be able to repeat here, either with a model or with clear steps.

1 Like

That is very good to know. Thanks for all the improvements. I just tested yesterday’s WIP, and this problem still stands. Right now, modyfing one value in the attribute user text for 400 objects took over 20 seconds. All the details are inside this thread. If it’s more of a GUI problem, and it’s known, then please delete this post.

This one:

Updated figures:
Unselected: 0.62sec.
Selected: 54sec.
(9.0.26013.12305, 2026-01-13)

I usually have a lot of problems importing big step files, since they have to build all the geometry and everything, but I am not sure that might be solvable.

Save A Copy is typically very slow.

SaveACopy extremely slow - Rhino / Rhino for Windows - McNeel Forum

Perhaps some improvement aspects to be considered:

  • _TestEnableMultiThreadedMeshingshould be finalised and integrated into Rhino 9. It has been in limbo for three versions(?)
  • Internal referencing for large items. Blocks and individual meshes should be able to support a point cloud appearence, or even be in reference only. Rhino Nature and Bella both do this inside Rhino as a display mode.
  • Object references stay the same when exported, so they dont generate different hashes every time.
1 Like

I will review https://mcneel.myjetbrains.com/youtrack/issue/RH-90869 - it has been re-prioritized for 9.0

1 Like

Try this in recent builds - I recently turned off compression for render meshes by default. This was by far the biggest bottleneck (you can still compress as an option on the save dialog)

Thanks @andy ,

I just updated WIP and tried Save A Copy vs SaveAs. Save A Copy still takes much longer than SaveAs.

Considering Save A Copy opens the SaveAs dialogue, I don’t know why there would be any difference between the two commands. Conceptually the only difference is the automated name is generated with date and time, and the file that’s saved isn’t opened. This is why I’d like to use it, a “quick” save of the current file is saved as a backup, except that it isn’t quick.

cheers,

Nick

Using transparent images.
For drawing over raster Images, I usually assign the raster image as a material, and then adjust its transparency. Once I start moving the slider, the feedback is very slow.

Thanx!

Worksessions run slow just opening the worksession panel or right clicking the worksession layer for large files.

1 Like

Work session opening / layer manipulation should be faster by a factor of 2. If you have a model (or models for work sessions) please upload.

Andy

Pedro

Do you have a nice repeatable case I can use to demonstrate this? Even if it is synthetic.

Andy

On slower computers, once I click the Material button inside the Properties Panel, it takes a long time until the panel actually shows up, and I can move the Transparency Slider. Moving the slider itself is also not stellar, maybe because of the Material preview above, although I am only interested in the picture transparency in the viewport in Wireframe display mode.

1 Like

I’m having trouble repeating that here. It’s pretty quick on a test model I’m using. Perhaps this is related to a specific model? Or can you repeat it with a simple test case?

Actually, now that I think about it, I bet the image is huge, right?

Hello. Just a simple model, straight out of File, New. And yes, large images make it worse. But probably you are not detecting it because of computer performance. The thing is that slower computer manage Rhino drafting and modelling quite well, but they struggle with this Picture transparency business.

Hello, does “general optimization” only refer to speed improvements?
Here are a few links to suggestions for improvements that would save thousands of Rhino users (I don’t know how many thousands there are) many clicks and thus also time every day.

thanks

Ok, I’ll test the worksessions later, but yesterday I decided to test this optimization just to make sure what’s being optimize.

I have this model in rhino 8 an did a quick speed test that gave me: Time to regen viewport 100 times = 1.78 seconds. (56.15 FPS)

But when I opened it in rhino 9 I noticed performance showed slower, I’m not sure what could be, which is surprising, giving the fact this model is not that heavy:

This test gave me: Time to regen viewport 100 times = 4.24 seconds. (23.61 FPS)

This is the file:

Rhino 9 SR0 2026-1-13 (Rhino WIP, 9.0.26013.12305, Git hash:master @ 8c202752270c241e0a0b2e7326d1f869fc570aa1)
License type: Commercial, build 2026-01-13
License details: Cloud Zoo
Expires on: 2026-02-27

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 32GB)
.NET 9.0.1

Computer platform: DESKTOP

Standard graphics configuration using DirectX
Primary display: NVIDIA T400 4GB (NVidia) Memory: 4GB, Driver date: 6-17-2025 (M-D-Y). DirectX(11)

Accelerated graphics device with 4 adapter port(s)

  • Windows Main Display attached to adapter port #0
  • Secondary monitor attached to adapter port #1

Secondary graphics devices.
Intel(R) UHD Graphics 770 (Intel) Memory: 2GB, Driver date: 8-19-2025 (M-D-Y).

Integrated graphics device with 4 adapter port(s)

  • There are no monitors attached to this device!

DirectX Settings
Safe mode: Off

OpenBLAS: OpenBLAS 0.3.30 DYNAMIC_ARCH NO_AFFINITY Haswell MAX_THREADS=64.

Rhino plugins that do not ship with Rhino
C:\Program Files\Chaos\V-Ray\V-Ray for Rhinoceros\V9\VRayForRhino.rhp “V-Ray for Rhino”

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 9 WIP\Plug-ins\Commands.rhp “Commands” 9.0.26013.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 9 WIP\Plug-ins\UpdatesAndStatistics\UpdatesAndStatistics.rhp “UpdatesAndStatistics” 9.0.26013.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 9.0.26013.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoRender.rhp “Legacy Rhino Render”
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 9.0.26013.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 9 WIP\Plug-ins\MeshCommands.rhp “MeshCommands” 9.0.26013.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoCycles.rhp “RhinoCycles” 9.0.26013.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 9.0.26013.12305
C:\Program Files\Rhino 9 WIP\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 9 WIP\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 9 WIP\Plug-ins\SectionTools.rhp “SectionTools”

Ok - that’s a frame rate rather than time-to-open or time to turn layer on. Rhino 9s new Direct3d display pipeline is not as mature as the OpenGL one yet, so that probably explains the difference.

1 Like