从.Net5.0开始,微软官方正式开始支持多平台。为了测试其性能如果,故在苹果2021年推出的在M1Pro本上做测试。所有代码运行在M1Pro芯片上。
同时使用C#5.0和Java1.8 编写相同的测试代码,求 r e s u l t = ∑ n = 1 3 ∗ 2 32 n mathrm{result} = sum_{n=1}^{3*2^{32}} n result=n=1∑3∗232n
计算的内容很简单,就是求 1+2+…+3*232的和,统计用时,测试代码见附录,结果如下:
C#: result: 5188146769120198656, time: 1070ms
Java: result: 5188146769120198656, time: 1055ms
两者成绩几乎一样。
根据笔者之前的经验,C#的性能是不如Java的,没想到现在经过多个版本的优化后,已经达到了Java的水平,微软的实力果然了得。要知道,C#9.0的功能要较Java强大非常多,但是仍然取得了相同的性能。
另外还需要注意一点,在MacBook上按F5执行后,在bin/Debug或bin/Release文件夹中并不会生成可执行程序,需要执行发布操作,将程序生成到指定的文件夹中,具体可以参见此文。
using System;
using System.IO;namespace HelloWorld
{class Program{static void Main(string[] args){var t1 = DateTime.Now;long result = 0;long len = 1024 * 1024 * 1024;len *= 3;for (long i = 0; i < len; i++)result += i;var t2 = DateTime.Now;Console.WriteLine($"result: {result}, time: {(t2-t1).TotalMilliseconds:0}ms");}}
}
import java.util.ArrayList;
import java.util.Random;public class RandomDemo {public static void main(String[] args) {var t1 = System.currentTimeMillis();long result = 0;long len = 1024*1024*1024;len *= 3;for(long i = 0; i < len; i++)result += i;var t2 = System.currentTimeMillis();System.out.println("nresult: " + result + ", time: " + (t2-t1) + "ms");}}
本文发布于:2024-01-29 10:43:01,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170649618514709.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |