{"id":897,"date":"2018-04-21T15:06:14","date_gmt":"2018-04-21T12:06:14","guid":{"rendered":"http:\/\/leodev.ru\/blog\/?p=897"},"modified":"2018-04-21T15:26:50","modified_gmt":"2018-04-21T12:26:50","slug":"parallelstream-%d0%b8-stream-%d0%b2-java-8-test","status":"publish","type":"post","link":"https:\/\/leodev.ru\/blog\/java\/parallelstream-%d0%b8-stream-%d0%b2-java-8-test\/","title":{"rendered":"ParallelStream \u0438 Stream \u0432 Java 8 vs Java10 test"},"content":{"rendered":"<p>\u041f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Stream \u043f\u0440\u043e\u0442\u0438\u0432 ParallelStream \u0432 java 8<br \/>\n#JDK8 [20_000_000 integers] #Corei7 4790 #Windows10<br \/>\n#JDK10 [20_000_000 integers] #Corei7 4790 #Windows10<\/p>\n<p><em>\u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0438\u043c\u044b \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043d\u0430\u0448\u0435\u043c\u0443 \u0432\u0435\u0431 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/em><\/p>\n<h3><a href=\"http:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/xAsQNe7hJcY1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-902\" src=\"http:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/xAsQNe7hJcY1-1024x684.jpg\" alt=\"\" width=\"840\" height=\"561\" srcset=\"https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/xAsQNe7hJcY1-1024x684.jpg 1024w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/xAsQNe7hJcY1-300x200.jpg 300w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/xAsQNe7hJcY1-768x513.jpg 768w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/xAsQNe7hJcY1-1200x801.jpg 1200w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/xAsQNe7hJcY1.jpg 1478w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><a href=\"http:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/6SkQN8j9-lY1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-903\" src=\"http:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/6SkQN8j9-lY1-1024x691.jpg\" alt=\"\" width=\"840\" height=\"567\" srcset=\"https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/6SkQN8j9-lY1-1024x691.jpg 1024w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/6SkQN8j9-lY1-300x202.jpg 300w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/6SkQN8j9-lY1-768x518.jpg 768w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/6SkQN8j9-lY1-1200x810.jpg 1200w, https:\/\/leodev.ru\/blog\/wp-content\/uploads\/2018\/04\/6SkQN8j9-lY1.jpg 1463w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/h3>\n<p><!--more--><\/p>\n<h3>\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a<\/h3>\n<pre class=\"lang:java decode:true\">public static void checkParallelStreamVSStream(List&lt;Integer&gt; integers) {\r\n        long start = System.nanoTime();\r\n        List&lt;Integer&gt; list = integers.stream().sorted().collect(Collectors.toList());\r\n        System.out.println(\"Stream: \" + ((double)(System.nanoTime() - start) \/ 1_000_000.0) + \" milisec\");\r\n\r\n        long start2 = System.nanoTime();\r\n        List&lt;Integer&gt; list2 = integers.parallelStream().sorted().collect(Collectors.toList());\r\n        System.out.println(\"ParallelStream: \" + ((double)(System.nanoTime() - start2) \/ 1_000_000.0) + \" milisec\");\r\n    }\r\n\r\n    public static List&lt;Integer&gt; populateListIntegers() {\r\n\/\/        long start = System.nanoTime();\r\n        int counter = 10_000_000;\r\n        ArrayList&lt;Integer&gt; integers = new ArrayList&lt;&gt;();\r\n        for (int i = 0; i &lt; counter; i++) {\r\n            integers.add(i);\r\n            integers.add(counter - i);\r\n        }\r\n\/\/        System.out.println(System.nanoTime() - start) \/ 1000000);\r\n        return integers;\r\n    }<\/pre>\n<h3>\u0422\u0435\u0441\u0442<\/h3>\n<pre class=\"lang:java decode:true\" title=\"Test\">package ru.leodev.java8;\r\n\r\nimport org.junit.jupiter.api.BeforeEach;\r\nimport org.junit.jupiter.api.RepeatedTest;\r\n\r\nimport java.util.List;\r\n\r\npublic class StreamParallelismLessonTest {\r\n    private List&lt;Integer&gt; integers;\r\n\r\n    @BeforeEach\r\n    void setUp() {\r\n        integers = StreamParallelismLesson.populateListIntegers();\r\n    }\r\n\r\n    @RepeatedTest(10)\r\n    void checkParallelStreamVSStream() {\r\n        StreamParallelismLesson.checkParallelStreamVSStream(integers);\r\n    }\r\n}\r\n<\/pre>\n<h3><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/strong><\/h3>\n<p>#JDK8 [20_000_000 integers] #Corei7 4790 #Windows10<\/p>\n<blockquote><p>java8.StreamParallelismLessonTest<br \/>\nStream: 5233.113302 milisec<br \/>\nParallelStream: 3796.44236 milisec<br \/>\nStream: 813.629325 milisec<br \/>\nParallelStream: 3277.696421 milisec<br \/>\nStream: 9266.434093 milisec<br \/>\nParallelStream: 1986.27979 milisec<br \/>\nStream: 6898.908844 milisec<br \/>\nParallelStream: 2105.545209 milisec<br \/>\nStream: 9102.624215 milisec<br \/>\nParallelStream: 1923.134938 milisec<br \/>\nStream: 6872.610933 milisec<br \/>\nParallelStream: 2132.141496 milisec<br \/>\nStream: 9227.630765 milisec<br \/>\nParallelStream: 1920.749338 milisec<br \/>\nStream: 1096.067528 milisec<br \/>\nParallelStream: 5254.60191 milisec<br \/>\nStream: 9326.836975 milisec<br \/>\nParallelStream: 1924.956848 milisec<br \/>\nStream: 6865.812183 milisec<br \/>\nParallelStream: 2112.61936 milisec<\/p><\/blockquote>\n<p>#JDK10 [20_000_000 integers] #Corei7 4790 #Windows10<\/p>\n<blockquote><p>Stream: 2627.744455 milisec<br \/>\nParallelStream: 1862.677424 milisec<br \/>\nStream: 3058.011678 milisec<br \/>\nParallelStream: 2754.965704 milisec<br \/>\nStream: 1734.097379 milisec<br \/>\nParallelStream: 2959.054535 milisec<br \/>\nStream: 1986.801175 milisec<br \/>\nParallelStream: 2721.472891 milisec<br \/>\nStream: 3087.238709 milisec<br \/>\nParallelStream: 2432.054392 milisec<br \/>\nStream: 2913.872984 milisec<br \/>\nParallelStream: 2553.386865 milisec<br \/>\nStream: 2890.751857 milisec<br \/>\nParallelStream: 1586.459711 milisec<br \/>\nStream: 1971.080591 milisec<br \/>\nParallelStream: 1771.570487 milisec<br \/>\nStream: 2763.10672 milisec<br \/>\nParallelStream: 1605.66386 milisec<br \/>\nStream: 3546.110436 milisec<br \/>\nParallelStream: 1229.410088 milisec<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Stream \u043f\u0440\u043e\u0442\u0438\u0432 ParallelStream \u0432 java 8 #JDK8 [20_000_000 integers] #Corei7 4790 #Windows10 #JDK10 [20_000_000 integers] #Corei7 4790 #Windows10 \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0438\u043c\u044b \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043d\u0430\u0448\u0435\u043c\u0443 \u0432\u0435\u0431 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u043e\u0440\u043c\u043e\u0436\u0435\u043d\u0438\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/p>\n","protected":false},"author":1,"featured_media":898,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89],"tags":[74,169,250,251,252],"class_list":["post-897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java","tag-java-8","tag-parallelstream","tag-stream","tag-test"],"_links":{"self":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts\/897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/comments?post=897"}],"version-history":[{"count":6,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts\/897\/revisions"}],"predecessor-version":[{"id":906,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/posts\/897\/revisions\/906"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/media\/898"}],"wp:attachment":[{"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/media?parent=897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/categories?post=897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leodev.ru\/blog\/wp-json\/wp\/v2\/tags?post=897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}