问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么Java的Hashmap比Python的dictionary慢得多

发布网友 发布时间:2022-04-20 20:36

我来回答

2个回答

热心网友 时间:2022-04-18 04:52

如果按照题主给出的Java和Python代码,在常见环境里按照默认配置来跑测试,确实会发现Python版例子比Java版例子跑得快。这自然也算是Java性能的一个坑啦——从来就没有什么“理论上Java应该比Python快”的理论,而是在知道常见性能坑、知道best practice的前提下,纯Java程序在较大规模的运算上有可能比纯Python程序有更好的性能,并且相对来说更scalable。

话说回来,这个例子要让Java比Python跑得快无需修改代码,只要稍微修改一下Java的启动参数即可。另外我也相信这个小例子不一定充分反映了题主说的“需要3个小时以上”的那个Java程序的性能问题。那个程序或许也只需要稍微调整一下启动参数就可以大幅提高性能,也可能要修改代码去掉一些不好的做法。

所以具体到题主这个例子,是什么造成Java比Python慢得多?是HashMap写得没dict好?是因为HashMap用Java实现而dict用C实现?是因为JIT的预热开销?还是别的?
假定题主运行Java和Python的环境都是常见的,例如说Oracle JDK vs 原装CPython,那么在Java一侧讨论的对象就是Oracle JDK里的HotSpot VM的性能。
答案是:是因为题主没有设置好GC的参数,而HotSpot VM默认的GC参数在这个例子上非常不适用,导致默认参数下Java版的性能非常糟糕。Java的HashMap自身并不慢,特别是经过JIT编译后它其实不会比CPython的dict慢,至少不是造成这个例子的性能差异的原因。

热心网友 时间:2022-04-18 06:10

是的,从接口上和实现上,python的dict都算是一种hashmap。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么把Applestore切换成中国区的?我在appleid上切换了地区怎么还不行... 为什么公司能免去董事长的位置呢 员工把董事长开除违法吗 山药炒木耳怎么做好吃又简单 泡田螺钓大青鱼最好用的小药? 求比值.(1)1:25 ... 化简笔 求比值 1.2:0.15 500米:25米 3千克:900克 先化简,再求比值. “不因篇咏见”的出处是哪里 “篇咏又清泚”的出处是哪里 Python的几种实现 请问Jython和Python的关系是什么? 用 CPython写的python代码能否用JPython解释器解释 python支持C语言语法吗? Cpython 和pycharm有什么区别? CPython是什么?PyPy是什么?Python和这两个东西有... java和python哪个做后台好一些? python和java哪个难学 Java和Python怎么学比较好呢? Java和python哪个功能比较强? 做哪些运动有利于身体健康? 学什么舞蹈可以长高,减肥? 跳舞对身体健康有什么促进作用? 什么舞蹈有助于长高?? 什么舞可以减肥??!! 学什么舞有助于减肥? zumba舞可以减肥吗 吃完饭跳舞助消化对胃会不好吗 有什么舞是可以减肥瘦身的? 吃什么东西可以助消化? python的各种实现有何优劣 脚本语言需要解释器才能运行,为什么可以用Python... 为什么在python中有全局解释器锁,但Java,C++中却... 新车磨合多少公里后可以满载5个人? 现在新车磨合期是多久,需要注意什么? 现在的汽车还存在磨合期吗,多久才过磨合期? 125踏板车新车多少公里后可以次次油门到底暴力驾驶。 新车的磨合期多少公里,就可以达到最佳车况? 在开新车时,磨合期车速不能超过多少? 新车磨合期在多少公里,期间要注 新车磨合期一般多少公里? 雅马哈巧格i125新车骑行600公里后可以暴力行驶了吗。 买了新车一般要开多少公里进行磨合? 新车磨合期多少公里才可以上高速公路?磨合期车速... 请问新车暴力磨合? 汽车磨合期要多少公里新车磨合期需要多少公里 新车暴力驾驶 一毫升等于多少立方厘米 隐形眼镜必须特别注意眼镜的卫生,该如何清理隐形... 隐形眼镜清洗步骤