流的速度比每个循环要快吗?

问题描述 投票:1回答:1

我有两种方法。第一种方法:

public List<String> getCustomObjectsForEach(int n) {
        Map<String, Integer> foo = new HashMap<>();

        for (CustomObject cb : customObjects) {
            // some code
        }

        List<Map.Entry<String, Integer>> fooMapList = new ArrayList<>(foo.entrySet());
        List<String> fooNames = new ArrayList<>();

        for (Map.Entry<String, Integer> e : fooMapList) {
            fooNames.add(s.getKey());
        }

        return fooNames;
    }

及其流版本:

public List<String> getCustomObjectsStreams(int n) {
        return foo
                .stream()
                .collect(//some code here)
                .entrySet()
                .stream()
                .map(Map.Entry::getKey)
                .collect(Collectors.toList());
    }

我用JMH来测试它们的性能,每个循环花费了流方法运行所需时间的近两倍。请告知为什么这可能是因为我一直在阅读,大多数情况下流比每个循环都要慢。是因为流链接在一起并且每个循环都分开了吗?

java performance benchmarking jmh
1个回答
0
投票

仅当您具有大致等效的代码时,该规则才计数。

© www.soinside.com 2019 - 2024. All rights reserved.