diff icon indicating copy to clipboard operation
diff copied to clipboard

Massive spike in CPU usage when running diff on a large object

Open User9684 opened this issue 3 years ago • 3 comments

Hi, I run a Discord bot that constantly checks differences in a relatively large object and sends messages accordingly, and I've noticed that every time diff is ran on the object, CPU usage spikes a ton. (See image) image

In my case, the object has roughly 8,100 elements.

User9684 avatar Jul 28 '22 16:07 User9684

Also, I have no idea how CPU spiked to 160% in that image.

User9684 avatar Jul 28 '22 16:07 User9684

I'd love to see a "relatively large object" similar to your case, that I can use for testing. I am working on a significant update (v2.x) which uses a different (more efficient) algorithm and would like to test.

Without the data to test your case, I would guess it is due to the stack. Not only is deep-diff recursive, I track cycles in the graph (recursion in your data), which can cause lots of tracking data on deeply nested objects. But of course, this is speculation.

The new version will give you the option to turn off checking for cycles, which should save some memory in your use case... but I'd only know for sure if I can test with similar data.

cerebralkungfu avatar Jan 16 '24 17:01 cerebralkungfu

I'd love to see a "relatively large object" similar to your case, that I can use for testing. I am working on a significant update (v2.x) which uses a different (more efficient) algorithm and would like to test.

Without the data to test your case, I would guess it is due to the stack. Not only is deep-diff recursive, I track cycles in the graph (recursion in your data), which can cause lots of tracking data on deeply nested objects. But of course, this is speculation.

The new version will give you the option to turn off checking for cycles, which should save some memory in your use case... but I'd only know for sure if I can test with similar data.

I was particularly monitoring changes to the Roblox Fast Flags list, which changes relatively often.

User9684 avatar Jan 19 '24 04:01 User9684