Serializer go through all objects

Hello Speckle Team!

I have another question regarding recommitting modified objects with the C# SDK. In my specific use case, my program will only modify a few selected objects from a large model (5000+ objects), and I know that the rest of the model will remain unchanged.

In the transport, it will iterate through all the objects and inquire whether the server comtaines each object or not.

In my situation, this operation is very time-consuming, and I know in advance that only specific items will change. Somehow we only have to change these objects and their parents, all the way up to the root.

Is there a way for me to only query the server about the objects that I know will change? I want to achive this with the C# SDK.

Yes and no.

No.
Where a new version is published that has no new elements and instead includes references to past elements, these reference objects will also need to be diffed with the server.

Yes.
If you, for sure, know that these reference objects also already exist, then you can create a Version commit that contains existing reference objects, and your new serialized objects.

Hybrid.
If you try posting the objects you know to have changed, retaining their hashed IDs, and creating a Version commit that only contains reference objects, then that Version diffing should be pretty rapid as disconnected from the object posting.

Do you have metrics for how much time? Typically, it is a new object posting and for our Connectors, the conversion process itself is time-consuming and not really the diffing step.

Thank you for your response. In my use case, I am recommitting large objects with the C# SDK, thus the conversion process didn’t run, and throughout the entire operation, the receive time is only 1/3 of the time while the send time accounts for the remaining 2/3, majority due to the diffing process. I will examine the suggested approaches.

Have a great day!

I understand.

While you do that I’ll think harder and consult the team too.