我正在进行一项学校项目,在该项目中,我需要开发一个假设供验证或证伪。我的假设是在 Windows 平台上,C# 的执行时间比 Java 更快,因为 C# 是由 Microsoft 开发的。你们中有些人可能已经知道了这个假设的答案,并且可能已经有研究记录了这一点。但是这并不重要,我只需要自己完成这个项目。
所以,我想请教一些关注点的想法,以及如何衡量它们?
P.S. 它不应该太复杂。
谢谢!
所以,我想请教一些关注点的想法,以及如何衡量它们?
P.S. 它不应该太复杂。
谢谢!
以下是我需要测试的一些内容:
打开文件、写入一行数据并关闭文件所需的时间。
打开网络连接所需的时间。
打开数据库连接、写入一个字节并关闭连接所需的时间。
创建和填充数组、标准ArrayList和泛型ArrayList所需的时间。
使用不同算法进行排序所需的时间。
运行大循环所需的时间。
Stopwatch
(最精确的本机.NET测量解决方案)。我不了解Java,但也有一个StopWatch
类,其目的应该是相同的。首先,阅读这里 - 是的,其中包括一个链接的文章(好吧,这篇文章很棒)。如果你不这样做,我们可以在这里停止,因为你只会测量垃圾。而且,这个问题在某种程度上也存在于C#中。
此外,这取决于你用C#来衡量什么 - 使用不安全代码可能会在性能上带来良好的改进,但代价是基本上所有非托管语言的缺点。还有你用于程序的开关 - 不使用-server
对于Java来说是一个真正好的主意,让C#看起来比它更好 ;)
什么是合理的基准?一些简单的数学问题通常很好展示(两个JIT都很擅长做这件事,所以不要指望有太大的差异 - 这也是一个答案)。然后可能是一些基准测试,展示JIT在优化方面的表现如何 - CSE、虚拟内联等。这可能取决于你对优化的了解程度。
另外,测试完整/部分垃圾收集运行的延迟/时间肯定是有趣的。