我正在一个站点上解决奥林匹克 IT 谜题进行培训。
我提供了两种解决方案:
- C#
- PHP
网上判断的时候我一头雾水,那个PHP版本的速度更快!!!为什么?
C#:109 毫秒 3000 KB
PHP:45 毫秒 0 KB
怎么会这样?
我正在一个站点上解决奥林匹克 IT 谜题进行培训。
我提供了两种解决方案:
- C#
- PHP
网上判断的时候我一头雾水,那个PHP版本的速度更快!!!为什么?
C#:109 毫秒 3000 KB
PHP:45 毫秒 0 KB
怎么会这样?
鉴于给定的程序,程序的重要部分的执行时间 - 查找唯一字符 - 绝对不会花费 109 毫秒。听起来无论涉及什么“在线判断”都是测量总执行时间,包括进程启动、.NET 的 JITting 等。
这有点像问哪辆车从车库里出来的速度更快,并认为它代表了汽车的速度。
现在完全有可能 PHP 的array_unique
函数真的非常快,可能比 LINQ 更快……但基本上你无法从基准测试结果中获得任何有用的信息。您应该寻找执行时间为几秒钟而不是几毫秒的基准,并且不包括启动/预热时间,除非这是您特别感兴趣的。
您的 C# 版本创建了三个您似乎不需要的数组。您可以将其替换为:
string input = Console.ReadLine();
int charCount = input.Distinct().Count();
if(charCount % 2 == 0) ...
以下可能更快:
int charCount = new HashSet<char>(input).Count;