.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编程。希望懂的童鞋可以多多找我交流,我也才入行不久。如果实在是耽误了您宝贵时间又不知所云的话,委屈您高抬贵手点一下推荐吧! …… ^_^
附新老程序截图:
作者:数据酷软件
出处:https://www.cnblogs.com/datacool/archive/2012/05/25/TPL_MY_FIRST_CODE_DATACOOL.html
关于作者:20年编程从业经验,持续关注MES/ERP/POS/WMS/工业自动化
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
联系方式: qq:71008973;wx:6857740733
基于人脸识别的考勤系统 地址: https://gitee.com/afeng124/viewface_attendance_ext
自己开发安卓应用框架 地址: https://gitee.com/afeng124/android-app-frame
WPOS(warehouse+pos) 后台演示地址: http://47.239.106.75:8080/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构