On 27. 10. 2020 0:11, #!/JoePea wrote:
Interesting, on my system I consistently see Set iteration is faster
(I replayed it many times). I'm in Chrome 85, Linux. This might be
temporary.

`new Set(Object.keys(obj))`

That creates two objects and an iteration (will the engine optimize
that away?), while `Object.keySet` (or similar) would surely create a
single object.

#!/JoePea

Just a speculation here, but it depends on the shape of obj. If obj has internal map, then Object.keys(obj) is internal constant structure, known to contain unique items. If arrays have a flag for "known to be unique", maybe combined with "known to not be mutated", both new Set(...) created from such structure and iterations can be pretty well-optimized.

Herby

On Sun, Oct 18, 2020 at 10:19 AM Jordan Harband <ljh...@gmail.com> wrote:

`new Set(Object.keys(obj))` seems pretty straightforward - I doubt it's worth 
adding something to the language just to make that shorter.

Separately, if you're looking for a deduped O(1) lookup of key presence, you 
already have _an object_ - `Object.prototype.hasOwnProperty.call(obj, key)`.

On Sun, Oct 18, 2020 at 8:28 AM Ehab Alsharif <ehalshari...@gmail.com> wrote:

Other than the fact that Object.keys existed really before Sets, you are 
comparing apples and oranges here in your benchmarks.
the include method has to scan the array in order to find elements, but sets 
are objects which are just hash tables.
Also you typically don't get the keys array to check that a key is there, you 
can do that directly using the object you have.
Another thing is that the typical use case for Object.keys is to get an 
iterator over the keys, returning a set for that purpose does not serve that 
purpose directly.

On Sat, Oct 17, 2020 at 4:51 AM #!/JoePea <j...@trusktr.io> wrote:

Sets are faster, even for tiny lists of four items. See the perf tests
(tested in Chrome):

https://twitter.com/trusktr/status/1315848017535098880

https://twitter.com/trusktr/status/1317281652540731392

#!/JoePea
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss


_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to