C#Linq比PHP慢?解决谜语#236A

时间:2012-11-25 18:57:17

标签: c# php linq

我正在一个网站上解决奥运IT谜语的培训。

我提供了两种解决方案:

 - C# 
  

http://ideone.com/exF1HJ

 - PHP 
  

http://ideone.com/WbaPHY

当网上判断显示,PHP版本更快时,我很困惑! 为什么呢?

C#:109 ms 3000 Kb

PHP:45 ms 0 Kb

怎么可能?

2 个答案:

答案 0 :(得分:5)

鉴于所给出的程序,程序重要位的执行时间 - 找到唯一的字符 - 肯定需要109ms。这听起来像“在线判断”涉及的是测量总执行时间,包括流程启动,.NET的情况下的JITting等。

这有点像要求哪辆车更快地从车库出来,并认为这代表了汽车的速度。

现在,PHP的array_unique函数 非常快,可能比LINQ更快......但基本上你无法从基准测试结果中获得任何有用的信息。您应该寻找执行秒数而非毫秒数的基准测试,并且包括启动/预热时间,除非您特别感兴趣。

答案 1 :(得分:2)

您的C#版本创建了三个您似乎不需要的阵列。您可以将其替换为:

string input = Console.ReadLine();
int charCount = input.Distinct().Count();
if(charCount % 2 == 0) ...

以下情况可能更快:

int charCount = new HashSet<char>(input).Count;