静态代码扫描可优化的代码,把代码当字串,用正则或字符串技术匹配模式,怎么识别出这种可优化的代码?有空的一起研究下,额外奖分。

超级大笨狼 2015-04-29 05:23:24
 
List<string> A = new List<string>();
List<string> B = new List<string>();
foreach (string a in A)
{
foreach (string b in B)
{
if (a == b)
{
//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准
}
}
}

for (int i = 0; i < A.Count; i++)
{
for (int j = 0; j < B.Count; j++)
{
if (A[i] == B[j])
{
//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准
}
}
}

for (int i = 0; i < A.Count; i++)
{
foreach (string b in B)
{
if (A[i] == b)
{
//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准
}
}
}

foreach (string a in A)
{
for (int j = 0; j < B.Count; j++)
{
if (a == B[j])
{
//类似这种取交集的,都可以用哈希或IENumerable.Intersect()优化,但不容易扫准
}
}
}


静态代码扫描可优化的代码,把代码当字串,用正则或字符串技术匹配模式,怎么识别出这种可优化的代码?有空的一起研究下,可用分多多,额外奖分。
...全文
380 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在不同的环境下,代码也有侧重点
software_artisan 2015-05-08
  • 打赏
  • 举报
回复
reshaper也不能优化代码的性能,只不过是可以帮你优化代码的可阅读性,帮你把代码变得更加规范而已。
xge 2015-05-07
  • 打赏
  • 举报
回复
没看到楼主说的用哈西,这样能优化不假,但仅限于大数据。多大算大取决于CPU和实测。这种优化不能大规模自动做,副作用很大,收益不确定。不过可以在ide里提示用户注意:可能是性能瓶颈,建议优化。这是在跟reshaper竞争啊。
xge 2015-05-07
  • 打赏
  • 举报
回复
新的roslyn编译器就可以做。问题是你准备怎么优化呢?两个collection取交集复杂度就是O(mn)啊。还可以更快吗? 用正则表达式做这个严重不靠谱,趁早放弃。
xge 2015-05-07
  • 打赏
  • 举报
回复
为什么不用rosyln呢?就是干这个用的呀。
xuzuning 2015-05-07
  • 打赏
  • 举报
回复
我理解楼主是要识别出这种结构 for[each] for[each] if 至于识别出来后的后续动作并不是主要的 正则的可干预度很低,解析他的报告与解析原文没有多大区别 对字符串逐字检查关键字就可以实现 由于可能还需要同时解析出其他语法成员,可考虑使用 trie 树做自动机
本拉灯 2015-04-30
  • 打赏
  • 举报
回复
超级大笨狼 2015-04-30
  • 打赏
  • 举报
回复
是啊,蛋炒饭,最简单也最困难,困难在CSDN上才有意外惊喜的答案。
  • 打赏
  • 举报
回复
这个太困难了,你举得例子就可以找出一堆的反驳例子

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧