.net 和java速度慢_这篇博文c#比JAVA慢这么多 为什么?

试了一下第二个测试,把java那里的char改成了跟c#一样的int,循环2147483647次,c#确实比java慢点

测试环境:

CPU: i7-8550U

RAM: 16GB

OS: Windows 10 1809 x64

C#:.Net Core 2.1.403 (Windows 10 x64)

Java:openjdk 10.0.2 (Archlinux on WSL)

测试结果:

C#: 385s,384s,386s

java: 189s、187s、188s

看到有人说C#的string.Length性能有问题,于是全改成常量测试,结果:

C#: 227s,227s,226s

Java: 189s、189s、188s

可以看到C#的版本确实快了很多,而Java的基本没啥变化,应该是Java针对这点做了优化, 不过就最终结果而言.NET Core 2.1还是比openjdk 10慢点。

两种语言都是对同样的函数进行多次调用,JIT的策略应该不至于造成近30秒的差距。不过我直接用C++跑的速度反而比C#和Java更慢,但是开优化就会直接删掉循环,所以应该是JIT跑的过程中会把循环给优化掉。

有人提到C#有IL2CPP,所以用第一个算阶乘的例子对比了一下C++的性能(不用第二个例子是因为g++开优化直接把循环给优化没了),测试结果C#还是最慢,用CoreRT进行AOT编译也并不能更快,而Java和C++速度看不出差距。https://gist.github.com/LightMelodies/1d4f0222e2a208dd4ce1331315250cb8​gist.github.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值