当前位置:  开发笔记 > 编程语言 > 正文

计算c#中大写字符数的最快方法

如何解决《计算c#中大写字符数的最快方法》经验,为你挑选了2个好方法。

对此效率的任何想法?...

CommentText.ToCharArray().Where(c => c >= 'A' && c <= 'Z').Count()

Matt Hamilto.. 35

好吧,只是敲了一些代码来计算你的方法:

int count = 0;
for (int i = 0; i < s.Length; i++)
{
    if (char.IsUpper(s[i])) count++;
}

结果:

你的:19737蜱虫

我的:118个蜱虫

差别很大!有时最直接的方式是最有效的.

编辑

出于兴趣,这个:

int count = s.Count(c => char.IsUpper(c));

进来大约2500蜱.所以对于一个"Linqy"单行程来说它很快.



1> Matt Hamilto..:

好吧,只是敲了一些代码来计算你的方法:

int count = 0;
for (int i = 0; i < s.Length; i++)
{
    if (char.IsUpper(s[i])) count++;
}

结果:

你的:19737蜱虫

我的:118个蜱虫

差别很大!有时最直接的方式是最有效的.

编辑

出于兴趣,这个:

int count = s.Count(c => char.IsUpper(c));

进来大约2500蜱.所以对于一个"Linqy"单行程来说它很快.



2> chuckj..:

首先,没有理由需要调用,ToCharArray()因为假设CommentText它是一个字符串,它已经是一个字符串IEnumerable.其次,您可能应该调用char.IsUpper而不是假设您只处理ASCII值.代码应该看起来像,

CommentText.Count(char.IsUpper)

第三,如果你担心速度,没有太多可以击败旧的for循环,

int count = 0;
for (int i = 0; i < CommentText.Length; i++) 
   if (char.IsUpper(CommentText[i]) count++;

一般来说,调用任何方法都会比内联代码慢,但只有在你完全确定这是代码中的瓶颈时才应该进行这种优化.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有