Skip to content

I wrote one , need your evaluation. #38

Description

@yinsang
function priviteKindOf(sth) {
    if (typeof sth === 'object' || typeof sth === 'function') {
        const type = /\[object (.*)\]/.exec(Object.prototype.toString.call(sth))[1].toLowerCase().replace(/\s/, '')

        if (type === 'uint8array' && sth instanceof Buffer) {
            return 'buffer'
        }
        return type
    }
    return typeof sth
}
module.exports = priviteKindOf

Passed all your tests, simpler, but performance is not so good.
Benchmarking: (21 of 21), priviteKindOf's better amount is 6, kindOf is 15.

# benchmark/fixtures/arguments.js (32 bytes)
  kind-of x 46,303,737 ops/sec ±0.84% (87 runs sampled)
  priviteKindOf x 49,144,123 ops/sec ±0.44% (93 runs sampled)

  fastest is priviteKindOf

# benchmark/fixtures/array.js (22 bytes)
  kind-of x 35,050,057 ops/sec ±0.55% (94 runs sampled)
  priviteKindOf x 5,403,902 ops/sec ±1.34% (89 runs sampled)

  fastest is kind-of

# benchmark/fixtures/boolean.js (24 bytes)
  kind-of x 39,480,494 ops/sec ±0.81% (93 runs sampled)
  priviteKindOf x 50,521,049 ops/sec ±0.63% (91 runs sampled)

  fastest is priviteKindOf

# benchmark/fixtures/buffer.js (38 bytes)
  kind-of x 26,790,947 ops/sec ±0.64% (93 runs sampled)
  priviteKindOf x 1,499,540 ops/sec ±0.55% (92 runs sampled)

  fastest is kind-of

# benchmark/fixtures/date.js (30 bytes)
  kind-of x 21,006,428 ops/sec ±1.22% (87 runs sampled)
  priviteKindOf x 5,258,425 ops/sec ±0.40% (93 runs sampled)

  fastest is kind-of

# benchmark/fixtures/error.js (36 bytes)
  kind-of x 17,555,723 ops/sec ±1.21% (89 runs sampled)
  priviteKindOf x 5,578,384 ops/sec ±0.32% (96 runs sampled)

  fastest is kind-of

# benchmark/fixtures/function.js (34 bytes)
  kind-of x 18,311,781 ops/sec ±0.28% (91 runs sampled)
  priviteKindOf x 5,278,844 ops/sec ±0.44% (92 runs sampled)

  fastest is kind-of

# benchmark/fixtures/generator.js (39 bytes)
  kind-of x 16,307,369 ops/sec ±0.82% (90 runs sampled)
  priviteKindOf x 1,493,459 ops/sec ±0.71% (91 runs sampled)

  fastest is kind-of

# benchmark/fixtures/map.js (30 bytes)
  kind-of x 8,123,220 ops/sec ±0.79% (90 runs sampled)
  priviteKindOf x 4,127,706 ops/sec ±0.33% (92 runs sampled)

  fastest is kind-of

# benchmark/fixtures/null.js (24 bytes)
  kind-of x 36,778,380 ops/sec ±3.99% (79 runs sampled)
  priviteKindOf x 5,392,973 ops/sec ±0.54% (91 runs sampled)

  fastest is kind-of

# benchmark/fixtures/number.js (22 bytes)
  kind-of x 37,574,334 ops/sec ±3.44% (84 runs sampled)
  priviteKindOf x 33,370,196 ops/sec ±1.52% (87 runs sampled)

  fastest is kind-of

# benchmark/fixtures/object-instance.js (22 bytes)
  kind-of x 6,790,378 ops/sec ±0.62% (91 runs sampled)
  priviteKindOf x 5,270,510 ops/sec ±0.63% (92 runs sampled)

  fastest is kind-of

# benchmark/fixtures/object-plain.js (47 bytes)
  kind-of x 5,928,275 ops/sec ±0.55% (91 runs sampled)
  priviteKindOf x 5,085,198 ops/sec ±0.58% (91 runs sampled)

  fastest is kind-of

# benchmark/fixtures/regex.js (25 bytes)
  kind-of x 11,512,111 ops/sec ±1.38% (83 runs sampled)
  priviteKindOf x 5,081,246 ops/sec ±0.64% (91 runs sampled)

  fastest is kind-of

# benchmark/fixtures/set.js (30 bytes)
  kind-of x 7,139,086 ops/sec ±0.56% (92 runs sampled)
  priviteKindOf x 3,937,407 ops/sec ±0.48% (91 runs sampled)

  fastest is kind-of

# benchmark/fixtures/string.js (33 bytes)
  kind-of x 26,591,874 ops/sec ±1.28% (89 runs sampled)
  priviteKindOf x 32,886,354 ops/sec ±1.59% (88 runs sampled)

  fastest is priviteKindOf

# benchmark/fixtures/symbol.js (34 bytes)
  kind-of x 27,769,816 ops/sec ±1.37% (88 runs sampled)
  priviteKindOf x 34,443,818 ops/sec ±2.29% (69 runs sampled)

  fastest is priviteKindOf

# benchmark/fixtures/template-strings.js (36 bytes)
  kind-of x 26,634,815 ops/sec ±1.15% (89 runs sampled)
  priviteKindOf x 33,198,302 ops/sec ±1.55% (87 runs sampled)

  fastest is priviteKindOf

# benchmark/fixtures/undefined.js (29 bytes)
  kind-of x 31,228,852 ops/sec ±1.62% (70 runs sampled)
  priviteKindOf x 34,936,430 ops/sec ±1.83% (83 runs sampled)

  fastest is priviteKindOf

# benchmark/fixtures/weakmap.js (34 bytes)
  kind-of x 6,802,391 ops/sec ±0.55% (92 runs sampled)
  priviteKindOf x 1,791,358 ops/sec ±0.87% (92 runs sampled)

  fastest is kind-of

# benchmark/fixtures/weakset.js (34 bytes)
  kind-of x 6,540,679 ops/sec ±0.72% (90 runs sampled)
  priviteKindOf x 1,722,102 ops/sec ±1.68% (85 runs sampled)

  fastest is kind-of

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions