.Net 4 TPL初体验

公司新防伪平台需要高效生成14位不重复、离散度高的全数字的防伪码,要求可以不依赖数据库排除重复码,要求快速反算(1秒以内),先用老方法单线程实现了;但是效率比较低每秒最快18个(本机配置是:intel core i5 m480,6G内存 / Win 7 64位旗舰版),在本机的虚拟机下最快每秒55个(intel core i5 m480,2G内存 / Win2003)。晕哦,64位系统咋表现不行哦,(32位Win7没用过^_^)。生产环境要求每秒要生成几百个,我又晕,怎么办呢。使用多线程?太考究功力了,线程同步和数据库异步存取等等难搞的问题会把人搞晕的。突然灵光一闪,试试.Net 4里TPL库吧,并行编程啊。一试效率立即提升了几十倍,但是出现了以下问题:

1、每批次生成5000个,有时一个批次生成不完5000个,可能只有3800.仔细看了下数据结果发现5000个自动被分成了2个批次,一个3800,一个1200.总体数据是对的。

2、有时生成几十万个以后,会出现跳码的现象(某个序列号没有出码)。

3、生成的码占用的序列号是乱的。

后来查了书,一句话引起了我注意:“TPL基础结构相当智能。如果它判断任务集没有从并行运行中受益,将选择按顺序执行。”,将最大的并行数设为1,问题都解决了,序号也有序列,只是效率下来了,不过还是超过了生成环境的要求。

 

记录下来,备忘,也给大家一个参考吧。TPL还真是个好东西,简化了线程的操作,提升了程序效率。牛,新技术果然很牛叉。看不懂别怪我啊,程序要跟具体业务挂钩的,如果你不懂防伪码,就不用管实现,看看效果就OK了,有需要自己试试TPL编程。希望懂的童鞋可以多多找我交流,我也才入行不久。如果实在是耽误了您宝贵时间又不知所云的话,委屈您高抬贵手点一下推荐吧!  ……    ^_^

 

附新老程序截图:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值