diff --git a/benchmark/keys.js b/benchmark/keys.js new file mode 100755 index 0000000..50f8535 --- /dev/null +++ b/benchmark/keys.js @@ -0,0 +1,20 @@ +'use strict'; + +var fileType = require('file-type'); + +var types = { + png: true, + jpg: true, + tif: true, + webp: true +} + +module.exports = function isCwebpReadable(buf) { + var type = fileType(buf); + + if (!type) { + return false; + } + + return !!types[type.ext]; +}; diff --git a/benchmark/runner.js b/benchmark/runner.js index 0b34707..2651bd7 100755 --- a/benchmark/runner.js +++ b/benchmark/runner.js @@ -1,24 +1,29 @@ /* globals set, suite, bench */ 'use strict'; -var main = require('..'); -var indexOf = require('./index-of.js'); -var regex = require('./regex.js'); +const main = require('..'); +const indexOf = require('./index-of.js'); +const keys = require('./keys.js'); +const regex = require('./regex.js'); -var fixture = new Buffer(100); +const fixture = new Buffer(100); -suite('Detect file type', function() { +suite('Detect file type', () => { set('iterations', 30000); - bench('logical OR (current version)', function() { + bench('logical OR (current version)', () => { main(fixture); }); - bench('array.indexOf', function() { + bench('array.indexOf', () => { indexOf(fixture); }); - bench('regular expression', function() { + bench('keys', () => { + regex(fixture); + }); + + bench('regular expression', () => { regex(fixture); }); }); diff --git a/package.json b/package.json index 014cece..2915011 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": "shinnn/is-cwebp-readable", "author": "Shinnosuke Watanabe (https://github.com/shinnn)", "scripts": { - "bench": "matcha benchmark/runner.js", + "bench": "node --harmony_arrow_functions node_modules/.bin/_matcha benchmark/runner.js", "pretest": "eslint --config node_modules/@shinnn/eslintrc-node/rc.json index.js benchmark test.js", "test": "node --harmony_arrow_functions test.js | tap-spec", "coverage": "node --harmony_arrow_functions node_modules/.bin/istanbul cover test.js",