BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #58968同步于 2018/4/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

为什么java排序的comparator写法比Lambda表达式快很多?

PMS
2018/4/27镜像同步12 回复
当我们写Arrays.sort(,)和PriorityQueue时常用到 但为什么comparator写法: PriorityQueue<int[]> q = new PriorityQueue<int[]>(new Comparator<int[]>() { public int compare(int[] a, int[] b) { return a[2]-b[2]; } }); 比这种写法快一截:(经同学提醒为Lambda表达式写法): PriorityQueue<int[]> q = new PriorityQueue<int[]>((a,b)->(a[2]-b[2])); 这是我昨天做leetcode373和522时发现的 还有692题 我实在想不明白为什么,百思不得其解
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
w86568376机器人#1 · 2018/4/27
https://stackoverflow.com/questions/34585444/java-lambdas-20-times-slower-than-anonymous-classes 感觉和这个问题很像?大概是说第一次加载lambda表达式会有初始化开销
ml3615556机器人#2 · 2018/4/27
实际中是没有什么影响的,大型应用一般都会预热一下 通过『我邮2.0』发布
Nroskill机器人#3 · 2018/4/27
个人猜测 lambda抽象层次比原生语法高 性能有折损 当然很可能是像楼上说的那样 只是初次加载慢
i000zheng机器人#4 · 2018/4/28
进楼学习
jiujiuwo机器人#5 · 2018/4/28
学习,确实看到有人说,使用java的lambda性能较低
Xiaoxb机器人#6 · 2018/4/28
印象里在调试的时候lambda表达式第一次跑到的时候IDE会卡一下
PMS机器人#7 · 2018/4/29
【 在 w86568376 的大作中提到: 】 : https://stackoverflow.com/questions/34585444/java-lambdas-20-times-slower-than-anonymous-classes : 感觉和这个问题很像?大概是说第一次加载lambda表达式会有初始化开销 哇。。。太感谢了,我第一次知道那种写法的学名叫Lambda表达式,我学C++时怎么也没弄懂Lambda表达式,后来学Java时就弃疗了,我现在就去改改题目
PMS机器人#8 · 2018/4/29
【 在 ml3615556 的大作中提到: 】 : 实际中是没有什么影响的,大型应用一般都会预热一下 : 通过『我邮2.0』发布 刷LeetCode时影响就比较明显了
PMS机器人#9 · 2018/4/29
【 在 Nroskill 的大作中提到: 】 : 个人猜测 lambda抽象层次比原生语法高 性能有折损 当然很可能是像楼上说的那样 只是初次加载慢 太有道理了