You could profile this lib and figure out where it’s spending most of its time and figure out if there any ways to improve (starts getting into implications of JS <-> system), but as you get more idiosyncratic you lose flexibility and ease of use.
Eg type checks, heap additions, recursion, etc can get “slow”
This code has 3 actual code commits over 6 days, none of which changed anything fundamental. What are you talking about?
It's quite possible to compete against this on multiple levels. One would be correctness. The other a bit less wasteful interface. Another would be handling arrays in a more useful way (or at all). And yet another would be safety. Another would be speed and memory use. Yet another would be non-recursive implementation. Another would be documentation (what's this diffing? enumerable/non-enumerable properties? how it deals with getters? how about inherited properties? - I can't know any of this without looking long and hard at the code)... etc. etc.
That's fine, of course, but probably should be in the README.
[1] https://github.com/AsyncBanana/microdiff/issues/2#issuecomme...
The code is clean, well organized and nice to look at, easy to read through and understand, and it's great that someone has made the effort to create this and share it for us to use.
For libraries above 1-2k lines of code that can be quite complicated (eg. things like database connectors), it starts being reasonable to mold expectations of my app around the library.
Also using coherent large utility libraries is something worthwhile (or was in the past), libs like underscore/lodash, etc.
But composing app from random underdocumented 2 function "libraries" from npm is just pain if you know what you're looking for. 1) you can't trust the code, so 2) you have to read it anyway and reading is often slower than writing
Every so often I try to reach for an npm library, only to find out that it's suboptimal, doesn't handle my edge cases, or just plain worse than the code I would have written.
The last time I tried to do this, I wanted a hash map with custom equality functions on the keys, since JS doesn't have one built-in by default. I searched for about 2 hours and didn't find a single one that actually worked (several claimed to be, but actually didn't work...)
So I wrote my own in about 100 lines. [0]
Data structures and algorithms tend to be really awful on npm.
[0] https://github.com/magcius/noclip.website/blob/master/src/Ha...