{"id":487739,"date":"2026-07-18T14:04:32","date_gmt":"2026-07-18T14:04:32","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=487739"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=487739","title":{"rendered":"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u044f Sum: \u0443\u0441\u043a\u043e\u0440\u0438\u043b \u0446\u0438\u043a\u043b\u043e\u043c \u2014 \u0437\u0430\u043c\u0435\u0434\u043b\u0438\u043b \u0432 \u00d74,7"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 values.Sum() \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c .NET \u2014 \u0442\u0430\u043c \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u2014 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0432\u044b\u0432\u043e\u0434\u044b.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0441\u0435\u0440\u0438\u0438 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0446\u0438\u043a\u043b\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043b\u0438 BCL \u0432 <a href=\"https:\/\/habr.com\/ru\/articles\/1059624\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435<\/a>, JIT \u0441\u0430\u043c \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u043b <a href=\"https:\/\/habr.com\/ru\/articles\/1059040\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0433\u0440\u0430\u043d\u0438\u0446<\/a>, \u0430 <a href=\"https:\/\/habr.com\/ru\/articles\/1058160\/\" rel=\"noopener noreferrer nofollow\">foreach \u043f\u0440\u044f\u0442\u0430\u043b \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438<\/a>. \u0422\u0443\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435: values.Sum() \u2014 \u044d\u0442\u043e LINQ, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043c\u0435\u043d\u044f\u044e\u0442 \u043d\u0430 \u0446\u0438\u043a\u043b. <\/p>\n<blockquote>\n<p><em>\u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0430 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 LINQ \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 for!<\/em><\/p>\n<\/blockquote>\n<p>\u041d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0446\u0438\u043a\u043b \u043f\u043b\u043e\u0445\u043e\u0439, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441 .NET 8 Sum() \u043d\u0430 int \u0438 long \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d (<a href=\"https:\/\/github.com\/dotnet\/runtime\/pull\/84519\" rel=\"noopener noreferrer nofollow\">PR dotnet\/runtime #84519<\/a>, \u0430\u0432\u0442\u043e\u0440 brantburnett, \u0440\u0435\u0432\u044c\u044e tannergooding), \u0430 RyuJIT \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043d\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442: \u0432 \u043c\u043e\u0438\u0445 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430\u0445 SumFor \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043a\u0430\u043b\u044f\u0440\u043e\u043c \u043d\u0430 \u0432\u0441\u0435\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u0445 \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e .NET 11, \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0430\u0432\u0442\u043e\u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0438\u0441\u0438\u0442 \u0441 2019 (<a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/12466\" rel=\"noopener noreferrer nofollow\">issue #12466<\/a>).<\/p>\n<p><strong>\u0411\u0443\u0434\u0435\u0442 3 \u0438\u0441\u0442\u043e\u0440\u0438\u0438:<\/strong><\/p>\n<ul>\n<li>\n<p>LINQ \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u0446\u0438\u043a\u043b \u2014 \u043a\u0430\u043a \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 vpaddd, \u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 for \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0441\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c add, \u0438 \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u2014 Sum() \u043e\u0431\u044f\u0437\u0430\u043d \u043a\u0438\u0434\u0430\u0442\u044c OverflowException, \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f; \u0437\u0430\u043e\u0434\u043d\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 breaking change: \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f, \u0438 OverflowException \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p>AVX-512, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 .NET \u043f\u0440\u044f\u0447\u0435\u0442 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u0438\u043d Xeon \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 512 \u0431\u0438\u0442 \u043f\u043e \u0444\u043b\u0430\u0433\u0443, \u0430 \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0440\u0435\u0436\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e, \u0438 \u0447\u0442\u043e \u0434\u0430\u043b\u043e \u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u043f\u0440\u0435\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u0434, \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441\u043d\u044f\u0442\u0438\u044f \u0434\u0438\u0437\u0430\u0441\u043c\u0430 \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0432\u0441\u0435\u0445 \u043c\u0430\u0448\u0438\u043d \u2014 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/ComboxSoftDeveloper\/LinqSumProof\" rel=\"noopener noreferrer nofollow\">LinqSumProof<\/a>.<\/p>\n<p>\u0422\u0435\u0441\u0442\u044b \u0433\u043e\u043d\u044f\u043b\u0438\u0441\u044c \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u2116<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>CPU<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u042f\u0434\u0440\u0430\/\u043f\u043e\u0442\u043e\u043a\u0438<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0427\u0430\u0441\u0442\u043e\u0442\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0412\u0435\u043a\u0442\u043e\u0440\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>L3<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u21161<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">AMD   Ryzen 9 5950X<\/p>\n<\/td>\n<td>\n<p align=\"left\">16   \/ 32<\/p>\n<\/td>\n<td>\n<p align=\"left\">3,4   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 4,9 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">AVX2<\/p>\n<\/td>\n<td>\n<p align=\"left\">64   \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u21162<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">Intel   Core i9-10900KF<\/p>\n<\/td>\n<td>\n<p align=\"left\">10   \/ 20<\/p>\n<\/td>\n<td>\n<p align=\"left\">3,7   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 5,3 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">AVX2<\/p>\n<\/td>\n<td>\n<p align=\"left\">20   \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u21163<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">2   \u00d7 Intel Xeon Silver 4314 (Ice Lake)<\/p>\n<\/td>\n<td>\n<p align=\"left\">2\u00d716   \/ 64<\/p>\n<\/td>\n<td>\n<p align=\"left\">2,4   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 3,4 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">AVX-512<\/p>\n<\/td>\n<td>\n<p align=\"left\">24   \u041c\u0411 \u043d\u0430 \u0441\u043e\u043a\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u21164<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">Intel   Xeon W-2255 (Cascade Lake)<\/p>\n<\/td>\n<td>\n<p align=\"left\">10   \/ 20<\/p>\n<\/td>\n<td>\n<p align=\"left\">3,7   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 4,5 \u0432 \u0442\u0443\u0440\u0431\u043e (4,7 \u0441 Turbo   Boost Max 3.0)<\/p>\n<\/td>\n<td>\n<p align=\"left\">AVX-512<\/p>\n<\/td>\n<td>\n<p align=\"left\">19,25   \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 1. LINQ \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u0446\u0438\u043a\u043b<\/h3>\n<p>\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b:<\/p>\n<pre><code class=\"cs\">[MethodImpl(MethodImplOptions.NoInlining)]public static int SumFor(int[] values){    int sum = 0;    for (int i = 0; i &lt; values.Length; i++)    {        sum += values[i];    }     return sum;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u044b\u0437\u043e\u0432 Sum():<\/p>\n<pre><code class=\"cs\">[MethodImpl(MethodImplOptions.NoInlining)]public static int SumLinq(int[] values) =&gt; values.Sum();<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 Sum() \u0441 .NET 8 \u0436\u0438\u0432\u0451\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: \u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438 List, \u043e\u043d \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 ReadOnlySpan \u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 SumSignedIntegersVectorized (<a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Linq\/src\/System\/Linq\/Sum.cs\" rel=\"noopener noreferrer nofollow\">Sum.cs \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430<\/a>). \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u0426\u0438\u043a\u043b \u2014 \u0441\u043a\u0430\u043b\u044f\u0440, \u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e (\u0437\u0434\u0435\u0441\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u044b \u0434\u043e \u0441\u043c\u044b\u0441\u043b\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a):<\/p>\n<pre><code class=\"assembly\">; SumFor, i9-10900KF, .NET 10, disasm_net10.txtG_M000_IG04:       add      eax, dword ptr [rcx]   ; sum += values[i]       add      rcx, 4                 ; \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442       dec      edx       jne      SHORT G_M000_IG04      ; \u043d\u0438 ymm, \u043d\u0438 zmm<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410 \u0432\u043d\u0443\u0442\u0440\u0438 Sum() \u2014 \u0432\u0435\u043a\u0442\u043e\u0440, \u0432\u043e\u0441\u0435\u043c\u044c int \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e:<\/p>\n<pre><code class=\"assembly\">; SumSignedIntegersVectorized, i9-10900KF, .NET 10       vmovups  ymm2, ymmword ptr [rax+4*rdx]   ; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 8 int       vpaddd   ymm3, ymm0, ymm2                ; \u0441\u043b\u043e\u0436\u0438\u043b\u0438 8 \u0440\u0430\u0437\u043e\u043c       vpxor    ymm0, ymm0, ymm3                ; \u043f\u0440\u043e \u044d\u0442\u0438 \u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 -       vpxor    ymm2, ymm2, ymm3                ; \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438       vpand    ymm0, ymm2, ymm0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u0414\u043e \u00d74,7 \u0437\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434<\/h4>\n<p>\u041d\u0430 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 (\u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0..15 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c seed, \u0441\u0443\u043c\u043c\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 int) \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 Sum() \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/533\/db8\/99b\/533db899b9a29cefe6c9af3d67ba8ffc.png\" alt=\"\u0421\u0432\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0442\u0438\u0432 Sum() \u043d\u0430 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445: \u0440\u0430\u0437\u0440\u044b\u0432 \u043e\u0442 \u00d72,82 \u0434\u043e \u00d74,67\" title=\"\u0421\u0432\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0442\u0438\u0432 Sum() \u043d\u0430 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445: \u0440\u0430\u0437\u0440\u044b\u0432 \u043e\u0442 \u00d72,82 \u0434\u043e \u00d74,67\" width=\"1425\" height=\"705\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/533\/db8\/99b\/533db899b9a29cefe6c9af3d67ba8ffc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/533\/db8\/99b\/533db899b9a29cefe6c9af3d67ba8ffc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0421\u0432\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0442\u0438\u0432 Sum() \u043d\u0430 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445: \u0440\u0430\u0437\u0440\u044b\u0432 \u043e\u0442 \u00d72,82 \u0434\u043e \u00d74,67<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u21163 \u2014 Sum() \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u0438 \u043d\u0430 List, \u0438 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/07d\/4f5\/7cf\/07d4f57cfad848040ecb8278f93d5140.png\" alt=\"\u0412\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u21163 (\u043f\u0430\u0440\u0430 Xeon 4314), 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0440\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\" title=\"\u0412\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u21163 (\u043f\u0430\u0440\u0430 Xeon 4314), 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0440\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\" width=\"1380\" height=\"810\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/07d\/4f5\/7cf\/07d4f57cfad848040ecb8278f93d5140.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/07d\/4f5\/7cf\/07d4f57cfad848040ecb8278f93d5140.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0412\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u21163 (\u043f\u0430\u0440\u0430 Xeon 4314), 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0440\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u2014 Sum_Tensor: \u044d\u0442\u043e <a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.numerics.tensors.tensorprimitives\" rel=\"noopener noreferrer nofollow\">TensorPrimitives.Sum<\/a> \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 System.Numerics.Tensors, \u0442\u043e\u0436\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439, \u043d\u043e \u0431\u0435\u0437 checked-\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438. \u041a \u043d\u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0441\u044c \u0432 \u0432\u044b\u0432\u043e\u0434\u0430\u0445.<\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u043e\u0437\u0440\u0430\u0436\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u00ab\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438 \u0446\u0438\u043a\u043b \u2014 \u0434\u043e\u0433\u043e\u043d\u0438\u0448\u044c\u00bb<\/strong>: \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0439 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 SumForUnrolled \u0432 \u0431\u0435\u043d\u0447\u0435 \u0435\u0441\u0442\u044c, \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u044d\u0442\u043e \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 add, \u0438 \u043d\u0430 65 536 \u043e\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 Sum() \u0432 1,8\u20132,6 \u0440\u0430\u0437\u0430. \u041f\u0440\u0430\u0432\u0434\u0430, \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u0438\u0437 32 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0439 \u0441\u043a\u0430\u043b\u044f\u0440 Sum() \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u2014 \u00d70,86\u20130,97 \u043d\u0430 \u0442\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445: \u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430, \u0438 \u043d\u0430 32 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u043e\u043d\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u00ab\u0423 \u043c\u0435\u043d\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0438\u043f\u0430 IEnumerable, \u0430 \u043d\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u00bb<\/strong>: \u0443 Sum() \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043d\u0430\u044f, SumLinqInterface \u0441 \u0442\u0435\u043c \u0436\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u043f\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0438\u0434\u0451\u0442 \u0432\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u043f\u0440\u044f\u043c\u044b\u043c \u0432\u044b\u0437\u043e\u0432\u043e\u043c (\u00d70,97\u20131,02). \u042d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442 \u0441 foreach \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0433\u0434\u0435 \u0432\u0441\u0451 \u0440\u0435\u0448\u0430\u043b \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u00abLINQ \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442\u00bb<\/strong>: \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u2014 \u043d\u043e\u043b\u044c, \u043a\u043e\u043b\u043e\u043d\u043a\u0430 Allocated \u043f\u0443\u0441\u0442\u0430\u044f, \u044d\u043d\u0443\u043c\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430 \u0438\u0434\u0451\u0442 \u043f\u043e span.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u044e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u0432: \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 Xeon Sum() \u0441 \u0432\u043e\u0441\u044c\u043c\u0451\u0440\u043a\u0438 \u0434\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u043b\u0441\u044f \u043d\u0430 14\u201317%, \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430\u0445 \u2014 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0448\u0443\u043c\u0430.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6c\/4cf\/8c1\/a6c4cf8c1c2913fe48b4ae37eed9ca3e.png\" alt=\"Sum() \u043d\u0430 .NET 8 \/ 9 \/ 10: \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445\" title=\"Sum() \u043d\u0430 .NET 8 \/ 9 \/ 10: \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445\" width=\"1425\" height=\"705\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a6c\/4cf\/8c1\/a6c4cf8c1c2913fe48b4ae37eed9ca3e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6c\/4cf\/8c1\/a6c4cf8c1c2913fe48b4ae37eed9ca3e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>Sum() \u043d\u0430 .NET 8 \/ 9 \/ 10: \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445<\/em><\/figcaption><\/div>\n<\/figure>\n<h4>\u0413\u0440\u0430\u043d\u0438\u0446\u0430: \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 yield \u2014 \u0434\u043e \u00d732<\/h4>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f span: TryGetSpan \u0432\u043d\u0443\u0442\u0440\u0438 Sum() (<a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Linq\/src\/System\/Linq\/Sum.cs\" rel=\"noopener noreferrer nofollow\">Sum.cs<\/a>) \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0434 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0435 \u0432\u0438\u0434\u0438\u0442, \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u044d\u043d\u0443\u043c\u0435\u0440\u0430\u0442\u043e\u0440 \u2014 MoveNext \u0438 Current \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u043b\u044e\u0441 48 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0441\u0430\u043c \u044d\u043d\u0443\u043c\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440 (yield return \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0443) \u2014 \u0440\u043e\u0432\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/543\/75e\/8c4\/54375e8c4b992e0b1dbcc22a377a7c71.png\" alt=\"Sum() \u043f\u043e yield-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443: \u043e\u0442 \u00d718 \u0434\u043e \u00d732 \u043a Sum() \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443\" title=\"Sum() \u043f\u043e yield-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443: \u043e\u0442 \u00d718 \u0434\u043e \u00d732 \u043a Sum() \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443\" width=\"1350\" height=\"660\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/543\/75e\/8c4\/54375e8c4b992e0b1dbcc22a377a7c71.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/543\/75e\/8c4\/54375e8c4b992e0b1dbcc22a377a7c71.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>Sum() \u043f\u043e yield-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443: \u043e\u0442 \u00d718 \u0434\u043e \u00d732 \u043a Sum() \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u0440\u0430\u0437\u0440\u044b\u0432 \u0446\u0438\u043a\u043b\u0430 \u0438 Sum() \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u2014 \u043e\u0431\u0430 \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u044c:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8c7\/e3a\/5b1\/8c7e3a5b1b98ad2ac305978a99fbdcda.png\" alt=\"\u0420\u0430\u0437\u0440\u044b\u0432 \u043f\u043e \u0434\u043b\u0438\u043d\u0430\u043c: \u043d\u0430 16 \u041c\u0411 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437 \u043a\u044d\u0448\u0430 \u2014 \u043a\u0440\u043e\u043c\u0435 Ryzen \u0441 \u0435\u0433\u043e 64 \u041c\u0411 L3\" title=\"\u0420\u0430\u0437\u0440\u044b\u0432 \u043f\u043e \u0434\u043b\u0438\u043d\u0430\u043c: \u043d\u0430 16 \u041c\u0411 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437 \u043a\u044d\u0448\u0430 \u2014 \u043a\u0440\u043e\u043c\u0435 Ryzen \u0441 \u0435\u0433\u043e 64 \u041c\u0411 L3\" width=\"1425\" height=\"705\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8c7\/e3a\/5b1\/8c7e3a5b1b98ad2ac305978a99fbdcda.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8c7\/e3a\/5b1\/8c7e3a5b1b98ad2ac305978a99fbdcda.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u0420\u0430\u0437\u0440\u044b\u0432 \u043f\u043e \u0434\u043b\u0438\u043d\u0430\u043c: \u043d\u0430 16 \u041c\u0411 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437 \u043a\u044d\u0448\u0430 \u2014 \u043a\u0440\u043e\u043c\u0435 Ryzen \u0441 \u0435\u0433\u043e 64 \u041c\u0411 L3<\/em><\/figcaption><\/div>\n<\/figure>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 2. Checked \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0448\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0430 \u0440\u0430\u0432\u043d\u044b\u0445: Sum() \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443 \u043a\u0438\u0434\u0430\u0435\u0442 OverflowException, \u0430 sum += values[i] \u0432 C# \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u043b\u0447\u0430. \u0423\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u2014 checked-\u0446\u0438\u043a\u043b:<\/p>\n<pre><code class=\"cs\">[MethodImpl(MethodImplOptions.NoInlining)]public static int SumForChecked(int[] values){    int sum = 0;    for (int i = 0; i &lt; values.Length; i++)    {        checked        {            sum += values[i];        }    }     return sum;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u0441\u043a\u0430\u043b\u044f\u0440\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f \u2014 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"assembly\">; SumForChecked, i9-10900KF, .NET 10       add      eax, dword ptr [rcx]       jo       SHORT G_M000_IG06      ; \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 -&gt; throw<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430 65 536 checked-\u0446\u0438\u043a\u043b \u0438\u0434\u0451\u0442 \u0432\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043f\u0430\u0440\u0435 Xeon 4314 \u2014 31,6 \u043c\u043a\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 30,6, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 3%) \u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 Sum() \u0434\u043e \u00d74,84. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043d\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 \u2014 \u043d\u0435 \u043f\u043b\u0430\u0442\u0430 \u0437\u0430 checked, \u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0410 \u043a\u0430\u043a \u044d\u0442\u0443 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043a\u043e\u0434? \u0423 vpaddd \u043d\u0435\u0442 \u0444\u043b\u0430\u0433\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c-\u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u043c BCL \u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u2014 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0443\u0434\u0430 \u043f\u043e \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u0431\u0438\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0435 \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u043a \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b (\u0441\u043b\u043e\u0436\u0438\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435).<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u2014 \u0440\u0430\u0437 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u2014 \u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432: \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u2014 OverflowException. \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0442\u043e\u0436\u0435 \u0438\u0434\u0451\u0442 \u0432 checked, \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e.<\/p>\n<h2>Breaking change: \u0442\u043e \u0436\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0441\u0442\u0430<\/h2>\n<p>\u0423 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a: \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u044b \u043a\u043e\u043f\u044f\u0442\u0441\u044f \u043d\u0435 \u043f\u043e\u0434\u0440\u044f\u0434 \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443, \u0430 \u043f\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c.<\/p>\n<p>\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043a\u0430\u043a <a href=\"https:\/\/learn.microsoft.com\/dotnet\/core\/compatibility\/core-libraries\/8.0\/enumerable-sum\" rel=\"noopener noreferrer nofollow\">breaking change .NET 8<\/a>: OverflowException \u043c\u043e\u0436\u0435\u0442 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0430 .NET 7 \u043c\u043e\u043b\u0447\u0430\u043b, \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 (\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 <a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/92230\" rel=\"noopener noreferrer nofollow\">issue #92230<\/a>). \u0416\u0438\u0432\u043e\u0435 \u0434\u0435\u043c\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e (Disasm.exe overflow): \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 128 \u043f\u0430\u0440 (int.MaxValue, int.MinValue). \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f checked-\u0441\u0443\u043c\u043c\u0430 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u2212128.<\/p>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 Sum() \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0432\u0441\u0435 int.MaxValue \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u2014 \u0438 \u0443\u0436\u0435 \u0432\u0442\u043e\u0440\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 MaxValue \u0441 MaxValue:<\/p>\n<pre><code class=\"assembly\">SumForChecked: -128Sum():         OverflowException<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 DOTNET_EnableHWIntrinsic=0 (\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0430\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e) \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2014 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, Sum() \u0442\u043e\u0436\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u2212128. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u043e\u0432\u0438\u0442 OverflowException \u043e\u0442 Sum() \u043a\u0430\u043a \u0441\u0438\u0433\u043d\u0430\u043b \u2014 \u043f\u043e\u0441\u043b\u0435 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0430 \u043d\u0430 .NET 8+ \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 3. AVX-512, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 .NET \u043f\u0440\u044f\u0447\u0435\u0442<\/h3>\n<p>\u041e\u0431\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0443\u043c\u0435\u044e\u0442 AVX-512, \u043d\u043e .NET 10 \u0432\u0438\u0434\u0438\u0442 \u0438\u0445 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u2014 \u0432\u044b\u0432\u043e\u0434 \u0443\u0442\u0438\u043b\u0438\u0442\u044b Disasm \u0438\u0437 \u0440\u0435\u043f\u043e:<\/p>\n<pre><code class=\"assembly\">; 2 x Xeon 4314 (Ice Lake)           ; Xeon W-2255 (Cascade Lake)Avx512BW:                  True      Avx512BW:                  TrueVector&lt;int&gt;.Count:         8         Vector&lt;int&gt;.Count:         8Vector512.IsHardwareAccelerated:     Vector512.IsHardwareAccelerated:                           True                                 False<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Sum() \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 Vector&lt;T&gt;, \u0430 \u0435\u0433\u043e \u0448\u0438\u0440\u0438\u043d\u0430 \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u2014 256 \u0431\u0438\u0442 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0436\u0438\u0432\u043e\u043c AVX-512. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f DOTNET_MaxVectorTBitWidth=512 (<a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/104978\" rel=\"noopener noreferrer nofollow\">issue #104978<\/a> \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 Vector&lt;T&gt;) \u043d\u0430 Ice Lake \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440: Count \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f 16, \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 Sum() \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f zmm, \u0438 \u043d\u0430 65 536 \u044d\u0442\u043e \u043c\u0438\u043d\u0443\u0441 14% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (6,55 \u2192 5,63 \u043c\u043a\u0441). \u0410 \u043d\u0430 Cascade Lake \u2014 \u043d\u0438\u0447\u0435\u0433\u043e: Count \u043a\u0430\u043a \u0431\u044b\u043b 8, \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f, \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043d\u0430 ymm.<\/p>\n<p>\u042d\u0442\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0437\u0430\u0448\u0438\u0442\u0430 CPUID-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0432\u0438\u0442 \u0444\u043b\u0430\u0433 CORJIT_FLAG_VECTOR512_THROTTLING \u0434\u043b\u044f Skylake Server, Cascade Lake \u0438 Cooper Lake (<a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/88233\" rel=\"noopener noreferrer nofollow\">issue #88233<\/a>, \u043a\u043e\u0434 \u043f\u0440\u0438\u0448\u0451\u043b \u0432 <a href=\"https:\/\/github.com\/dotnet\/runtime\/pull\/86655\" rel=\"noopener noreferrer nofollow\">PR #86655<\/a>).<\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u0432 <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-8-hardware-intrinsics\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u0431\u043e\u0440\u0435 intrinsics \u0432 .NET 8<\/a>: \u043d\u0430 \u044d\u0442\u0438\u0445 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430\u0445 512-\u0431\u0438\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u044e\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u044f\u0434\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 Vector512.IsHardwareAccelerated \u0442\u0430\u043c \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 false \u2014 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 Intel Optimization Reference Manual, \u0440\u0430\u0437\u0434\u0435\u043b 2.5.3 Skylake Server Power Management. Ice Lake \u043f\u043e\u0434 \u044d\u0442\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442: \u0442\u0430\u043c \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043e\u0442 512-\u0431\u0438\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435.<\/p>\n<h4>\u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u0435\u0442: +38% \u043d\u0430 Cascade Lake<\/h4>\n<p>\u0417\u0430\u043f\u0440\u0435\u0442 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439: DOTNET_PreferredVectorBitWidth=512. \u0421 \u043f\u0430\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 W-2255 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Count = 16, \u0438 Sum() \u043f\u0435\u0440\u0435\u0441\u0430\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 zmm \u2014 \u043f\u0440\u0438\u0447\u0451\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 AVX-512 \u0441\u0442\u0430\u043b \u043a\u043e\u0440\u043e\u0447\u0435: \u0438\u0437 \u0442\u0440\u043e\u0439\u043a\u0438 vpxor\/vpxor\/vpand \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u2014 vpxord \u0438 vpternlogd, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0441\u043e\u0440 \u0438 vpand \u0432 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e (\u0442\u0435\u0440\u043d\u0430\u0440\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430, \u0442\u0440\u0438 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e):<\/p>\n<pre><code class=\"assembly\">; SumSignedIntegersVectorized, Xeon W-2255, .NET 10,; DOTNET_MaxVectorTBitWidth=512 + DOTNET_PreferredVectorBitWidth=512       vmovups  zmm2, zmmword ptr [rax+4*rdx]   ; 16 int \u0440\u0430\u0437\u043e\u043c       vpaddd   zmm3, zmm0, zmm2       vpxord   zmm2, zmm2, zmm3       vpternlogd zmm0, zmm2, zmm3, 72          ; \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0441\u043e\u0440 \u0438 vpand \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0426\u0438\u0444\u0440\u044b: 5,21 \u043c\u043a\u0441 \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u0435 \u2192 3,78 \u043c\u043a\u0441 \u0441 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c zmm, \u0432 1,38 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u2014 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c: \u043e\u0434\u043d\u0430 MaxVectorTBitWidth \u043d\u0430 Cascade Lake \u0448\u0438\u0440\u0438\u043d\u0443 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442, \u0438 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0436\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a44\/f07\/cc8\/a44f07cc89db1fa789e1d8d0a24813e6.png\" alt=\"Xeon W-2255: \u0434\u0435\u0444\u043e\u043b\u0442, \u043f\u043e\u043b\u0443\u043c\u0435\u0440\u0430 \u0438 \u0441\u043d\u044f\u0442\u044b\u0439 \u0437\u0430\u043f\u0440\u0435\u0442 \u2014 \u043c\u0438\u043d\u0443\u0441 27% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443 Sum()\" title=\"Xeon W-2255: \u0434\u0435\u0444\u043e\u043b\u0442, \u043f\u043e\u043b\u0443\u043c\u0435\u0440\u0430 \u0438 \u0441\u043d\u044f\u0442\u044b\u0439 \u0437\u0430\u043f\u0440\u0435\u0442 \u2014 \u043c\u0438\u043d\u0443\u0441 27% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443 Sum()\" width=\"1230\" height=\"690\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a44\/f07\/cc8\/a44f07cc89db1fa789e1d8d0a24813e6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a44\/f07\/cc8\/a44f07cc89db1fa789e1d8d0a24813e6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>Xeon W-2255: \u0434\u0435\u0444\u043e\u043b\u0442, \u043f\u043e\u043b\u0443\u043c\u0435\u0440\u0430 \u0438 \u0441\u043d\u044f\u0442\u044b\u0439 \u0437\u0430\u043f\u0440\u0435\u0442 \u2014 \u043c\u0438\u043d\u0443\u0441 27% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443 Sum()<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0432\u0430 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u044f. \u041f\u0435\u0440\u0432\u043e\u0435: \u043d\u0430 .NET 8 \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u2014 Vector&lt;T&gt; \u0448\u0438\u0440\u0435 256 \u0431\u0438\u0442 \u0432\u043e\u0441\u044c\u043c\u0451\u0440\u043a\u0430 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u043d\u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 (\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445: Count = 8, \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043d\u0430 ymm; \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0448\u0438\u0440\u043e\u043a\u043e\u0433\u043e Vector&lt;T&gt; \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438 \u0443\u0436\u0435 \u043f\u043e\u0437\u0436\u0435 \u2014 <a href=\"https:\/\/github.com\/dotnet\/runtime\/pull\/111472\" rel=\"noopener noreferrer nofollow\">PR #111472<\/a>).<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435: \u043c\u043e\u0439 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 512-\u0431\u0438\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e, \u0430 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043d\u0430 Cascade Lake \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u2014 \u043f\u043e\u0441\u043b\u0435 512-\u0431\u0438\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u044f\u0434\u0440\u043e \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435, \u0438 \u044d\u0442\u043e \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 +38% \u043d\u0430 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u2014 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u043a\u0442, \u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0414\u0435\u0444\u043e\u043b\u0442 .NET \u0432\u044b\u0431\u0440\u0430\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p><strong>\u041f\u043e \u0446\u0438\u0444\u0440\u0430\u043c:<\/strong><\/p>\n<ul>\n<li>\n<p>\u0441\u0432\u043e\u0439 for \u0432\u043c\u0435\u0441\u0442\u043e Sum() \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0438\u043b\u0438 List \u2014 \u0434\u043e \u00d74,67 \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0435 (65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432), \u0438 checked \u0442\u0443\u0442 \u043d\u0438 \u043f\u0440\u0438 \u0447\u0451\u043c: checked-\u0446\u0438\u043a\u043b \u043e\u0442\u0441\u0442\u0430\u0451\u0442 \u0442\u0430\u043a \u0436\u0435, \u0434\u043e \u00d74,84;<\/p>\n<\/li>\n<li>\n<p>Sum() \u043f\u043e yield-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043f\u043e\u0432\u0435\u0440\u0445 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0434\u043e \u00d732 \u043f\u043b\u044e\u0441 48 \u0431\u0430\u0439\u0442 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u043e\u0432\u0438\u0442 OverflowException \u043e\u0442 Sum(), \u043f\u043e\u0441\u043b\u0435 .NET 8 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043a\u0430\u043a breaking change;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430 Skylake Server \/ Cascade Lake \/ Cooper Lake AVX-512 \u0432 Vector&lt;T&gt;-\u043f\u0443\u0442\u044f\u0445 BCL \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0434\u0435\u0440\u0436\u0438\u0442 256 \u0431\u0438\u0442 \u0438\u0437-\u0437\u0430 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435:<\/strong><\/p>\n<ul>\n<li>\n<p>\u0441\u0443\u043c\u043c\u044b, \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u044b, \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u044b \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c \u0438 \u0441\u043f\u0438\u0441\u043a\u0430\u043c \u2014 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c BCL: Sum() \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0438 \u043d\u0435 \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442; \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c LINQ \u043d\u0430 \u0446\u0438\u043a\u043b\u044b \u00ab\u0440\u0430\u0434\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438\u00bb \u0437\u0434\u0435\u0441\u044c \u2014 \u0443\u0445\u0443\u0434\u0448\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0436\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u2014 \u043d\u0435 \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 yield-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u0435\u0440\u0435\u0434 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0435\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0433\u043e\u0440\u044f\u0447\u0438\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0430\u043c \u0431\u0435\u0437 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f OverflowException \u2014 <a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.numerics.tensors.tensorprimitives\" rel=\"noopener noreferrer nofollow\">TensorPrimitives.Sum<\/a> (\u0431\u044b\u0441\u0442\u0440\u0435\u0435 Sum() \u0432 1,7\u20133,2 \u0440\u0430\u0437\u0430 \u043d\u0430 65 536: \u0431\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u043e \u0438 \u0431\u0435\u0437 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u2014 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u043b\u0447\u0430 \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f) \u0438\u043b\u0438 \u0441\u0432\u043e\u0439 Vector256 (\u0432 1,3\u20131,9 \u0440\u0430\u0437\u0430) \u0441 \u0442\u0435\u043c \u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>float \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: Sum() \u043d\u0430 float \u043d\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f (\u0438\u0442\u043e\u0433 \u0443 float \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430). \u0412\u044b\u0438\u0433\u0440\u044b\u0448\u0430 \u043e\u0442 Sum() \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u2014 \u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u043e\u043d \u0438\u0434\u0451\u0442 \u0432\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c (\u00d71,01\u20131,14), \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u0446\u0438\u043a\u043b\u043e\u043c \u0438 Sum() \u0434\u043b\u044f float \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430 Cascade Lake \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 DOTNET_MaxVectorTBitWidth=512 \u0438 DOTNET_PreferredVectorBitWidth=512 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 512-\u0431\u0438\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0438 \u0434\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0435 +38% \u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435; \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0445 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u2014 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041a\u043e\u0434 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/ComboxSoftDeveloper\/LinqSumProof\" rel=\"noopener noreferrer nofollow\">LinqSumProof<\/a> \u2014 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a (Sum() \u043f\u0440\u043e\u0442\u0438\u0432 \u0446\u0438\u043a\u043b\u043e\u0432, checked, yield-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440, \u0441\u0432\u043e\u0439 Vector256, TensorPrimitives, \u0448\u0438\u0440\u0438\u043d\u0430 Vector, \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u043b\u0438\u043d\u044b, net8\/9\/10) \u0438 \u0441\u043d\u044f\u0442\u0438\u0435 \u0434\u0438\u0437\u0430\u0441\u043c\u0430<\/p>\n<\/li>\n<\/ul>\n<h3>\u0421\u0441\u044b\u043b\u043a\u0438<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/ComboxSoftDeveloper\/LinqSumProof\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u0442\u0430\u0442\u044c\u0438: LinqSumProof \u2014 \u043a\u043e\u0434, \u0434\u0438\u0437\u0430\u0441\u043c, \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/pull\/84519\" rel=\"noopener noreferrer nofollow\">PR #84519 \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f Enumerable.Sum \u0434\u043b\u044f int\/long (.NET 8)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/12466\" rel=\"noopener noreferrer nofollow\">Issue #12466 \u2014 RyuJIT \u043d\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0446\u0438\u043a\u043b\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Linq\/src\/System\/Linq\/Sum.cs\" rel=\"noopener noreferrer nofollow\">Sum.cs \u2014 SumSignedIntegersVectorized \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/core\/compatibility\/core-libraries\/8.0\/enumerable-sum\" rel=\"noopener noreferrer nofollow\">Breaking change .NET 8: \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Sum \u0438 OverflowException<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/92230\" rel=\"noopener noreferrer nofollow\">Issue #92230 \u2014 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/dotnet-8-hardware-intrinsics\/\" rel=\"noopener noreferrer nofollow\">Hardware Intrinsics in .NET 8 \u2014 Vector512, \u0434\u0430\u0443\u043d\u043a\u043b\u043e\u043a \u0438 CPUID-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/88233\" rel=\"noopener noreferrer nofollow\">Issue #88233 \u0438 PR #86655 \u2014 CORJIT_FLAG_VECTOR512_THROTTLING \u0434\u043b\u044f Skylake Server \/ Cascade Lake \/ Cooper Lake<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/104978\" rel=\"noopener noreferrer nofollow\">Issue #104978 \u2014 DOTNET_MaxVectorTBitWidth \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 Vector&lt;T&gt;<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/pull\/111472\" rel=\"noopener noreferrer nofollow\">PR #111472 \u2014 \u0434\u043e\u0432\u043e\u0434\u043a\u0430 512-\u0431\u0438\u0442\u043d\u043e\u0433\u043e Vector&lt;T&gt;<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.numerics.tensors.tensorprimitives\" rel=\"noopener noreferrer nofollow\">TensorPrimitives \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b \u0431\u0435\u0437 checked-\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0412\u0441\u0435\u043c \u0443\u0434\u0430\u0447\u0438 \u0438 \u0434\u043e \u043d\u043e\u0432\u044b\u0445 \u0432\u0441\u0442\u0440\u0435\u0447!<\/strong><\/p>\n<blockquote>\n<p><em>PS. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u0430\u043c\u0435\u0440\u044b Sum \u043f\u0440\u043e\u0442\u0438\u0432 \u0446\u0438\u043a\u043b\u043e\u0432 \u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 Cascade Lake \u0441\u043e \u0441\u043d\u044f\u0442\u044b\u043c \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u043c \u043f\u043e\u0434 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u2014 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0445.<\/em><\/p>\n<\/blockquote>\n<\/div>\n<p>\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\/1060470\/\">https:\/\/habr.com\/ru\/articles\/1060470\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 values.Sum() \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c .NET \u2014 \u0442\u0430\u043c \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u2014 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0432\u044b\u0432\u043e\u0434\u044b.\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0441\u0435\u0440\u0438\u0438 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0446\u0438\u043a\u043b\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043b\u0438 BCL \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435, JIT \u0441\u0430\u043c \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0433\u0440\u0430\u043d\u0438\u0446, \u0430 foreach \u043f\u0440\u044f\u0442\u0430\u043b \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438. \u0422\u0443\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435: values.Sum() \u2014 \u044d\u0442\u043e LINQ, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043c\u0435\u043d\u044f\u044e\u0442 \u043d\u0430 \u0446\u0438\u043a\u043b. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u0430 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 LINQ \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 for!\u041d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0446\u0438\u043a\u043b \u043f\u043b\u043e\u0445\u043e\u0439, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441 .NET 8 Sum() \u043d\u0430 int \u0438 long \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d (PR dotnet\/runtime #84519, \u0430\u0432\u0442\u043e\u0440 brantburnett, \u0440\u0435\u0432\u044c\u044e tannergooding), \u0430 RyuJIT \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043d\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442: \u0432 \u043c\u043e\u0438\u0445 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430\u0445 SumFor \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043a\u0430\u043b\u044f\u0440\u043e\u043c \u043d\u0430 \u0432\u0441\u0435\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u0445 \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e .NET 11, \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0430\u0432\u0442\u043e\u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0438\u0441\u0438\u0442 \u0441 2019 (issue #12466).\u0411\u0443\u0434\u0435\u0442 3 \u0438\u0441\u0442\u043e\u0440\u0438\u0438:LINQ \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u0446\u0438\u043a\u043b \u2014 \u043a\u0430\u043a \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 vpaddd, \u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 for \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0441\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c add, \u0438 \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445;\u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u2014 Sum() \u043e\u0431\u044f\u0437\u0430\u043d \u043a\u0438\u0434\u0430\u0442\u044c OverflowException, \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f; \u0437\u0430\u043e\u0434\u043d\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 breaking change: \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f, \u0438 OverflowException \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445;AVX-512, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 .NET \u043f\u0440\u044f\u0447\u0435\u0442 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u0438\u043d Xeon \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 512 \u0431\u0438\u0442 \u043f\u043e \u0444\u043b\u0430\u0433\u0443, \u0430 \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0440\u0435\u0436\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e, \u0438 \u0447\u0442\u043e \u0434\u0430\u043b\u043e \u0441\u043d\u044f\u0442\u0438\u0435 \u0437\u0430\u043f\u0440\u0435\u0442\u0430.\u041a\u043e\u0434, \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441\u043d\u044f\u0442\u0438\u044f \u0434\u0438\u0437\u0430\u0441\u043c\u0430 \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0432\u0441\u0435\u0445 \u043c\u0430\u0448\u0438\u043d \u2014 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 LinqSumProof.\u0422\u0435\u0441\u0442\u044b \u0433\u043e\u043d\u044f\u043b\u0438\u0441\u044c \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445:\u2116CPU\u042f\u0434\u0440\u0430\/\u043f\u043e\u0442\u043e\u043a\u0438\u0427\u0430\u0441\u0442\u043e\u0442\u0430\u0412\u0435\u043a\u0442\u043e\u0440\u0430L3\u21161AMD   Ryzen 9 5950X16   \/ 323,4   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 4,9 \u0432 \u0442\u0443\u0440\u0431\u043eAVX264   \u041c\u0411\u21162Intel   Core i9-10900KF10   \/ 203,7   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 5,3 \u0432 \u0442\u0443\u0440\u0431\u043eAVX220   \u041c\u0411\u211632   \u00d7 Intel Xeon Silver 4314 (Ice Lake)2\u00d716   \/ 642,4   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 3,4 \u0432 \u0442\u0443\u0440\u0431\u043eAVX-51224   \u041c\u0411 \u043d\u0430 \u0441\u043e\u043a\u0435\u0442\u21164Intel   Xeon W-2255 (Cascade Lake)10   \/ 203,7   \u0413\u0413\u0446 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e 4,5 \u0432 \u0442\u0443\u0440\u0431\u043e (4,7 \u0441 Turbo   Boost Max 3.0)AVX-51219,25   \u041c\u0411\u0418\u0441\u0442\u043e\u0440\u0438\u044f 1. LINQ \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u0446\u0438\u043a\u043b\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b:[MethodImpl(MethodImplOptions.NoInlining)]public static int SumFor(int[] values){    int sum = 0;    for (int i = 0; i &lt; values.Length; i++)    {        sum += values[i];    }     return sum;}\u0412\u044b\u0437\u043e\u0432 Sum():[MethodImpl(MethodImplOptions.NoInlining)]public static int SumLinq(int[] values) =&gt; values.Sum();\u0412\u043d\u0443\u0442\u0440\u0438 Sum() \u0441 .NET 8 \u0436\u0438\u0432\u0451\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: \u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438 List, \u043e\u043d \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 ReadOnlySpan \u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 SumSignedIntegersVectorized (Sum.cs \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430). \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u0426\u0438\u043a\u043b \u2014 \u0441\u043a\u0430\u043b\u044f\u0440, \u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e (\u0437\u0434\u0435\u0441\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u044b \u0434\u043e \u0441\u043c\u044b\u0441\u043b\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a):; SumFor, i9-10900KF, .NET 10, disasm_net10.txtG_M000_IG04:       add      eax, dword ptr [rcx]   ; sum += values[i]       add      rcx, 4                 ; \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442       dec      edx       jne      SHORT G_M000_IG04      ; \u043d\u0438 ymm, \u043d\u0438 zmm\u0410 \u0432\u043d\u0443\u0442\u0440\u0438 Sum() \u2014 \u0432\u0435\u043a\u0442\u043e\u0440, \u0432\u043e\u0441\u0435\u043c\u044c int \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e:; SumSignedIntegersVectorized, i9-10900KF, .NET 10       vmovups  ymm2, ymmword ptr [rax+4*rdx]   ; \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 8 int       vpaddd   ymm3, ymm0, ymm2                ; \u0441\u043b\u043e\u0436\u0438\u043b\u0438 8 \u0440\u0430\u0437\u043e\u043c       vpxor    ymm0, ymm0, ymm3                ; \u043f\u0440\u043e \u044d\u0442\u0438 \u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 &#8212;       vpxor    ymm2, ymm2, ymm3                ; \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438       vpand    ymm0, ymm2, ymm0\u0414\u043e \u00d74,7 \u0437\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434\u041d\u0430 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 (\u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0..15 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c seed, \u0441\u0443\u043c\u043c\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0432 int) \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 Sum() \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.\u0421\u0432\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0442\u0438\u0432 Sum() \u043d\u0430 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445: \u0440\u0430\u0437\u0440\u044b\u0432 \u043e\u0442 \u00d72,82 \u0434\u043e \u00d74,67\u041f\u043e\u043b\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u21163 \u2014 Sum() \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u0438 \u043d\u0430 List, \u0438 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:\u0412\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u21163 (\u043f\u0430\u0440\u0430 Xeon 4314), 65 536 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0442\u0440\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u2014 Sum_Tensor: \u044d\u0442\u043e TensorPrimitives.Sum \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 System.Numerics.Tensors, \u0442\u043e\u0436\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439, \u043d\u043e \u0431\u0435\u0437 checked-\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438. \u041a \u043d\u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u0441\u044c \u0432 \u0432\u044b\u0432\u043e\u0434\u0430\u0445.\u0421\u0440\u0430\u0437\u0443 \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u043e\u0437\u0440\u0430\u0436\u0435\u043d\u0438\u044f:\u00ab\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438 \u0446\u0438\u043a\u043b \u2014 \u0434\u043e\u0433\u043e\u043d\u0438\u0448\u044c\u00bb: \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0439 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 SumForUnrolled \u0432 \u0431\u0435\u043d\u0447\u0435 \u0435\u0441\u0442\u044c, \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u044d\u0442\u043e \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 add, \u0438 \u043d\u0430 65 536 \u043e\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 Sum() \u0432 1,8\u20132,6 \u0440\u0430\u0437\u0430. \u041f\u0440\u0430\u0432\u0434\u0430, \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u0438\u0437 32 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0439 \u0441\u043a\u0430\u043b\u044f\u0440 Sum() \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u2014 \u00d70,86\u20130,97 \u043d\u0430 \u0442\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445: \u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430, \u0438 \u043d\u0430 32 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u043e\u043d\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0430.\u00ab\u0423 \u043c\u0435\u043d\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0438\u043f\u0430 IEnumerable, \u0430 \u043d\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u00bb: \u0443 Sum() \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043d\u0430\u044f, SumLinqInterface \u0441 \u0442\u0435\u043c \u0436\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u043f\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0438\u0434\u0451\u0442 \u0432\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u043f\u0440\u044f\u043c\u044b\u043c \u0432\u044b\u0437\u043e\u0432\u043e\u043c (\u00d70,97\u20131,02). \u042d\u0442\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442 \u0441 foreach \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0433\u0434\u0435 \u0432\u0441\u0451 \u0440\u0435\u0448\u0430\u043b \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.\u00abLINQ \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442\u00bb: \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u2014 \u043d\u043e\u043b\u044c, \u043a\u043e\u043b\u043e\u043d\u043a\u0430 Allocated \u043f\u0443\u0441\u0442\u0430\u044f, \u044d\u043d\u0443\u043c\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430 \u0438\u0434\u0451\u0442 \u043f\u043e span.\u041f\u0440\u043e \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u044e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u0432: \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 Xeon Sum() \u0441 \u0432\u043e\u0441\u044c\u043c\u0451\u0440\u043a\u0438 \u0434\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u043b\u0441\u044f \u043d\u0430 14\u201317%, \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430\u0445 \u2014 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0448\u0443\u043c\u0430.Sum() \u043d\u0430 .NET 8 \/ 9 \/ 10: \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445\u0413\u0440\u0430\u043d\u0438\u0446\u0430: \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 yield \u2014 \u0434\u043e \u00d732\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f span: TryGetSpan \u0432\u043d\u0443\u0442\u0440\u0438 Sum() (Sum.cs) \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0434 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0435 \u0432\u0438\u0434\u0438\u0442, \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u044d\u043d\u0443\u043c\u0435\u0440\u0430\u0442\u043e\u0440 \u2014 MoveNext \u0438 Current \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u043b\u044e\u0441 48 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0441\u0430\u043c \u044d\u043d\u0443\u043c\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u0418\u0442\u0435\u0440\u0430\u0442\u043e\u0440 (yield return \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0443) \u2014 \u0440\u043e\u0432\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439:Sum() \u043f\u043e yield-\u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443: \u043e\u0442 \u00d718 \u0434\u043e \u00d732 \u043a Sum() \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443\u041d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u0445 \u0440\u0430\u0437\u0440\u044b\u0432 \u0446\u0438\u043a\u043b\u0430 \u0438 Sum() \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u2014 \u043e\u0431\u0430 \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u044c:\u0420\u0430\u0437\u0440\u044b\u0432 \u043f\u043e \u0434\u043b\u0438\u043d\u0430\u043c: \u043d\u0430 16 \u041c\u0411 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437 \u043a\u044d\u0448\u0430 \u2014 \u043a\u0440\u043e\u043c\u0435 Ryzen \u0441 \u0435\u0433\u043e 64 \u041c\u0411 L3\u0418\u0441\u0442\u043e\u0440\u0438\u044f 2. Checked \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0448\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0430 \u0440\u0430\u0432\u043d\u044b\u0445: Sum() \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443 \u043a\u0438\u0434\u0430\u0435\u0442 OverflowException, \u0430 sum += values[i] \u0432 C# \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u043b\u0447\u0430. \u0423\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u2014 checked-\u0446\u0438\u043a\u043b:[MethodImpl(MethodImplOptions.NoInlining)]public static int SumForChecked(int[] values){    int sum = 0;    for (int i = 0; i &lt; values.Length; i++)    {        checked        {            sum += values[i];        }    }     return sum;}\u0412 \u0441\u043a\u0430\u043b\u044f\u0440\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f \u2014 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435:; SumForChecked, i9-10900KF, .NET 10       add      eax, dword ptr [rcx]       jo       SHORT G_M000_IG06      ; \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 -&gt; throw\u041d\u0430 65 536 checked-\u0446\u0438\u043a\u043b \u0438\u0434\u0451\u0442 \u0432\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043f\u0430\u0440\u0435 Xeon 4314 \u2014 31,6 \u043c\u043a\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 30,6, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 3%) \u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 Sum() \u0434\u043e \u00d74,84. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043d\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 \u2014 \u043d\u0435 \u043f\u043b\u0430\u0442\u0430 \u0437\u0430 checked, \u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432.\u0410 \u043a\u0430\u043a \u044d\u0442\u0443 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043a\u043e\u0434? \u0423 vpaddd \u043d\u0435\u0442 \u0444\u043b\u0430\u0433\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c-\u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u043c BCL \u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u2014 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u0442\u0440\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0443\u0434\u0430 \u043f\u043e \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u0431\u0438\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0435 \u0441\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u043a \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b (\u0441\u043b\u043e\u0436\u0438\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435).\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u2014 \u0440\u0430\u0437 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u2014 \u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432: \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u2014 OverflowException. \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0442\u043e\u0436\u0435 \u0438\u0434\u0451\u0442 \u0432 checked, \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e.Breaking change: \u0442\u043e \u0436\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0441\u0442\u0430\u0423 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a: \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u044b \u043a\u043e\u043f\u044f\u0442\u0441\u044f \u043d\u0435 \u043f\u043e\u0434\u0440\u044f\u0434 \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443, \u0430 \u043f\u043e \u044d\u0442\u0438\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c.\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043a\u0430\u043a breaking change .NET 8: OverflowException \u043c\u043e\u0436\u0435\u0442 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0430 .NET 7 \u043c\u043e\u043b\u0447\u0430\u043b, \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 (\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 issue #92230). \u0416\u0438\u0432\u043e\u0435 \u0434\u0435\u043c\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e (Disasm.exe overflow): \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 128 \u043f\u0430\u0440 (int.MaxValue, int.MinValue). \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f checked-\u0441\u0443\u043c\u043c\u0430 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043e\u043a\u043e\u043b\u043e \u043d\u0443\u043b\u044f \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u2212128.\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 Sum() \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0432\u0441\u0435 int.MaxValue \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u2014 \u0438 \u0443\u0436\u0435 \u0432\u0442\u043e\u0440\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 MaxValue \u0441 MaxValue:SumForChecked: -128Sum():         OverflowException\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0441 DOTNET_EnableHWIntrinsic=0 (\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0430\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e) \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2014 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, Sum() \u0442\u043e\u0436\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u2212128. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u043e\u0432\u0438\u0442 OverflowException \u043e\u0442 Sum() \u043a\u0430\u043a \u0441\u0438\u0433\u043d\u0430\u043b \u2014 \u043f\u043e\u0441\u043b\u0435 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0430 \u043d\u0430 .NET 8+ \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\u0418\u0441\u0442\u043e\u0440\u0438\u044f 3. AVX-512, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 .NET \u043f\u0440\u044f\u0447\u0435\u0442\u041e\u0431\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0443\u043c\u0435\u044e\u0442 AVX-512, \u043d\u043e .NET 10 \u0432\u0438\u0434\u0438\u0442 \u0438\u0445 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u2014 \u0432\u044b\u0432\u043e\u0434 \u0443\u0442\u0438\u043b\u0438\u0442\u044b Disasm \u0438\u0437 \u0440\u0435\u043f\u043e:; 2 x Xeon 4314 (Ice Lake)           ; Xeon W-2255 (Cascade Lake)Avx512BW:                  True      Avx512BW:                  TrueVector&lt;int&gt;.Count:         8         Vector&lt;int&gt;.Count:         8Vector512.IsHardwareAccelerated:     Vector512.IsHardwareAccelerated:                           True                                 FalseSum() \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 Vector&lt;T&gt;, \u0430 \u0435\u0433\u043e \u0448\u0438\u0440\u0438\u043d\u0430 \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u2014 256 \u0431\u0438\u0442 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0436\u0438\u0432\u043e\u043c AVX-512. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f DOTNET_MaxVectorTBitWidth=512 (issue #104978 \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 Vector&lt;T&gt;) \u043d\u0430 Ice Lake \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440: Count \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f 16, \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 Sum() \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f zmm, \u0438 \u043d\u0430 65 536 \u044d\u0442\u043e \u043c\u0438\u043d\u0443\u0441 14% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (6,55 \u2192 5,63 \u043c\u043a\u0441). \u0410 \u043d\u0430 Cascade Lake \u2014 \u043d\u0438\u0447\u0435\u0433\u043e: Count \u043a\u0430\u043a \u0431\u044b\u043b 8, \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f, \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043d\u0430 ymm.\u042d\u0442\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0437\u0430\u0448\u0438\u0442\u0430 CPUID-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0432\u0438\u0442 \u0444\u043b\u0430\u0433 CORJIT_FLAG_VECTOR512_THROTTLING \u0434\u043b\u044f Skylake Server, Cascade Lake \u0438 Cooper Lake (issue #88233, \u043a\u043e\u0434 \u043f\u0440\u0438\u0448\u0451\u043b \u0432 PR #86655).\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u0431\u043e\u0440\u0435 intrinsics \u0432 .NET 8: \u043d\u0430 \u044d\u0442\u0438\u0445 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430\u0445 512-\u0431\u0438\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u044e\u0442 \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u044f\u0434\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 Vector512.IsHardwareAccelerated \u0442\u0430\u043c \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 false \u2014 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 Intel Optimization Reference Manual, \u0440\u0430\u0437\u0434\u0435\u043b 2.5.3 Skylake Server Power Management. Ice Lake \u043f\u043e\u0434 \u044d\u0442\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442: \u0442\u0430\u043c \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043e\u0442 512-\u0431\u0438\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435.\u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u0435\u0442: +38% \u043d\u0430 Cascade Lake\u0417\u0430\u043f\u0440\u0435\u0442 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439: DOTNET_PreferredVectorBitWidth=512. \u0421 \u043f\u0430\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 W-2255 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Count = 16, \u0438 Sum() \u043f\u0435\u0440\u0435\u0441\u0430\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 zmm \u2014 \u043f\u0440\u0438\u0447\u0451\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 AVX-512 \u0441\u0442\u0430\u043b \u043a\u043e\u0440\u043e\u0447\u0435: \u0438\u0437 \u0442\u0440\u043e\u0439\u043a\u0438 vpxor\/vpxor\/vpand \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u2014 vpxord \u0438 vpternlogd, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0441\u043e\u0440 \u0438 vpand \u0432 \u043e\u0434\u043d\u0443&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-487739","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/487739","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=487739"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/487739\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=487739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=487739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=487739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}