C#慎用ToLower和ToUpper,小心把你的系统给拖垮了
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
不知道何时开始,很多程序员喜欢用ToLower,ToUpper去实现忽略大小写模式的字符串相等性比较,有可能这个习惯是从别的语言引进的,大胆猜测下是JS,为了不引起争论,我指的JS是技师的意思~ 1. 讲故事在我们一个订单聚合系统中,每一笔订单都会标注来源,比如JD,Taobao,Etao,Shopex 等等一些渠道,UI上也提供高级配置输入自定义的订单来源,后来客户反馈输入xxx查询不出订单,这里就拿shopex为例,用户用小写的shopex查询,但系统中标注的是首字母大写的Shopex,所以自然无法匹配,为了解决这个问题开发小哥就统一转成大写做比对,用代码表示如下: var orderfrom="shopex".ToUpper(); customerIDList=MemoryOrders.where(i=>i.Orderfrom.ToUpper()==orderfrom) .select(i=>i.CustomerId).ToList(); 改完后就是这么牛的上线了,乍一看也没啥问题,结果一查询明显感觉比之前速度慢了好几秒,干脆多点几下,好咯。。。在监控中发现CPU和memory突高突低,异常波动,这位小哥又在写bug了,查了下代码问他为什么这么写,小哥说在js中就是这么比较的~~~ 2. string.Compare 改造其实在C#中面对忽略大小写形式的比较是有专门的方法,性能高而且还不费内存,它就是 var orderfrom="shopex"; customerIDList=MemoryOrders.where(string.Compare(i.Tradefrom,tradefrom,StringComparison.OrdinalIgnoreCase)==0) .select(i=>i.CustomerId).ToList(); 这其中的 出处:https://www.cnblogs.com/huangxincheng/archive/2020/05/04/12827314.html 该文章在 2023/7/18 10:05:52 编辑过 |
关键字查询
相关文章
正在查询... |