紧接着上篇,打算用C++ ADDON写一个valiator验证器,于是参照chriso的node-validator写了一个c++版本的,相关连接如下:
node.js版本的node-validator地址:https://github.com/chriso/node-validator
c++版本的node-validator地址:https://github.com/DoubleSpout/node-hvalidator
我们可以利用以下命令安装
npm install hvalidator
我也装下13,人家都在redis前加个h,我也在原来的validator前加个h,所以取名为:hvalidator。
目前这个模块只是完成了isxxx功能的coding,开发过程中最坑爹就是c++的正则模块了。为了速度,我选择了最原生的regex.h这个标准库,很多c++开发者都没用过,网上资料都少的可怜,大部分使用的boost库。
相关C++正则库对比文章地址:http://www.cnblogs.com/pmars/archive/2012/10/24/2736831.html
这个逆天的坑爹库直接让我给它跪了,为了写个正则表达式匹配得写上10几行代码,而且还有各种的配置,可能是我个人水平有限,花了一个晚上才搞清楚怎么使用它,刚开始各种不匹配,泪崩啊!!让我精疲力尽啊,几次都想放弃了。
最后终于我还是看懂了文档,为regex.h在编译的时候加上了REG_NOSUB选项,加速匹配。
目前这个hvalidator的正则不支持中文,而且过滤的功能还没写完,判断的部分开发完毕了,c++代码写的很差,希望大牛们指点一二啊。
最后献上测试代码,我们看下hvalidator的性能吧:
1 | var hv = require('../index.js'); |
我们看下最后的执行结果,多次执行:
1 | nodejs: 8ms |
还是C++的模块快一些哦~