Performant update of globe anchor positions?

I am trying to visualize vehicles whose positions are coming from a third party simulation as lattitue longitude. The number of vehicles could go up into multiple hundreds maybe even thousands.

Following the Tutorial “Position Objects on the Globe” I use
globe_anchor.GetAnchorLatitudeAttr().Set(lat) globe_anchor.GetAnchorLongitudeAttr().Set(lon)
to set the position for each individual object on the globe.

I setup a test were I create a specific amount of objects and on the omniverse update event move them a constant offset. Doing this for just one object cuts my framerate form ~95 to ~45 fps. At around 30 objects I merely get ~10 fps. So I am far from being able to update hundreds of objects while keeping a stable framerate. Ok the vehicle positions might not get updated every frame as I have done her in the test but the updates will still happen quite regularly (multiple times a second).

Does anyone have tips to do regular position updates with a smaller hit on performance?

small update:
I transitioned to using a point instancer instead of individual prims for every vehicle. Since that means I can no longer use the GlobeAnchor I convert the lat lon coordinates to positions in the usd stage my self by using the proj library to convert lat lon coordinates to ecef and then the GeoReference.GetEcefToUsdTransformAttr() to convert to the position in the stage.

With that approach I get ~35 fps for 55 objects. So yes an improvement but not yet enough for the hundreds of vehicles I want to update from the simulation.

I see further potential for by using usdrt like shown here but I could not wrap my head around that yet.