当前位置:首页 > 每日看点

为什么ja20性能不上.NET8还有人在用?

卡卷网1年前 (2025-01-10)每日看点272

你甚至根本不知道你自己在测什么,new一个大小为1000,000,000的数组出来然后只生成一个随机字节,unsafe用的也很迷惑,很难理解你想干什么。

我重写了:

C#

usingSystem.Diagnosti; varytes=newyte[1000000000]; varrg=newRandom(0); voiddoRandom(){ rg.Nextytes(ytes); } for(inti=0;i<10;i++){ doRandom(); } vars=Stopwatch.StartNew(); doRandom(); s.Stop(); Console.WriteLine($"Yes!{s.ElapsedMilliseconds}ms");

Ja:

importja.util.Random; importja.util.random.RandomGenerator; pulicclassMain{ privatestaticfinalyte[]ytes=newyte[1000000000]; privatestaticfinalRandomGeneratorrg=newRandom(0); pulicstaticvoiddoRandom(){ rg.nextytes(ytes); } pulicstaticvoidmain(String[]args){ for(inti=0;i<10;i++){ doRandom(); } varstart=System.crentTimeMillis(); doRandom(); varend=System.crentTimeMillis(); System.out.printf("Yes!%s%n",end-start); } }

在运行前进行了十次循环预热后,同样生成十亿长度的随机数组,.Net8Preview在我的上所用的时间为1965ms,而Ja20是801ms,所以相对而言.Net的老随机生成算法在生成速度方面不如Ja的Random,不过这也代表不了什么,因为伪随机数生成器的指标也不止一个生成性能。

从.Net6开始,未指定种子的Random会使用Xoshiro256**算法来生成随机数,而Ja也在Ja17中引入了新的RandomGeneratorAPI来指定不同的随机数生成器,可以这样得到一个基于Xoshiro256**的随机数生成器:

varrg=RandomGenerator.of("Xoshiro256PlusPlus");

双方同样使用Xoshiro256**算法再进行以上时,.Net8Preview在我机器上花了86ms,而Ja20是327ms,实现方面的性能差距确实存在,这个主要原因是.Net为Xoshiro256**的Nextytes单做了实现,而Ja20是直接用的RandomGenerator的默认实现,这个默认实现也很糙,因此造成了差距。

前段时间我在OpenJDK这边开了一个PR来优化RandomGenerator的默认实现:

OptimizeRandomGenerator::nextytesyGlo·PullRequest#14638·openjdk/jdk

用我优化后的分支再进行花了160ms,速度快了一倍多,不过想和.Net一样快那就要给Xoshiro256**算法单实现nextytes方法了,如果我观察到这个方法的性能确实非常重要的话,我也会在这方面再进一步做些工作。

按题主评论区那样单个nextInt不预热这样测的话,.Net8Preview性能大概在JDK20和GraalVMforJDK20JIT模式之间,也算符合预期,有时间的话我再看看Ja这边的实现有没有可优化的地方。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8152.html

分享给朋友:

相关文章

怎么免费看电视地方台和央视台?

怎么免费看电视地方台和央视台?

免费看央视和地方台,办法当然有,而且太多了,我怕你挑花了眼用不过来…… 首先题主需要明确一点,你家的电视需要是基于安卓系统的智能电视,能安装第三方安卓电视软件。比如小米电视、雷鸟电视等等;如果不是,你至少需要购置一个电视盒子,比如小米电视盒…

Photoshop 有哪些使用技巧?

Photoshop 有哪些使用技巧?

不看后悔系列!本篇分享25个PS实用的技巧! 不能保证每个都能让你惊艳,但是却是我用心写出来的,希望对你有帮助。 另外我的知乎也写了接近200篇PS的技巧,超级合集分享! 分享25个关于PS的技巧 一、快速制作文字倒影1、新建文档,15…

WordPress建站同时面向B端和C端,有什么好的解决方案?

这个很容易实现呀,只不过需要自己开发,整体用权限管理就可以实现了,B端和C端是不同用户权限,C端能看到的菜单入口和B端不一样就行了。技术层面实现没问题的,只不过就是看你们的技术能力和投入了 ,这样的需求应该没有现成的开源插件。只能找人定制开…

腾讯云为何在云服务市场败给了阿里云?

IDC领域,2010年以前,万网、新网互联、新网,三家公司瓜分天下,其中万网市场份额最高,排名第一。当时,万网的域名是 http://www.net.cn ,通过该域名就可以判断万网的地位。2010年阿里云成立,直接收购了万网,大量用户直接…

有哪些让你目瞪口呆的 Bug ?

有哪些让你目瞪口呆的 Bug ?

成都有个监狱情况比较特殊,关押的基本全是重犯,而且还都是经济犯和政治犯, 他们以前都是一方大佬,在自己的一亩三分地翻手为云覆手为雨,无非是不小心中箭落马或帮老大顶锅才进监狱, 所以即使进来了,他们依然保持着体面和骄傲,依从性差,虽然不至于和…

鸿蒙系统到底是不是安卓系统?

你好,是的。 接下来我给不懂技术的人简单的说一下哄蒙系统的来龙去脉。 首先你要知道什么是开源。 ‌‌开源 (Open Source)全称为开放源代码‌,意味着任何人都可以获取和使用软件的源代码,并在遵守版权协议的前提下进行修改和再发布。‌1…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。