发现stringbuilder.replate的效率比regex.replate的效率相差一倍

本文通过实验对比了StringBuilder与正则表达式在文本替换上的性能差异,发现在短字符处理上StringBuilder略优,但随着字符串长度增加及替换次数增多,正则表达式的效率逐渐高于StringBuilder。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dot net

大家都知道StringBuilder关于字符的添加和替换都是在数据当中进行的,不会产生新的字符串,也不会产生垃圾数据。

本以为stringbuilder的替换效率也应该比regex的替换效率高一点,但我在实际测试中发现sb在短字符的效率略高,但替换的数据越多,字符串越长,则sb的效率比regex越慢。

可能的原因大概是因为字符串越长,替换过程中在内存中移动数据所需要的步骤就越多,而且sb涉及内存扩容的问题,将产生更多的步骤。

而regex是匹配正则表达式之后,再用string.replate对字符内的文本进行替换,所产生的文本都分配在了新的内存空间。

 

在测试过程中,我一直开着内存监视程序,发现两个方法所消耗的内存都差不多,string.replate产生的消耗大约在10M~20M左右,而stringbuilder的内存开销更小一些。

 

总体感觉,stringbuilder并没有产生我预料的能更高效替换文本的方法,对此表示遗憾。

结论:不要轻易使用StringBuild,sb仅适合大规模的字符追加操作。

另外求助如何在.net中更高效替换字符?

转载于:https://www.cnblogs.com/clso/archive/2010/11/04/1868954.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值