Comparing version 0.0.1 to 0.0.2
0.0.2 / 2013-06-26 | ||
================== | ||
* improve performance | ||
0.0.1 / 2013-06-26 | ||
@@ -3,0 +8,0 @@ ================== |
@@ -35,3 +35,3 @@ /*! | ||
function checkType(valueType, expectType) { | ||
function checkType(value, valueType, expectType) { | ||
if (valueType !== expectType) { | ||
@@ -42,2 +42,4 @@ return 'expect ' + expectType + ', but got ' + valueType; | ||
function noop() {} | ||
var TYPES = { | ||
@@ -99,52 +101,62 @@ | ||
var valueType = typeof value; | ||
var ruleType = typeof rule; | ||
var checkFunction = null; | ||
// cache for performance | ||
var expectType = rule.__expectType; | ||
var checkFunction = rule.__checkFunction; | ||
var errorMsg = null; | ||
if (ruleType === 'string') { | ||
// key: 'number' | ||
value = valueType; | ||
valueType = rule; | ||
checkFunction = checkType; | ||
} else if (ruleType === 'function') { | ||
// key: function () {} | ||
checkFunction = rule; | ||
} else { | ||
if (rule.type) { | ||
ruleType = typeof rule.type; | ||
if (ruleType === 'string') { | ||
// key: { type: 'string' } | ||
value = valueType; | ||
valueType = rule.type; | ||
checkFunction = checkType; | ||
} else if (ruleType === 'function') { | ||
// key: { type: function () {} } | ||
checkFunction = rule.type; | ||
if (!checkFunction) { | ||
var ruleType = typeof rule; | ||
if (ruleType === 'string') { | ||
// key: 'number' | ||
expectType = rule; | ||
checkFunction = checkType; | ||
} else if (ruleType === 'function') { | ||
// key: function () {} | ||
checkFunction = rule; | ||
} else { | ||
if (rule.type) { | ||
ruleType = typeof rule.type; | ||
if (ruleType === 'string') { | ||
// key: { type: 'string' } | ||
expectType = rule.type; | ||
checkFunction = checkType; | ||
} else if (ruleType === 'function') { | ||
// key: { type: function () {} } | ||
checkFunction = rule.type; | ||
} | ||
} else if (rule.isDate) { | ||
// key: { isDate: true } | ||
checkFunction = exports.Date; | ||
} else if (rule.isId ) { | ||
// key: { isId: true } | ||
checkFunction = exports.Id; | ||
} else if (rule.isDateTime ) { | ||
// key: { isDateTime: true } | ||
checkFunction = exports.DateTime; | ||
} | ||
} else if (rule.isDate) { | ||
// key: { isDate: true } | ||
checkFunction = exports.Date; | ||
} else if (rule.isId ) { | ||
// key: { isId: true } | ||
checkFunction = exports.Id; | ||
} else if (rule.isDateTime ) { | ||
// key: { isDateTime: true } | ||
checkFunction = exports.DateTime; | ||
} | ||
} | ||
if (checkFunction) { | ||
errorMsg = checkFunction(value, valueType); | ||
if (errorMsg) { | ||
errors.push({ | ||
resource: resourceName, | ||
field: key, | ||
message: errorMsg, | ||
code: 'invalid' | ||
}); | ||
if (!checkFunction) { | ||
checkFunction = noop; | ||
} | ||
rules[key] = { | ||
__checkFunction: checkFunction, | ||
__expectType: expectType, | ||
}; | ||
} | ||
errorMsg = checkFunction(value, valueType, expectType); | ||
if (errorMsg) { | ||
errors.push({ | ||
resource: resourceName, | ||
field: key, | ||
message: errorMsg, | ||
code: 'invalid' | ||
}); | ||
} | ||
} | ||
@@ -151,0 +163,0 @@ |
{ | ||
"name": "parameter", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"description": "A parameter verify tools.", | ||
@@ -22,2 +22,3 @@ "main": "index.js", | ||
"devDependencies": { | ||
"benchmark": "*", | ||
"should": "*", | ||
@@ -24,0 +25,0 @@ "blanket": "*", |
@@ -100,2 +100,25 @@ parameter [![Build Status](https://secure.travis-ci.org/fengmk2/parameter.png)](http://travis-ci.org/fengmk2/parameter) [![Coverage Status](https://coveralls.io/repos/fengmk2/parameter/badge.png)](https://coveralls.io/r/fengmk2/parameter) | ||
## Performance | ||
```bash | ||
$ node benchmark.js | ||
rules pass: {id: p.Id} x 6,023,826 ops/sec ±0.87% (99 runs sampled) | ||
rules pass: {id: {type: p.Id}} x 4,207,059 ops/sec ±0.92% (98 runs sampled) | ||
rules pass: {id: {idId: true}} x 4,101,462 ops/sec ±5.28% (92 runs sampled) | ||
rules pass: {date: p.Date} x 3,421,468 ops/sec ±1.19% (92 runs sampled) | ||
rules pass: {date: {type: p.Date}} x 3,577,401 ops/sec ±1.71% (92 runs sampled) | ||
rules pass: {date: {isDate: true}} x 3,893,278 ops/sec ±0.84% (100 runs sampled) | ||
rules pass: {time: p.DateTime} x 3,705,611 ops/sec ±2.07% (93 runs sampled) | ||
rules pass: {time: {type: p.DateTime}} x 3,734,069 ops/sec ±1.96% (93 runs sampled) | ||
rules pass: {time: {isDateTime: true}} x 3,739,484 ops/sec ±1.68% (92 runs sampled) | ||
rules pass: {age: "number"} x 6,098,496 ops/sec ±0.74% (95 runs sampled) | ||
rules pass: {age: {type: "number"}} x 6,391,140 ops/sec ±0.93% (92 runs sampled) | ||
rules pass: {nick: "string"} x 5,995,432 ops/sec ±0.70% (98 runs sampled) | ||
rules pass: {nick: {type: "string"}} x 6,215,072 ops/sec ±1.04% (96 runs sampled) | ||
rules pass: {not_exists: "string", required: false} x 1,175,066 ops/sec ±1.39% (98 runs sampled) | ||
Fastest is rules pass: {age: {type: "number"}} | ||
``` | ||
## License | ||
@@ -102,0 +125,0 @@ |
14029
8
225
147
7