使用lambda表达式覆盖比较器后,性能显着下降。为什么?

时间:2019-06-01 06:29:18

标签: java performance sorting lambda

编辑: 这实际上是关于leetcode的问题。因此,基准测试是由leetcode执行的。

在程序的某处,我必须对Map.Entry<Character, Integer>的列表进行排序。最初,我使用传统方式覆盖Comparator进行排序。然后,我还尝试了另一种使用lambda表达式的方法。

但是,使用lambda表达式的性能比原始方法差很多(4x ms和1x ms)。两个程序中的所有代码都相同。唯一的不同是这一行。

原始代码:

list.sort(new Comparator<Map.Entry<Character,Integer>>() 
  {
     @Override
     public int compare(Map.Entry<Character,Integer> o1, Map.Entry<Character,Integer> o2) {
       return o2.getValue().compareTo(o1.getValue());
  }
});

新代码:

list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));

0 个答案:

没有答案