问题描述
List<string>A=newList<string>();List<string>B=newList<string>();foreach(stringainA){foreach(stringbinB){if(a==b){//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准}}}for(inti=0;i<A.Count;i++){for(intj=0;j<B.Count;j++){if(A[i]==B[j]){//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准}}}for(inti=0;i<A.Count;i++){foreach(stringbinB){if(A[i]==b){//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准}}}foreach(stringainA){for(intj=0;j<B.Count;j++){if(a==B[j]){//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准}}}
静态代码扫描可优化的代码,把代码当字串,用正则或字符串技术匹配模式,怎么识别出这种可优化的代码?有空的一起研究下,可用分多多,额外奖分。
解决方案
解决方案二:
这个太困难了,你举得例子就可以找出一堆的反驳例子
解决方案三:
是啊,蛋炒饭,最简单也最困难,困难在CSDN上才有意外惊喜的答案。
解决方案四:
解决方案五:
新的roslyn编译器就可以做。问题是你准备怎么优化呢?两个collection取交集复杂度就是O(mn)啊。还可以更快吗?用正则表达式做这个严重不靠谱,趁早放弃。
解决方案六:
没看到楼主说的用哈西,这样能优化不假,但仅限于大数据。多大算大取决于CPU和实测。这种优化不能大规模自动做,副作用很大,收益不确定。不过可以在ide里提示用户注意:可能是性能瓶颈,建议优化。这是在跟reshaper竞争啊。
解决方案七:
我理解楼主是要识别出这种结构for[each]for[each]if至于识别出来后的后续动作并不是主要的正则的可干预度很低,解析他的报告与解析原文没有多大区别对字符串逐字检查关键字就可以实现由于可能还需要同时解析出其他语法成员,可考虑使用trie树做自动机
解决方案八:
为什么不用rosyln呢?就是干这个用的呀。
解决方案九:
reshaper也不能优化代码的性能,只不过是可以帮你优化代码的可阅读性,帮你把代码变得更加规范而已。