当前位置:首页 > 每日看点 > 正文内容

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

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

你甚至根本不知道你自己在测什么,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

分享给朋友:

相关文章

B 站上有哪些很好的学习资源?

B 站上有哪些很好的学习资源?

前!方!高!能!精选了多位学习Up主,不乏百万粉丝的大V,还有超多珍贵的学习资源推荐。进了小破站,完全不用担心学完了该怎么办?因为根本学不完啊!!!B站的学习干货实在太多了!语言学习葉子先生酱https://space.bilibili.c...

Photoshop 有哪些使用技巧?

Photoshop 有哪些使用技巧?

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

为什么这次 Mac mini 的 M4 版本价格这么低?

为什么这次 Mac mini 的 M4 版本价格这么低?

扫了一眼这里的回答,目测没几个人真买过 Macbook、Mac mini且真正当主力工作机用过。这个初始(丐版)版本的机器实际谈不上多便宜,备受热捧有几个原因。它这代产品整体做了重新设计,大幅缩减了尺寸,真正称得上 Mini 了。对比前代,...

有没有能够兼顾便携并且流畅运行各种AI应用的笔记本?求推荐?

有没有能够兼顾便携并且流畅运行各种AI应用的笔记本?求推荐?

看了下题主的描述,可以考虑「联想YOGA Air 15 Aura AI元启版」,今年9月底出的一款轻薄本,也通过了英特尔Evo严苛认证。处理器用了英特尔最新的「酷睿 Ultra 7 258V」,主要亮点就是AI性能、图形处理能力和能效,很适...

自己拥有一台服务器可以做哪些很酷的事情?

自己拥有一台服务器可以做哪些很酷的事情?

我就有一台,跑了两年了,ipv6 ddns 网络,加虚拟化平台.跑了个 winserver 和 ubuntu 服务器。稳的雅皮!拆掉后盖,散热更好。烟盒固定硬盘。键盘防止灰尘掉落。电池拆掉,屏幕拆掉,也是散热考虑。屏幕拿去做便携副屏了。换...

华为纯血鸿蒙,从此天下三分了吗?

华为纯血鸿蒙,从此天下三分了吗?

万众期待的纯血版 HarmonyOS NEXT 终于是端上来了,主打一个自研,从里到外,从内核到架构,都是自研。用户的激情已经被点燃,可见大家对于纯血鸿蒙的期待,但是鸿蒙系统能不能真正与安卓、iOS三分天下呢?目前来说,还为时过早。iOS和...

发表评论

访客

看不清,换一张

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