项目作者: ajihyf

项目描述 :
Fast object shallow equal using Just-In-Time compiled functions.
高级语言: TypeScript
项目地址: git://github.com/ajihyf/shallow-equal-jit.git
创建时间: 2020-05-16T00:35:43Z
项目社区:https://github.com/ajihyf/shallow-equal-jit

开源协议:MIT License

下载


shallow-equal-jit

npm
Actions Status

Fast shallow equal with Just-In-Time compiled compare functions.

Installation

  1. npm install shallow-equal-jit --save
  2. # or
  3. yarn add shallow-equal-jit

Usage

  1. import { shallowEqualJIT } from 'shallow-equal-jit';
  2. // generate equal function
  3. const shallowEqual = shallowEqualJIT(['a', 'b']);
  4. console.log(shallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 })); // true
  5. // keys except for a and b are ignored
  6. console.log(shallowEqual({ a: 1, b: 2 }, { a: 1, b: 2, c: 3 })); // true
  7. console.log(shallowEqual({ a: 1, b: 2 }, { a: 1, b: 3 })); // false

By default, this library uses Object.is for comparison, you can pass a second argument as true to use === operator.

  1. const shallowEqualUsingStrictEq = shallowEqualJIT(['a', 'b'], true);

Benchmark

The following results were produced under Node v12.16.3 on a MacBook Pro (Early 2015) 2.7 GHz Intel Core i5.

  1. shallowequal (object, equal) x 3,273,287 ops/sec ±1.30% (91 runs sampled)
  2. shallowequal (object, same) x 831,562,263 ops/sec ±1.91% (87 runs sampled)
  3. shallowequal (object, unequal) x 5,090,021 ops/sec ±0.88% (84 runs sampled)
  4. is-equal-shallow (object, equal) x 4,010,229 ops/sec ±0.36% (89 runs sampled)
  5. is-equal-shallow (object, same) x 12,001,915 ops/sec ±0.47% (87 runs sampled)
  6. is-equal-shallow (object, unequal) x 7,006,307 ops/sec ±0.27% (91 runs sampled)
  7. shallow-equals (object, equal) x 7,306,243 ops/sec ±1.32% (91 runs sampled)
  8. shallow-equals (object, same) x 21,384,443 ops/sec ±0.18% (91 runs sampled)
  9. shallow-equals (object, unequal) x 12,936,562 ops/sec ±1.07% (90 runs sampled)
  10. fbjs/lib/shallowEqual (object, equal) x 3,025,569 ops/sec ±0.18% (93 runs sampled)
  11. fbjs/lib/shallowEqual (object, same) x 826,443,739 ops/sec ±1.03% (88 runs sampled)
  12. fbjs/lib/shallowEqual (object, unequal) x 4,535,318 ops/sec ±0.19% (90 runs sampled)
  13. fast-equals.shallowEqual (object, equal) x 3,080,743 ops/sec ±0.22% (91 runs sampled)
  14. fast-equals.shallowEqual (object, same) x 830,713,756 ops/sec ±0.91% (90 runs sampled)
  15. fast-equals.shallowEqual (object, unequal) x 4,740,245 ops/sec ±0.98% (91 runs sampled)
  16. fast-shallow-equal (object, equal) x 3,129,008 ops/sec ±0.42% (88 runs sampled)
  17. fast-shallow-equal (object, same) x 841,791,886 ops/sec ±0.83% (89 runs sampled)
  18. fast-shallow-equal (object, unequal) x 4,513,256 ops/sec ±0.39% (93 runs sampled)
  19. @wordpress/is-shallow-equal (object, equal) x 4,353,487 ops/sec ±0.37% (91 runs sampled)
  20. @wordpress/is-shallow-equal (object, same) x 206,089,794 ops/sec ±0.28% (90 runs sampled)
  21. @wordpress/is-shallow-equal (object, unequal) x 6,674,242 ops/sec ±0.31% (88 runs sampled)
  22. shallow-equal-jit (object, equal) x 836,387,131 ops/sec ±0.83% (89 runs sampled)
  23. shallow-equal-jit (object, same) x 836,515,680 ops/sec ±0.94% (89 runs sampled)
  24. shallow-equal-jit (object, unequal) x 828,178,623 ops/sec ±1.03% (87 runs sampled)
  25. shallow-equal-jit (===) (object, equal) x 832,237,483 ops/sec ±1.08% (87 runs sampled)
  26. shallow-equal-jit (===) (object, same) x 838,105,210 ops/sec ±0.96% (88 runs sampled)
  27. shallow-equal-jit (===) (object, unequal) x 843,725,200 ops/sec ±0.76% (91 runs sampled)