{"id":363204,"date":"2024-05-21T01:50:56","date_gmt":"2024-05-21T01:50:56","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=363204"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=363204","title":{"rendered":"<span>FizzBuzz for Senior<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/fa0\/4c9\/9c2\/fa04c99c20446cd104442eece510684b.jpg\" width=\"1280\" height=\"720\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fa0\/4c9\/9c2\/fa04c99c20446cd104442eece510684b.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0410\u043b\u043e\u0445\u0430 \u0432\u0441\u0435\u043c.<\/p>\n<p>\u041d\u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0443\u0436\u0435 \u0441\u0442\u0430\u043b\u0438\/\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043e\u0431\u044b\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e. \u041a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043b\u044e\u0431\u0438\u0442\u044c \u044d\u0442\u043e, \u043a\u0442\u043e-\u0442\u043e \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u0442\u044c, \u043d\u043e \u0444\u0430\u043a\u0442 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u044b \u043f\u0440\u043e\u0439\u0442\u0438 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b.<\/p>\n<p>\u0410 \u043a\u0430\u043a\u00a0\u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0435\u0440\u0430\u043c? \u041a\u0430\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u0430\u0442\u044c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0443? \u041a\u0430\u043a\u00a0\u043f\u043e\u043d\u044f\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0447\u0442\u043e\u00a0\u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u00ab\u0448\u0430\u0440\u0438\u0442\u00bb?<\/p>\n<p>\u042f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u043d\u0430 Senior \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430. \u0422\u0430\u043c \u0443 \u043f\u0430\u0440\u043d\u044f \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 <a href=\"https:\/\/leetcode.com\/problems\/fizz-buzz\" rel=\"noopener noreferrer nofollow\">FizzBuzz<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p>Given an integer\u00a0<code>n<\/code>, return\u00a0<em>a string array\u00a0<\/em><code>answer<\/code><em>\u00a0(<\/em><strong><em>1-indexed<\/em><\/strong><em>) where<\/em>:<\/p>\n<ul>\n<li>\n<p><code>answer[i] == \"FizzBuzz\"<\/code>\u00a0if\u00a0<code>i<\/code>\u00a0is divisible by\u00a0<code>3<\/code>\u00a0and\u00a0<code>5<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>answer[i] == \"Fizz\"<\/code>\u00a0if\u00a0<code>i<\/code>\u00a0is divisible by\u00a0<code>3<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>answer[i] == \"Buzz\"<\/code>\u00a0if\u00a0<code>i<\/code>\u00a0is divisible by\u00a0<code>5<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>answer[i] == i<\/code>\u00a0(as a string) if none of the above conditions are true. &#8212; <strong>\u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c.<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><strong>Example 1:<\/strong><\/p>\n<pre><code>Input: n = 3 Output: [\"1\",\"2\",\"Fizz\"] <\/code><\/pre>\n<p><strong>Example 2:<\/strong><\/p>\n<pre><code>Input: n = 5 Output: [\"1\",\"2\",\"Fizz\",\"4\",\"Buzz\"] <\/code><\/pre>\n<p><strong>Example 3:<\/strong><\/p>\n<pre><code>Input: n = 15 Output: [\"1\",\"2\",\"Fizz\",\"4\",\"Buzz\",\"Fizz\",\"7\",\"8\",\"Fizz\",\"Buzz\",\"11\",\"Fizz\",\"13\",\"14\",\"FizzBuzz\"]<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>  \u041f\u043e\u0441\u0442\u043e\u0439\u0442\u0435, \u044d\u0442\u043e \u0436\u0435 \u0438\u0437\u0438 \u0442\u0430\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0437\u043d\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432 \u043b\u043e\u0433\u0438\u043a\u0443, \u043a\u0430\u043a \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u043d\u044c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430?<\/p>\n<p>\u0410 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e <strong><em>follow up<\/em><\/strong> \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435?<\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/amp\/publications\/540136\/\" rel=\"noopener noreferrer nofollow\">\u041f\u0430\u0440\u0435\u043d\u044c \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441++ \u043e\u0447 \u043a\u0440\u0443\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a>. \u0418 \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0430 \u043a\u0430\u043a \u044d\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043d\u0430 Java.<\/p>\n<p>   \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043c\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u0442\u044c \u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u043a\u0430\u0436\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>System.out.println<\/code> \u0438 \u0442\u0440\u044d\u043a\u0430\u0442\u044c \u0442\u0430\u043a \u0432\u0440\u0435\u043c\u044f. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0432\u0435\u0440\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0412\u044b \u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435 \u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u0432 Java? \u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0438\u0442 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0430\u0448\u0438 \u0437\u0430\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c\u0438. <\/p>\n<details class=\"spoiler\">\n<summary>Just-In-Time Compiler<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412 Java \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 JVM (Just-In-Time Compiler) \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u0446\u0435\u043b\u044f\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 <code>System.out.println<\/code> \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043f\u0440\u0438 \u0437\u0430\u043c\u0435\u0440\u0430\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0432\u043b\u0438\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0437\u0430\u043c\u0435\u0440\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u0435\u043d\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0447\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 Java \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a Java Microbenchmarking Harness (JMH) \u0438\u043b\u0438 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 Java \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u044b \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c. \u042f \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u043d\u0447 \u043c\u0430\u0440\u043a\u0438. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u043c\u043d\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#8212; <a href=\"https:\/\/www.baeldung.com\/java-microbenchmark-harness\" rel=\"noopener noreferrer nofollow\">https:\/\/www.baeldung.com\/java-microbenchmark-harness<\/a>. \u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e \u0432\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0435\u0441\u043b\u0438 \u044f \u0434\u0435\u043b\u0430\u043b \u0447\u0442\u043e \u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0437\u043d\u0430\u0442\u044c \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>&lt;!-- Start for benchmarks &lt;dependency>       &lt;groupId>org.openjdk.jmh&lt;\/groupId>       &lt;artifactId>jmh-core&lt;\/artifactId>       &lt;version>1.37&lt;\/version> &lt;\/dependency>&lt;dependency>       &lt;groupId>org.openjdk.jmh&lt;\/groupId>       &lt;artifactId>jmh-generator-annprocess&lt;\/artifactId>       &lt;version>1.37&lt;\/version> &lt;\/dependency> &lt;!-- End for benchmarks--><\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>@Benchmark @OutputTimeUnit(TimeUnit.NANOSECONDS) @Fork(value = 1, warmups = 2) @BenchmarkMode(Mode.AverageTime)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u042f \u043d\u0430\u0447\u0430\u043b \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0435\u0448\u0430\u043b \u0431\u044b \u0432 \u043b\u043e\u0431 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e. \u041f\u0440\u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 Fizz, Buzz \u0438\u043b\u0438 FizzBuzz \u044f \u0432\u044b\u0432\u043e\u0434\u0438\u043b \u0438\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u0440\u043e\u0433 \u0440\u0430\u0432\u043d\u044b\u0439 1_000_000, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b&#8230; \u041f\u043e\u0434\u043e\u0436\u0434\u0430\u043b \u0447\u0443\u0442\u043a\u0430, \u043f\u043e\u0448\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u0444\u0435, \u0432\u044b\u043f\u0438\u043b \u043a\u043e\u0444\u0435, \u0435\u0449\u0435 \u0441\u0445\u043e\u0434\u0438\u043b \u0437\u0430 \u043a\u043e\u0444\u0435, \u043f\u043e\u043d\u044f\u043b \u0447\u0442\u043e \u043d\u0435 \u0434\u043e\u0436\u0434\u0443\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u043e\u0433 \u043d\u0430 100_000 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u043b\u043e.  \u0420\u0435\u0448\u0438\u043b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443. \u042f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0432 \u043b\u0438\u0441\u0442 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u0443 \u043b\u0438\u0441\u0442\u0430 \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0440\u0438\u0442\u044c \u043c\u043d\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0430 \u043d\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d =) \u041a\u0441\u0442\u0430\u0442\u0438, \u043c\u043e\u0436\u043d\u043e &#171;\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c&#187; \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0432 \u0444\u0430\u0439\u043b. \u041d\u043e  \u044d\u0442\u043e \u0434\u0443\u043c\u0430\u044e \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438 =) \u042f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043b\u0435\u043d\u0438\u0432.<\/p>\n<p>\u0418\u0442\u0430\u043a \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:<\/p>\n<details class=\"spoiler\">\n<summary>init0<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    private static final int LIMIT = 1_000_000;      @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init0() {         List&lt;String> rez = new ArrayList&lt;>();         for (int i = 0; i &lt; LIMIT; i++){             if (i % 3 == 0 &amp;&amp; i % 5 == 0){                 rez.add(\"FizzBuzz\");             } else if (i % 3 == 0){                 rez.add(\"Fizz\");             } else if (i % 5 == 0){                 rez.add(\"Buzz\");             }         }         System.out.println(rez.size());     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u043e\u0434 \u043a\u0430\u043a \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439. \u0410 \u044d\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code> init0<br \/>Result \"com.codewars.fizzbuzz.FizzBuzz.init0\":<br \/> 9623423.545 \u00b1(99.9%) 963191.903 ns\/op [Average]<br \/> (min, avg, max) = (9_457_337.807, 9_623_423.545, 10_057_615.367), stdev = 250137.879<br \/> CI (99.9%): [8660231.642, 10586615.448] (assumes normal distribution)<\/code><\/p>\n<p>\u0415\u0441\u043b\u0438 \u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u043b \u043d\u0430 \u0447\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435, \u0442\u043e \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 <strong><em>(min, avg, max)<\/em><\/strong> (\u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043c\u0435\u043d\u044f \u0435\u0441\u043b\u0438 \u044f \u043d\u0435 \u043f\u0440\u0430\u0432). \u041d\u0443 \u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b =) \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043d\u0435 \u0441 \u0447\u0435\u043c. <\/p>\n<p>\u042f \u0437\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0438\u0434\u0435\u044f: \u043e\u0441\u043e\u0437\u043d\u0430\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a, \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. <\/p>\n<p><em>&#171;\u043e\u0439 \u043a\u0430\u043a\u043e\u0439 \u044f \u043c\u043e\u043b\u043e\u0434\u0435\u0446 \u0438 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u043b\u044e \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a&#187; &#8212; \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f.<\/em><\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1:<\/p>\n<details class=\"spoiler\">\n<summary>init1<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init1() {         List&lt;String> rez = new ArrayList&lt;>();         for (int i = 0; i &lt; LIMIT; i++){             StringBuilder sb = new StringBuilder();             if (i % 3 == 0){                 sb.append(\"Fizz\");             }              if(i % 5 == 0){                 sb.append(\"Buzz\");             }             if (!sb.isEmpty()){                 rez.add(sb.toString());             }         }         System.out.println(rez.size());     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code>Result \"com.codewars.fizzbuzz.FizzBuzz.init1\":<br \/> 32507915.687 \u00b1(99.9%) 9189517.780 ns\/op [Average]<br \/> (min, avg, max) = (30_502_586.036, 32_507_915.687, 35_904_132.541), stdev = 2386488.585<br \/> CI (99.9%): [23318397.906, 41697433.467] (assumes normal distribution)<\/code><\/p>\n<p>\u041a\u0435\u043a, \u043d\u043e\u0440\u043c \u0442\u0430\u043a &#171;\u0443\u043b\u0443\u0447\u0448\u0438\u043b&#187;. \u042f \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043d\u0435 \u043c\u043e\u0433 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441\u043e\u0437\u0434\u0430\u044e \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u044e \u0435\u0433\u043e. \u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0441\u0442\u0440\u0438\u043d\u0433 \u043f\u0443\u043b\u043b \u0438 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u043e\u0442\u0442\u0443\u0434\u0430. \u042d\u0442\u043e \u043b\u0438\u0448\u044c \u043c\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041a\u0430\u043a \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u043d\u044f \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0432 \u043f\u0440\u0438\u0448\u0435\u043b \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0412 \u044d\u0442\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e <code>%<\/code><\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2:<\/p>\n<details class=\"spoiler\">\n<summary>init2<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>@Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init2() {         List&lt;String> rez = new ArrayList&lt;>();         int i = 1, fizz = 0, buzz = 0;         while (i &lt;= LIMIT){             fizz++; buzz++;             if (fizz == 3 &amp;&amp; buzz == 5) {                 rez.add(\"FizzBuzz\");                 fizz = buzz = 0;             } else if (fizz == 3) {                 rez.add(\"Fizz\");                 fizz = 0;             } else if (buzz == 5) {                 rez.add(\"Buzz\");                 buzz = 0;             }             i++;         }          System.out.println(rez.size());     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code>init2<br \/>Result \"com.codewars.fizzbuzz.FizzBuzz.init2\":<br \/> 8915412.908 \u00b1(99.9%) 514862.288 ns\/op [Average]<br \/> (min, avg, max) = (8_767_079.539, 8_915_412.908, 9_056_679.338), stdev = 133708.101<br \/> CI (99.9%): [8400550.620, 9430275.196] (assumes normal distribution)<\/code><\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u0435\u043d\u044c\u043a\u043e, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0431\u0443\u0441\u0442 \u043f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441\u0430. \u0415\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e <code>avg<\/code> \u0442\u043e \u0431\u0443\u0441\u0442 \u0432 3.6 \u0440\u0430\u0437. \u0410 \u0435\u0441\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u043e \u0432 1.07 \u0440\u0430\u0437\u0430<\/p>\n<p>\u0414\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u0410 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435? \u041f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043a\u043e\u0434 \u0441++ \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u0434\u0435\u0435 \u043a\u043e\u0434\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u043c. \u0418 \u0432\u0435\u0434\u044c \u043f\u0440\u0430\u0432\u0434\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0442\u044c <code>LIMIT<\/code> \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0447\u0430\u043d\u043a\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u0442\u044c \u0438\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u042f \u0432\u0437\u044f\u043b 4 \u043f\u043e\u0442\u043e\u043a\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\/\u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438.<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 3:<\/p>\n<details class=\"spoiler\">\n<summary>init3<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    private static final int LIMIT = 1_000_000;     private static final int NUM_THREADS = 4;       @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init3() {         ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);         CountDownLatch latch = new CountDownLatch(NUM_THREADS);          int chunkSize = LIMIT \/ NUM_THREADS;          List&lt;String> results = Collections.synchronizedList(new ArrayList&lt;>());          for (int i = 0; i &lt; NUM_THREADS; i++) {             final int start = i * chunkSize + 1;             final int end = (i + 1) * chunkSize;             executorService.submit(() -> {                 List&lt;String> threadResults = printFizzBuzzInRange(start, end);                 results.addAll(threadResults);                 latch.countDown();             });         }          try {             latch.await(); \/\/ Wait for all threads to finish         } catch (InterruptedException e) {             e.printStackTrace();         }          executorService.shutdown();          \/\/ Print the results         System.out.println(results.size());     }      private static List&lt;String> printFizzBuzzInRange(int start, int end) {         List&lt;String> threadResults = new ArrayList&lt;>();         for (int i = start; i &lt;= end &amp;&amp; i &lt;= LIMIT; i++) {             boolean divisibleBy3 = i % 3 == 0;             boolean divisibleBy5 = i % 5 == 0;              if (divisibleBy3 &amp;&amp; divisibleBy5) {                 threadResults.add(\"FizzBuzz\");             } else if (divisibleBy3) {                 threadResults.add(\"Fizz\");             } else if (divisibleBy5) {                 threadResults.add(\"Buzz\");             }         }         return threadResults;     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code>init3<br \/> Result \"com.codewars.fizzbuzz.ParallelFizzBuzz.init3\":<br \/> 405473.708 \u00b1(99.9%) 13594.474 ns\/op [Average]<br \/> (min, avg, max) = (401_633.964, 405_473.708, 410690.669), stdev = 3530.442<br \/> CI (99.9%): [391879.234, 419068.182] (assumes normal distribution)<\/code><\/p>\n<p>\u0418 \u0431\u0430\u0443. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0432 21.9 \u0440\u0430\u0437 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u0438 \u0432 23.7 \u0440\u0430\u0437 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430.<\/p>\n<p>\u041d\u0443 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0435\u0439 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u042f \u0442\u043e\u0436\u0435 \u0442\u0430\u043a \u0434\u0443\u043c\u0430\u043b \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0430\u043f\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0418 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 4:<\/p>\n<details class=\"spoiler\">\n<summary>init4<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public static void init4() {         int chunkSize = LIMIT \/ NUM_THREADS;          List&lt;CompletableFuture&lt;List&lt;String>>> futures = new ArrayList&lt;>();          for (int i = 0; i &lt; NUM_THREADS; i++) {             final int start = i * chunkSize + 1;             final int end = (i + 1) * chunkSize;             CompletableFuture&lt;List&lt;String>> future = CompletableFuture.supplyAsync(() -> {                 return printFizzBuzzInRange(start, end);             });             futures.add(future);         }          List&lt;String> results = futures.stream()                 .map(CompletableFuture::join) \/\/ Wait for each CompletableFuture to complete                 .collect(ArrayList::new, List::addAll, List::addAll);          \/\/ Print the results         System.out.println(results.size());     }      private static List&lt;String> printFizzBuzzInRange(int start, int end) {         List&lt;String> threadResults = new ArrayList&lt;>();         for (int i = start; i &lt;= end &amp;&amp; i &lt;= LIMIT; i++) {             boolean divisibleBy3 = i % 3 == 0;             boolean divisibleBy5 = i % 5 == 0;              if (divisibleBy3 &amp;&amp; divisibleBy5) {                 threadResults.add(\"FizzBuzz\");             } else if (divisibleBy3) {                 threadResults.add(\"Fizz\");             } else if (divisibleBy5) {                 threadResults.add(\"Buzz\");             }         }         return threadResults;     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code>init4<br \/> Result \"com.codewars.fizzbuzz.ParallelFizzBuzz2.init4\":<br \/> 78501.416 \u00b1(99.9%) 40269.999 ns\/op [Average]<br \/> (min, avg, max) = (73_281.388, 78_501.416, 97177.380), stdev = 10457.991<br \/> CI (99.9%): [38231.417, 118771.415] (assumes normal distribution)<\/code><\/p>\n<p>\u0411\u0443\u043c \u0438 \u0441\u043d\u043e\u0432\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435. \u041f\u0440\u0438\u0447\u0435\u043c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435.  \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u044f \u043d\u0435 \u043c\u043e\u0433 \u044d\u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <code>Executors.newFixedThreadPool(NUM_THREADS)<\/code>. \u0422\u0430\u043a\u0436\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u043d\u0430 <code>executorService.shutdown()<\/code>, \u043d\u043e \u044d\u0442\u043e \u044f \u043d\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <code>executorService <\/code>\u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u0442\u0435\u0441\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 &#171;\u0447\u0435\u0441\u0442\u043d\u044b\u043c\u0438&#187;. \u0412\u0435\u0434\u044c \u043c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0435\u0449\u0435 \u043f\u043e\u0438\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c? \u0414\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c. \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0438\u043c \u0430\u043f\u0438 =)<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 5:<\/p>\n<details class=\"spoiler\">\n<summary>init5<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public static void init5() {         List&lt;String> results = IntStream.rangeClosed(1, LIMIT)                 .parallel()                 .mapToObj(ParallelFizzBuzz3::printFizzBuzz)                 .filter(s -> !s.isEmpty())                 .toList();          \/\/ Print the results         System.out.println(results.size());     }      private static String printFizzBuzz(int num) {         boolean divisibleBy3 = num % 3 == 0;         boolean divisibleBy5 = num % 5 == 0;          if (divisibleBy3 &amp;&amp; divisibleBy5) {             return \"FizzBuzz\";         } else if (divisibleBy3) {             return \"Fizz\";         } else if (divisibleBy5) {             return \"Buzz\";         } else {             return \"\";         }     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code>init5<br \/> Result \"com.codewars.fizzbuzz.ParallelFizzBuzz3.init5\":<br \/> 128504.915 \u00b1(99.9%) 22111.085 ns\/op [Average]<br \/> (min, avg, max) = (122_244.382, 128_504.915, 137007.708), stdev = 5742.179<br \/> CI (99.9%): [106393.830, 150616.000] (assumes normal distribution)<\/code><\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u043b\u043e\u0445\u043e. \u041d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c CompletableFuture. \u042f \u0440\u0435\u0448\u0438\u043b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u043d\u043e\u043c\u0435\u0440 4 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 init3 \u043d\u0430 6 \u043f\u043e\u0442\u043e\u043a\u043e\u0432:<code><br \/> Result \"com.codewars.fizzbuzz.ParallelFizzBuzz.init3\":<br \/> 1141332.416 \u00b1(99.9%) 475676.047 ns\/op [Average]<br \/> (min, avg, max) = (951_781.368, 1_141_332.416, 1_295_257.063), stdev = 123531.559<br \/> CI (99.9%): [665656.369, 1617008.463] (assumes normal distribution)<\/code><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a \u0441\u0435\u0431\u0435. \u0410 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e 6 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 CompletableFuture<\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 init4 \u043d\u0430 6 \u043f\u043e\u0442\u043e\u043a\u043e\u0432:<\/p>\n<p><code>Result \"com.codewars.fizzbuzz.ParallelFizzBuzz2.init4\":<br \/> 62439.748 \u00b1(99.9%) 7159.969 ns\/op [Average]<br \/> (min, avg, max) = (60_190.729, 62_439.748, 64_841.281), stdev = 1859.421<br \/> CI (99.9%): [55279.779, 69599.717] (assumes normal distribution)<\/code><\/p>\n<p>\u0421\u0442\u0430\u043b\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043a\u0430\u043a-\u0442\u043e \u044d\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c? \u0414\u0443\u043c\u0430\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0447\u0430\u043d\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0442\u043e\u043a. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0442\u0435 \u0435\u0449\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u0438\u0445 \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c.<\/p>\n<hr\/>\n<h2>\u0418\u0442\u043e\u0433\u0438:<\/h2>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\"><strong>\u0422\u0435\u0441\u0442<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\"><strong>Min Time<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Avg Time<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init0<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">9_457_337.807<\/p>\n<\/td>\n<td>\n<p align=\"center\">9_623_423.545<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init1<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">30_502_586.036<\/p>\n<\/td>\n<td>\n<p align=\"center\">32_507_915.687<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init2<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">8_767_079.539<\/p>\n<\/td>\n<td>\n<p align=\"center\">8_915_412.908<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init3<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">401_633.964<\/p>\n<\/td>\n<td>\n<p align=\"center\">405_473.708<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init4<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">73_281.388<\/p>\n<\/td>\n<td>\n<p align=\"center\">78_501.416<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init5<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">122_244.382<\/p>\n<\/td>\n<td>\n<p align=\"center\">128_504.915<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init3 \u043d\u0430 6 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">951_781.368<\/p>\n<\/td>\n<td>\n<p align=\"center\">1_141_332.416<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"181\" width=\"181\">\n<p align=\"center\">init4 \u043d\u0430 6 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/p>\n<\/td>\n<td data-colwidth=\"260\" width=\"260\">\n<p align=\"center\">60_190.729<\/p>\n<\/td>\n<td>\n<p align=\"center\">62_439.748<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u0430\u0436\u0435 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0448\u0430\u043d\u0441 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u0438 \u043e\u043f\u044b\u0442.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/781256\/\"> https:\/\/habr.com\/ru\/articles\/781256\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0410\u043b\u043e\u0445\u0430 \u0432\u0441\u0435\u043c.<\/p>\n<p>\u041d\u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0443\u0436\u0435 \u0441\u0442\u0430\u043b\u0438\/\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043e\u0431\u044b\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e. \u041a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043b\u044e\u0431\u0438\u0442\u044c \u044d\u0442\u043e, \u043a\u0442\u043e-\u0442\u043e \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u0442\u044c, \u043d\u043e \u0444\u0430\u043a\u0442 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u044b \u043f\u0440\u043e\u0439\u0442\u0438 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b.<\/p>\n<p>\u0410 \u043a\u0430\u043a\u00a0\u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e\u0435\u0440\u0430\u043c? \u041a\u0430\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u0430\u0442\u044c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0443? \u041a\u0430\u043a\u00a0\u043f\u043e\u043d\u044f\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u0447\u0442\u043e\u00a0\u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u00ab\u0448\u0430\u0440\u0438\u0442\u00bb?<\/p>\n<p>\u042f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u043d\u0430 Senior \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430. \u0422\u0430\u043c \u0443 \u043f\u0430\u0440\u043d\u044f \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 <a href=\"https:\/\/leetcode.com\/problems\/fizz-buzz\" rel=\"noopener noreferrer nofollow\">FizzBuzz<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p>Given an integer\u00a0<code>n<\/code>, return\u00a0<em>a string array\u00a0<\/em><code>answer<\/code><em>\u00a0(<\/em><strong><em>1-indexed<\/em><\/strong><em>) where<\/em>:<\/p>\n<ul>\n<li>\n<p><code>answer[i] == \"FizzBuzz\"<\/code>\u00a0if\u00a0<code>i<\/code>\u00a0is divisible by\u00a0<code>3<\/code>\u00a0and\u00a0<code>5<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>answer[i] == \"Fizz\"<\/code>\u00a0if\u00a0<code>i<\/code>\u00a0is divisible by\u00a0<code>3<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>answer[i] == \"Buzz\"<\/code>\u00a0if\u00a0<code>i<\/code>\u00a0is divisible by\u00a0<code>5<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>answer[i] == i<\/code>\u00a0(as a string) if none of the above conditions are true. &#8212; <strong>\u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c.<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p><strong>Example 1:<\/strong><\/p>\n<pre><code>Input: n = 3 Output: [\"1\",\"2\",\"Fizz\"] <\/code><\/pre>\n<p><strong>Example 2:<\/strong><\/p>\n<pre><code>Input: n = 5 Output: [\"1\",\"2\",\"Fizz\",\"4\",\"Buzz\"] <\/code><\/pre>\n<p><strong>Example 3:<\/strong><\/p>\n<pre><code>Input: n = 15 Output: [\"1\",\"2\",\"Fizz\",\"4\",\"Buzz\",\"Fizz\",\"7\",\"8\",\"Fizz\",\"Buzz\",\"11\",\"Fizz\",\"13\",\"14\",\"FizzBuzz\"]<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>  \u041f\u043e\u0441\u0442\u043e\u0439\u0442\u0435, \u044d\u0442\u043e \u0436\u0435 \u0438\u0437\u0438 \u0442\u0430\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0437\u043d\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432 \u043b\u043e\u0433\u0438\u043a\u0443, \u043a\u0430\u043a \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u043d\u044c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430?<\/p>\n<p>\u0410 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e <strong><em>follow up<\/em><\/strong> \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435?<\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/amp\/publications\/540136\/\" rel=\"noopener noreferrer nofollow\">\u041f\u0430\u0440\u0435\u043d\u044c \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441++ \u043e\u0447 \u043a\u0440\u0443\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a>. \u0418 \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0430 \u043a\u0430\u043a \u044d\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043d\u0430 Java.<\/p>\n<p>   \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043c\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u0442\u044c \u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u043a\u0430\u0436\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>System.out.println<\/code> \u0438 \u0442\u0440\u044d\u043a\u0430\u0442\u044c \u0442\u0430\u043a \u0432\u0440\u0435\u043c\u044f. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0432\u0435\u0440\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0412\u044b \u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435 \u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u0432 Java? \u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0438\u0442 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0430\u0448\u0438 \u0437\u0430\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c\u0438. <\/p>\n<details class=\"spoiler\">\n<summary>Just-In-Time Compiler<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412 Java \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 JVM (Just-In-Time Compiler) \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u0446\u0435\u043b\u044f\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 <code>System.out.println<\/code> \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043f\u0440\u0438 \u0437\u0430\u043c\u0435\u0440\u0430\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0432\u043b\u0438\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0437\u0430\u043c\u0435\u0440\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u0435\u043d\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0447\u043d\u044b\u0445 \u0437\u0430\u043c\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 Java \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a Java Microbenchmarking Harness (JMH) \u0438\u043b\u0438 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 Java \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u044b \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c. \u042f \u0440\u0435\u0448\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u043d\u0447 \u043c\u0430\u0440\u043a\u0438. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u043c\u043d\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#8212; <a href=\"https:\/\/www.baeldung.com\/java-microbenchmark-harness\" rel=\"noopener noreferrer nofollow\">https:\/\/www.baeldung.com\/java-microbenchmark-harness<\/a>. \u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e \u0432\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0435\u0441\u043b\u0438 \u044f \u0434\u0435\u043b\u0430\u043b \u0447\u0442\u043e \u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0439\u0442\u0435 \u043c\u043d\u0435 \u0437\u043d\u0430\u0442\u044c \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>&lt;!-- Start for benchmarks &lt;dependency>       &lt;groupId>org.openjdk.jmh&lt;\/groupId>       &lt;artifactId>jmh-core&lt;\/artifactId>       &lt;version>1.37&lt;\/version> &lt;\/dependency>&lt;dependency>       &lt;groupId>org.openjdk.jmh&lt;\/groupId>       &lt;artifactId>jmh-generator-annprocess&lt;\/artifactId>       &lt;version>1.37&lt;\/version> &lt;\/dependency> &lt;!-- End for benchmarks--><\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>@Benchmark @OutputTimeUnit(TimeUnit.NANOSECONDS) @Fork(value = 1, warmups = 2) @BenchmarkMode(Mode.AverageTime)<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u042f \u043d\u0430\u0447\u0430\u043b \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0435\u0448\u0430\u043b \u0431\u044b \u0432 \u043b\u043e\u0431 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e. \u041f\u0440\u0438 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 Fizz, Buzz \u0438\u043b\u0438 FizzBuzz \u044f \u0432\u044b\u0432\u043e\u0434\u0438\u043b \u0438\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u0440\u043e\u0433 \u0440\u0430\u0432\u043d\u044b\u0439 1_000_000, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b&#8230; \u041f\u043e\u0434\u043e\u0436\u0434\u0430\u043b \u0447\u0443\u0442\u043a\u0430, \u043f\u043e\u0448\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u0444\u0435, \u0432\u044b\u043f\u0438\u043b \u043a\u043e\u0444\u0435, \u0435\u0449\u0435 \u0441\u0445\u043e\u0434\u0438\u043b \u0437\u0430 \u043a\u043e\u0444\u0435, \u043f\u043e\u043d\u044f\u043b \u0447\u0442\u043e \u043d\u0435 \u0434\u043e\u0436\u0434\u0443\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u043e\u0433 \u043d\u0430 100_000 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u043b\u043e.  \u0420\u0435\u0448\u0438\u043b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443. \u042f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0432 \u043b\u0438\u0441\u0442 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u0443 \u043b\u0438\u0441\u0442\u0430 \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0440\u0438\u0442\u044c \u043c\u043d\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0430 \u043d\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d =) \u041a\u0441\u0442\u0430\u0442\u0438, \u043c\u043e\u0436\u043d\u043e &#171;\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c&#187; \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0432 \u0444\u0430\u0439\u043b. \u041d\u043e  \u044d\u0442\u043e \u0434\u0443\u043c\u0430\u044e \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438 =) \u042f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043b\u0435\u043d\u0438\u0432.<\/p>\n<p>\u0418\u0442\u0430\u043a \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:<\/p>\n<details class=\"spoiler\">\n<summary>init0<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    private static final int LIMIT = 1_000_000;      @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init0() {         List&lt;String> rez = new ArrayList&lt;>();         for (int i = 0; i &lt; LIMIT; i++){             if (i % 3 == 0 &amp;&amp; i % 5 == 0){                 rez.add(\"FizzBuzz\");             } else if (i % 3 == 0){                 rez.add(\"Fizz\");             } else if (i % 5 == 0){                 rez.add(\"Buzz\");             }         }         System.out.println(rez.size());     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u043e\u0434 \u043a\u0430\u043a \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439. \u0410 \u044d\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code> init0<br \/>Result \"com.codewars.fizzbuzz.FizzBuzz.init0\":<br \/> 9623423.545 \u00b1(99.9%) 963191.903 ns\/op [Average]<br \/> (min, avg, max) = (9_457_337.807, 9_623_423.545, 10_057_615.367), stdev = 250137.879<br \/> CI (99.9%): [8660231.642, 10586615.448] (assumes normal distribution)<\/code><\/p>\n<p>\u0415\u0441\u043b\u0438 \u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u043b \u043d\u0430 \u0447\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435, \u0442\u043e \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 <strong><em>(min, avg, max)<\/em><\/strong> (\u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043c\u0435\u043d\u044f \u0435\u0441\u043b\u0438 \u044f \u043d\u0435 \u043f\u0440\u0430\u0432). \u041d\u0443 \u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b =) \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043d\u0435 \u0441 \u0447\u0435\u043c. <\/p>\n<p>\u042f \u0437\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0438\u0434\u0435\u044f: \u043e\u0441\u043e\u0437\u043d\u0430\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a, \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. <\/p>\n<p><em>&#171;\u043e\u0439 \u043a\u0430\u043a\u043e\u0439 \u044f \u043c\u043e\u043b\u043e\u0434\u0435\u0446 \u0438 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u043b\u044e \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a&#187; &#8212; \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f.<\/em><\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1:<\/p>\n<details class=\"spoiler\">\n<summary>init1<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init1() {         List&lt;String> rez = new ArrayList&lt;>();         for (int i = 0; i &lt; LIMIT; i++){             StringBuilder sb = new StringBuilder();             if (i % 3 == 0){                 sb.append(\"Fizz\");             }              if(i % 5 == 0){                 sb.append(\"Buzz\");             }             if (!sb.isEmpty()){                 rez.add(sb.toString());             }         }         System.out.println(rez.size());     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code>Result \"com.codewars.fizzbuzz.FizzBuzz.init1\":<br \/> 32507915.687 \u00b1(99.9%) 9189517.780 ns\/op [Average]<br \/> (min, avg, max) = (30_502_586.036, 32_507_915.687, 35_904_132.541), stdev = 2386488.585<br \/> CI (99.9%): [23318397.906, 41697433.467] (assumes normal distribution)<\/code><\/p>\n<p>\u041a\u0435\u043a, \u043d\u043e\u0440\u043c \u0442\u0430\u043a &#171;\u0443\u043b\u0443\u0447\u0448\u0438\u043b&#187;. \u042f \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043d\u0435 \u043c\u043e\u0433 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441\u043e\u0437\u0434\u0430\u044e \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u044e \u0435\u0433\u043e. \u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0441\u0442\u0440\u0438\u043d\u0433 \u043f\u0443\u043b\u043b \u0438 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u043e\u0442\u0442\u0443\u0434\u0430. \u042d\u0442\u043e \u043b\u0438\u0448\u044c \u043c\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041a\u0430\u043a \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u043d\u044f \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0432 \u043f\u0440\u0438\u0448\u0435\u043b \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0412 \u044d\u0442\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043c\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e <code>%<\/code><\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2:<\/p>\n<details class=\"spoiler\">\n<summary>init2<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>@Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init2() {         List&lt;String> rez = new ArrayList&lt;>();         int i = 1, fizz = 0, buzz = 0;         while (i &lt;= LIMIT){             fizz++; buzz++;             if (fizz == 3 &amp;&amp; buzz == 5) {                 rez.add(\"FizzBuzz\");                 fizz = buzz = 0;             } else if (fizz == 3) {                 rez.add(\"Fizz\");                 fizz = 0;             } else if (buzz == 5) {                 rez.add(\"Buzz\");                 buzz = 0;             }             i++;         }          System.out.println(rez.size());     }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432:<\/p>\n<p><code>init2<br \/>Result \"com.codewars.fizzbuzz.FizzBuzz.init2\":<br \/> 8915412.908 \u00b1(99.9%) 514862.288 ns\/op [Average]<br \/> (min, avg, max) = (8_767_079.539, 8_915_412.908, 9_056_679.338), stdev = 133708.101<br \/> CI (99.9%): [8400550.620, 9430275.196] (assumes normal distribution)<\/code><\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u0435\u043d\u044c\u043a\u043e, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0431\u0443\u0441\u0442 \u043f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441\u0430. \u0415\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e <code>avg<\/code> \u0442\u043e \u0431\u0443\u0441\u0442 \u0432 3.6 \u0440\u0430\u0437. \u0410 \u0435\u0441\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u043e \u0432 1.07 \u0440\u0430\u0437\u0430<\/p>\n<p>\u0414\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u0410 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435? \u041f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043a\u043e\u0434 \u0441++ \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u0434\u0435\u0435 \u043a\u043e\u0434\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u043c. \u0418 \u0432\u0435\u0434\u044c \u043f\u0440\u0430\u0432\u0434\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0442\u044c <code>LIMIT<\/code> \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0447\u0430\u043d\u043a\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u0442\u044c \u0438\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u042f \u0432\u0437\u044f\u043b 4 \u043f\u043e\u0442\u043e\u043a\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\/\u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438.<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 3:<\/p>\n<details class=\"spoiler\">\n<summary>init3<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>    private static final int LIMIT = 1_000_000;     private static final int NUM_THREADS = 4;       @Benchmark     @OutputTimeUnit(TimeUnit.NANOSECONDS)     @Fork(value = 1, warmups = 2)     @BenchmarkMode(Mode.AverageTime)     public void init3() {         ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);         CountDownLatch latch = new CountDownLatch(NUM_THREADS);          int chunkSize = LIMIT \/ NUM_THREADS;          List&lt;String> results = Collections.synchronizedList(new ArrayList&lt;>());          for (int i = 0; i &lt; NUM_THREADS; i++) {             final int start = i * chunkSize + 1;             final int end = (i + 1) * chunkSize;             executorService.submit(() -> {                 List&lt;String> threadResults = printFizzBuzzInRange(start, end);                 results.addAll(threadResults);                 latch.countDown();             });         }          try {             latch.await(); \/\/ Wait for all threads to finish         } catch (InterruptedException e) {             e.printStackTrace();         }          executorService.shutdown();          \/\/ Print the results         System.out.println(results.size());     }      private static List&lt;String> printFizzBuzzInRange(int start, int end) {         List&lt;String> threadResults = new ArrayList&lt;>();         for (int i = start; i &lt;= end &amp;&amp; i &lt;= LIMIT; i++) {             boolean divisibleBy3 = i % 3 == 0;             boolean divisibleBy5 = i % 5 == 0;              if (divisibleBy3 &amp;&amp; divisibleBy5) {                 threadResults.add(\"FizzBuzz\");             } else if (divisibleBy3) {            <\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-363204","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/363204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=363204"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/363204\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=363204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=363204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=363204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}