{"id":491161,"date":"2026-08-17T11:29:51","date_gmt":"2026-08-17T11:29:51","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=491161"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=491161","title":{"rendered":"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u044f try\/finally: \u043e\u0434\u0438\u043d finally \u2014 \u0438 \u043c\u0435\u0442\u043e\u0434 \u0432 6,45 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435"},"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, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434, \u0435\u0441\u043b\u0438 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u0434 \u0432 try\/finally \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>\u041a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, try\/finally \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442. \u041d\u043e JIT \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0435 \u043d\u0430 \u044d\u0442\u043e: \u0434\u043e .NET 10 \u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u0435\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0435\u0441\u0442\u044c try\/finally. \u041a\u0430\u0436\u0434\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>\u043c\u0435\u0442\u043e\u0434 \u0431\u0435\u0437 try\/finally;<\/p>\n<\/li>\n<li>\n<p>\u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0445\u043e\u0434 \u0441\u043f\u0438\u0441\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 foreach;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 MoveNext.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0411\u0443\u0434\u0435\u0442 3 \u0438\u0441\u0442\u043e\u0440\u0438\u0438:<\/strong><\/p>\n<ul>\n<li>\n<p>\u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043d\u0430 .NET 8, .NET 9 \u0438 .NET 10;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043c\u0435\u0440 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u044b, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 .NET 10 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a .NET 8, \u0438 foreach, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u043a\u043e\u0441\u043d\u0443\u043b\u043e\u0441\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u043c\u0435\u0440\u044b \u0441\u0434\u0435\u043b\u0430\u043d\u044b \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=\"center\"><strong>CPU<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u042f\u0434\u0440\u0430\/\u043f\u043e\u0442\u043e\u043a\u0438<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u0427\u0430\u0441\u0442\u043e\u0442\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041e\u0421<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21161<\/p>\n<\/td>\n<td>\n<p align=\"center\">AMD Ryzen 9 5950X<\/p>\n<\/td>\n<td>\n<p align=\"center\">16 \/ 32<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,4 \u0413\u0413\u0446, \u0434\u043e 4,9 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"center\">Windows 10 1809<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21162<\/p>\n<\/td>\n<td>\n<p align=\"center\">Intel Core i9-10900KF<\/p>\n<\/td>\n<td>\n<p align=\"center\">10 \/ 20<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,7 \u0413\u0413\u0446, \u0434\u043e 5,3 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"center\">Windows 10 22H2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21163<\/p>\n<\/td>\n<td>\n<p align=\"center\">2 \u00d7 Intel Xeon Silver 4314<\/p>\n<\/td>\n<td>\n<p align=\"center\">2\u00d716 \/ 64<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,4 \u0413\u0413\u0446, \u0434\u043e 3,4 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"center\">Windows Server 2022<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21164<\/p>\n<\/td>\n<td>\n<p align=\"center\">Intel Xeon W-2255<\/p>\n<\/td>\n<td>\n<p align=\"center\">10 \/ 20<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,7 \u0413\u0413\u0446, \u0434\u043e 4,5 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"center\">Windows Server 2022<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>BenchmarkDotNet 0.15.8, \u0441\u0431\u043e\u0440\u043a\u0430 Release. \u041f\u0430\u0442\u0447-\u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u0432 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u0417\u0430\u043c\u0435\u0440\u044b \u0441\u043d\u044f\u0442\u044b \u043d\u0430 .NET 8, .NET 9 \u0438 .NET 10, \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u2014 \u0435\u0449\u0451 \u0438 \u043d\u0430 .NET 11.<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 1. \u041e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 finally<\/h3>\n<p>\u041e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c, \u0433\u0434\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a:<\/p>\n<pre><code class=\"cs\">\/\/ InliningEhProof, Subjects.cspublic static int ElementPlain(int[] data, int index){    int value = data[index];    Volatile.Write(ref _touched, _touched + 1);    return value;}public static int ElementFinally(int[] data, int index){    try    {        return data[index];    }    finally    {        Volatile.Write(ref _touched, _touched + 1);    }}<\/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>\u0421\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0437\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b finally \u043d\u0435 \u0431\u044b\u043b \u043f\u0443\u0441\u0442\u044b\u043c: \u043f\u0443\u0441\u0442\u043e\u0439 finally JIT \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u0438 \u043e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438. Volatile.Write \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0446\u0438\u043a\u043b\u0430 \u2014 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u0443\u0431\u0435\u0440\u0451\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0446\u0438\u043a\u043b\u0430, \u0438 \u0437\u0430\u043c\u0435\u0440 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043d\u0435 \u043c\u0435\u0436\u0434\u0443 try\/finally \u0438 \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c, \u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0451\u043c\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u041e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0438\u0437 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u043d\u0430 \u043d\u0451\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 NoInlining (\u0435\u0433\u043e \u0438 \u043c\u0435\u0440\u044f\u0435\u043c). \u0423 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043d\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u0438\u0445 \u043a\u043e\u0434 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0414\u043b\u0438\u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 [Params(4, 16, 64)] \u0438 \u0440\u0430\u0432\u043d\u0430 \u0447\u0438\u0441\u043b\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041c\u0430\u0448\u0438\u043d\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u0421\u043f\u043e\u0441\u043e\u0431<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 8<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 9<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 10<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21161 Ryzen 5950X<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,147<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,225<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,247<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21161 Ryzen 5950X<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">7,401<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,534<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,306<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21162 i9-10900KF<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,577<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,659<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,625<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21162 i9-10900KF<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,238<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,170<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,997<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21163 2\u00d7Xeon Silver<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">8,678<\/p>\n<\/td>\n<td>\n<p align=\"center\">8,583<\/p>\n<\/td>\n<td>\n<p align=\"center\">8,666<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21163 2\u00d7Xeon Silver<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">10,051<\/p>\n<\/td>\n<td>\n<p align=\"center\">10,977<\/p>\n<\/td>\n<td>\n<p align=\"center\">9,348<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21164 Xeon W-2255<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,581<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,224<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,156<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21164 Xeon W-2255<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">9,995<\/p>\n<\/td>\n<td>\n<p align=\"center\">10,400<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,483<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u041d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430: \u043d\u0430 .NET 8 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 1,16\u20136,45 \u0440\u0430\u0437\u0430, \u043d\u0430 .NET 10 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u043e 1,05\u20131,14<\/em><\/p>\n<p>\u041d\u0430 .NET 8 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 1,16\u20136,45 \u0440\u0430\u0437\u0430, \u043d\u0430 .NET 9 \u2014 \u0432 1,28\u20135,33, \u0430 \u043d\u0430 .NET 10 \u043e\u0442 \u044d\u0442\u043e\u0439 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f: \u043e\u0442 1,05 \u0434\u043e 1,14 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. \u041d\u0438\u0436\u043d\u0438\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b 1,16 \u0438 1,28 \u2014 \u044d\u0442\u043e 2 \u00d7 Xeon Silver 4314, \u043d\u0430 \u0442\u0440\u0451\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0430 .NET 8 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 2,42\u20136,45 \u0440\u0430\u0437\u0430.<\/p>\n<p>\u041d\u0430 2 \u00d7 Xeon Silver 4314 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442 \u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435: 1,16 \u043d\u0430 .NET 8 \u0438 1,08 \u043d\u0430 .NET 10. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u2014 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043d\u044f\u0442\u043e \u0432 .NET 10, \u0447\u0442\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438: <a href=\"https:\/\/learn.microsoft.com\/ru-ru\/dotnet\/core\/whats-new\/dotnet-10\/runtime\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0431\u043b\u043e\u043a\u0438 \u0441 try-finally, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f<\/a>. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u043e\u0441\u044c \u0432 <a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/108900\" rel=\"noopener noreferrer nofollow\">dotnet\/runtime#108900<\/a>.<\/p>\n<p>\u0421\u043d\u044f\u0442\u043e \u043e\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. \u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0432 JIT \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">\/\/ dotnet\/runtime, src\/coreclr\/jit\/fgbasic.cpp (\u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043e)if (compIsForInlining()){    const bool isFinallyFaultOrFilter =        (clause.Flags &amp; (CORINFO_EH_CLAUSE_FINALLY | CORINFO_EH_CLAUSE_FAULT |                         CORINFO_EH_CLAUSE_FILTER)) != 0;    if (!isFinallyFaultOrFilter)    {        JITDUMP(\"Inlinee EH clause %u is a catch; we can't inline these (yet)\\n\", XTnum);        compInlineResult-&gt;NoteFatal(InlineObservation::CALLEE_HAS_EH);        return;    }}<\/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>\u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f finally, fault \u0438 filter. \u041c\u0435\u0442\u043e\u0434 \u0441 catch \u0432\u043d\u0443\u0442\u0440\u0438 JIT \u043d\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c\u0441\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0442\u0435\u043c \u0436\u0435 \u043a\u043e\u0434\u043e\u043c \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c [MethodImpl(MethodImplOptions.NoInlining)]. \u0415\u0441\u043b\u0438 JIT \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e.<\/p>\n<p>\u0421 \u044d\u0442\u0438\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 7,377\u201310,074 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 .NET 8 \u0438 5,941\u20139,012 \u043d\u0430 .NET 10. \u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 .NET 8 \u043a .NET 10 \u0437\u0434\u0435\u0441\u044c 1,03\u20131,24 \u0440\u0430\u0437\u0430, \u0430 \u0431\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434 \u0434\u0430\u0451\u0442 1,08\u20135,67. \u0417\u0430\u043f\u0440\u0435\u0442 \u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043a\u043e\u0434\u0430 \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438.<\/p>\n<p>\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0438\u0434\u043d\u043e \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u0412\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430 .NET 8:<\/p>\n<pre><code class=\"assembly\">; InliningEhProof.Subjects:CallElementFinally(int[]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_net8.txtG_M000_IG03:       mov      rcx, rbx       mov      edx, edi       call     [InliningEhProof.Subjects:ElementFinally(int[],int):int]       add      esi, eax               ; \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u043c\u043c\u044b       inc      edi       cmp      ebp, edi       jg       SHORT G_M000_IG03; Total bytes of code 52<\/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>\u041e\u043d \u0436\u0435 \u043d\u0430 .NET 10:<\/p>\n<pre><code class=\"assembly\">; InliningEhProof.Subjects:CallElementFinally(int[]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_net10.txt; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO dataG_M000_IG04:       mov      r10d, dword ptr [rcx]  ; \u0447\u0442\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0433\u0440\u0430\u043d\u0438\u0446       inc      dword ptr [r8]         ; \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0438\u0437 finally       add      eax, r10d       add      rcx, 4                 ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443       dec      edx       jne      SHORT G_M000_IG04; Total bytes of code 51<\/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\u044b\u0437\u043e\u0432\u0430 \u043d\u0435\u0442, \u043a\u043e\u0434 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<p>\u0412 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0432\u0438\u0434\u043d\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u0440\u0430\u043d\u0438\u0446 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u043f\u0430\u043b\u0430, \u0430\u0434\u0440\u0435\u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 6,45 \u0440\u0430\u0437\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0438 \u0443\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u0440\u0430\u043d\u0438\u0446.<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 2. \u0417\u0430\u043c\u0435\u0440 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438<\/h3>\n<p>\u041d\u0430 2 \u00d7 Xeon Silver 4314 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 64 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0434\u0440\u0430. \u0421\u0447\u0451\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0434\u0438 \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0433\u043e finally, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0435\u043c \u0441\u0430\u043c \u0432\u044b\u0437\u043e\u0432. \u041c\u0435\u0442\u043e\u0434 \u0431\u0435\u0437 try\/finally \u043d\u0430 \u044d\u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u2014 8,678 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 1,147 \u043d\u0430 Ryzen 5950X, \u0445\u043e\u0442\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043d \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430. \u041a\u043e\u0434 \u0442\u043e\u0442 \u0436\u0435, \u043d\u043e \u0432 \u043d\u0438\u0445 \u043d\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.<\/p>\n<pre><code class=\"cs\">\/\/ InliningEhProof, Subjects.cspublic static int ElementGuardFinally(int[] data, int index){    try    {        return data[index];    }    finally    {        if (index &lt; 0)        {            throw new InvalidOperationException(\"\u041e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\");        }    }}<\/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>\u0411\u043b\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432 IL \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043b\u0441\u044f, \u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 JIT \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e IL, \u0434\u043e \u043b\u044e\u0431\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439. \u0427\u0438\u0441\u043b\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f: \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0435\u0442\u043e\u0434.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041c\u0430\u0448\u0438\u043d\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u0421\u043f\u043e\u0441\u043e\u0431<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 8<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 9<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 10<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21161 Ryzen 5950X<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,303<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,575<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,257<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21161 Ryzen 5950X<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,240<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,554<\/p>\n<\/td>\n<td>\n<p align=\"center\">4,164<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21162 i9-10900KF<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,646<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,137<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,686<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21162 i9-10900KF<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,240<\/p>\n<\/td>\n<td>\n<p align=\"center\">7,305<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,481<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21163 2\u00d7Xeon Silver<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">4,234<\/p>\n<\/td>\n<td>\n<p align=\"center\">4,191<\/p>\n<\/td>\n<td>\n<p align=\"center\">4,266<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21163 2\u00d7Xeon Silver<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">8,866<\/p>\n<\/td>\n<td>\n<p align=\"center\">8,970<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,098<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21164 Xeon W-2255<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0431\u0435\u0437 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,428<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,038<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,692<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21164 Xeon W-2255<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0441 try\/finally<\/p>\n<\/td>\n<td>\n<p align=\"center\">7,532<\/p>\n<\/td>\n<td>\n<p align=\"center\">7,533<\/p>\n<\/td>\n<td>\n<p align=\"center\">4,102<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u041d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430, \u043a\u043e\u0434 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438: \u043d\u0430 .NET 10 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043d\u0430 .NET 8, \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f 2 \u00d7 Xeon Silver 4314 \u2014 6,098 \u043f\u0440\u043e\u0442\u0438\u0432 8,866<\/em><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c 2 \u00d7 Xeon Silver 4314 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0442\u0440\u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435: 1,45 \u0440\u0430\u0437\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 1,50, 1,79 \u0438 1,84. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u043b \u0441\u0447\u0451\u0442\u0447\u0438\u043a.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043c\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0431\u0435\u0437 try\/finally \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442: \u043d\u0430 Ryzen 5950X \u0441 4,79 \u0440\u0430\u0437\u0430 \u043d\u0430 .NET 8 \u0434\u043e 3,31 \u043d\u0430 .NET 10, \u043d\u0430 2 \u00d7 Xeon Silver 4314 \u2014 \u0441 2,09 \u0434\u043e 1,43. JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430, \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0435\u0442, \u0430 \u0432\u0435\u0442\u043a\u0430 \u0441 throw \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c.<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 3. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 foreach<\/h3>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0437\u0430\u043c\u0435\u0440\u044b \u0441\u043d\u044f\u0442\u044b \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0422\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0433\u043e\u043d \u0441 DOTNET_TieredPGO=0:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041c\u0430\u0448\u0438\u043d\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 8<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 10<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>.NET 10 \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21161 Ryzen 5950X<\/p>\n<\/td>\n<td>\n<p align=\"center\">7,401<\/p>\n<\/td>\n<td>\n<p align=\"center\">1,306<\/p>\n<\/td>\n<td>\n<p align=\"center\">7,497<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21162 i9-10900KF<\/p>\n<\/td>\n<td>\n<p align=\"center\">6,238<\/p>\n<\/td>\n<td>\n<p align=\"center\">2,997<\/p>\n<\/td>\n<td>\n<p align=\"center\">5,668<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21163 2\u00d7Xeon Silver<\/p>\n<\/td>\n<td>\n<p align=\"center\">10,051<\/p>\n<\/td>\n<td>\n<p align=\"center\">9,348<\/p>\n<\/td>\n<td>\n<p align=\"center\">11,145<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21164 Xeon W-2255<\/p>\n<\/td>\n<td>\n<p align=\"center\">9,995<\/p>\n<\/td>\n<td>\n<p align=\"center\">3,483<\/p>\n<\/td>\n<td>\n<p align=\"center\">9,398<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u041c\u0435\u0442\u043e\u0434 \u0441 try\/finally, \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430: \u0431\u0435\u0437 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f .NET 10 \u0434\u0430\u0451\u0442 \u0447\u0438\u0441\u043b\u0430 .NET 8<\/em><\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b .NET 10 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u043a \u0443\u0440\u043e\u0432\u043d\u044e .NET 8. \u0412 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u0438\u0434\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435:<\/p>\n<pre><code class=\"assembly\">; InliningEhProof.Subjects:CallElementFinally(int[]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_nopgo_net10.txt; No PGO dataG_M000_IG03:       mov      rcx, rbx       mov      edx, edi       call     [InliningEhProof.Subjects:ElementFinally(int[],int):int]       add      esi, eax       inc      edi       cmp      ebp, edi       jg       SHORT G_M000_IG03<\/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>\u0411\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u0434 \u043e\u0434\u043d\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0445. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u043d \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438 \u0437\u0434\u0435\u0441\u044c \u2014 1,376 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 1,247 \u043d\u0430 Ryzen 5950X. \u0410 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442: \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f JIT \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u0447\u0430\u0441\u0442\u044b\u0439.<\/p>\n<p>\u0421 .NET 8 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, .NET 10 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0443\u0440\u043e\u0432\u043d\u044e .NET 8: \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u043f\u043e \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u043e\u0442 0,91 \u0434\u043e 1,11 \u043f\u0440\u043e\u0442\u0438\u0432 \u043f\u0440\u0435\u0436\u043d\u0438\u0445 1,08\u20135,67.<\/p>\n<p>\u0411\u043b\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 IL \u0438 \u0431\u0435\u0437 try\/finally. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 foreach \u0432 try\/finally \u0441 \u0432\u044b\u0437\u043e\u0432\u043e\u043c Dispose \u0443 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044f, \u0438 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0445\u043e\u0434\u0438\u0442 List&lt;int&gt;, \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0434 \u0442\u043e \u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"assembly\">; InliningEhProof.Subjects:CallListForeach(System.Collections.Generic.List`1[int]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_net10.txtG_M000_IG03:       mov      rcx, rbx       call     [InliningEhProof.Subjects:ListForeach(System.Collections.Generic.List`1[int]):int]       add      esi, eax       dec      edi       jne      SHORT G_M000_IG03<\/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>\u041b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u0441\u043d\u044f\u0442\u044b \u0438 \u043d\u0430 .NET 11 \u2014 \u0432\u044b\u0437\u043e\u0432 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u0445 \u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. \u0410 \u043a\u043e\u0434 \u043e\u0431\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 MoveNext, \u0433\u0434\u0435 Dispose \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 try, JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0437\u0434\u0435.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u21161 Ryzen<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u21162 i9<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u21163 Xeon Silver<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u21164 Xeon W<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,19<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,48<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,68<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,58<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,05<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,02<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,10<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,02<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">64<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,03<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,03<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,02<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u00d71,01<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u0412\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043e\u0431\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 foreach \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043e\u0431\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 MoveNext \u043d\u0430 .NET 10: \u0434\u043e \u00d71,68 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445, \u00d71,01\u20131,03 \u043d\u0430 64<\/em><\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0435. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 .NET 10 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a, \u0430 \u043c\u0435\u0442\u043e\u0434 \u0441 \u0446\u0438\u043a\u043b\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 JIT \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438 \u043d\u0430 .NET 10. \u041d\u0430 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u043c\u0435\u0442\u043d\u0430, \u043d\u0430 64 \u043e\u043d\u0430 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u2014 \u0442\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<h4>\u041f\u043e \u0446\u0438\u0444\u0440\u0430\u043c:<\/h4>\n<ul>\n<li>\n<p>\u0438\u0437-\u0437\u0430 \u043e\u0434\u043d\u043e\u0433\u043e finally \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 1,16\u20136,45 \u0440\u0430\u0437\u0430 \u043d\u0430 .NET 8 \u0438 \u0432 1,28\u20135,33 \u043d\u0430 .NET 9 \u2014 \u043d\u0435 \u0438\u0437-\u0437\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e JIT \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043a\u043e\u0434 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430 .NET 10 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u043e 1,05\u20131,14: \u0432\u044b\u0437\u043e\u0432\u0430 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043d\u0435\u0442, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u0440\u0430\u043d\u0438\u0446 \u043c\u0430\u0441\u0441\u0438\u0432\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 JIT \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 .NET 8 \u0438 .NET 10 \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 1,03\u20131,24 \u0440\u0430\u0437\u0430 \u2014 \u0432\u043c\u0435\u0441\u0442\u043e 1,08\u20135,67 \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u0435\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043d\u044f\u0442\u043e \u0434\u043b\u044f finally, fault \u0438 filter. JIT \u043d\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0441 catch \u0432\u043d\u0443\u0442\u0440\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430 \u043a\u043e\u0434\u0435 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 .NET 10 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 .NET 8 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u2014 \u0432 1,45\u20131,84 \u0440\u0430\u0437\u0430. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0431\u0435\u0437 try\/finally \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441 2,09\u20134,79 \u0434\u043e 1,43\u20133,31: \u0432\u044b\u0437\u043e\u0432\u0430 \u0443\u0436\u0435 \u043d\u0435\u0442, \u0430 \u0432\u0435\u0442\u043a\u0430 \u0441 throw \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0441 DOTNET_TieredPGO=0 .NET 10 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0443\u0440\u043e\u0432\u043d\u044e .NET 8 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u2014 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043e\u0442 0,91 \u0434\u043e 1,11. \u041a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0431\u0435\u0437 try\/finally JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 foreach JIT \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0438 \u043d\u0430 .NET 8, \u043d\u0438 \u043d\u0430 .NET 9, \u043d\u0438 \u043d\u0430 .NET 10, \u043d\u0438 \u043d\u0430 .NET 11: \u043e\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043e\u0431\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 MoveNext \u0432 1,19\u20131,68 \u0440\u0430\u0437\u0430 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u0438 \u0432 1,01\u20131,03 \u0440\u0430\u0437\u0430 \u043d\u0430 64.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435:<\/h4>\n<ul>\n<li>\n<p>\u043d\u0430 .NET 8 \u0438 .NET 9 using, lock, foreach \u0438 \u044f\u0432\u043d\u044b\u0439 try\/finally \u043d\u0435 \u0434\u0430\u044e\u0442 JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0440\u0430\u0437, \u0438\u0445 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430 .NET 10 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043d\u044f\u0442\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435\u0442. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u2014 \u043c\u0435\u0442\u043e\u0434\u044b \u0441 catch: \u0438\u0445 JIT \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u0436\u0435 \u043d\u0430 .NET 10;<\/p>\n<\/li>\n<li>\n<p>\u0432 \u0433\u043e\u0440\u044f\u0447\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0435, \u0433\u0434\u0435 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u2014 \u044d\u0442\u043e \u0446\u0438\u043a\u043b \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, foreach \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u043d\u0430 MoveNext \u0441 Dispose \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 try \u2014 \u0442\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u043a\u043e\u0434 JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430. \u041d\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0434\u043e 1,68 \u0440\u0430\u0437\u0430, \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u0445 \u2014 \u0443\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c: \u0431\u0435\u0437 \u043d\u0435\u0433\u043e .NET 10 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a .NET 8;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0447\u044c \u043f\u0440\u043e \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u0433\u043e\u0440\u044f\u0447\u0435\u043c \u043f\u0443\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u043e\u0434 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/ComboxSoftDeveloper\/InliningEhProof\" rel=\"noopener noreferrer nofollow\">InliningEhProof<\/a> \u2014 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438, \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0438 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/p>\n<\/li>\n<\/ul>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/learn.microsoft.com\/ru-ru\/dotnet\/core\/whats-new\/dotnet-10\/runtime\" rel=\"noopener noreferrer nofollow\">\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 .NET 10<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/108900\" rel=\"noopener noreferrer nofollow\">dotnet\/runtime#108900 \u2014 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/release\/10.0\/src\/coreclr\/jit\/fgbasic.cpp\" rel=\"noopener noreferrer nofollow\">fgbasic.cpp \u0432 dotnet\/runtime, \u0432\u0435\u0442\u043a\u0430 release\/10.0 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u043b\u043e\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/performance-improvements-in-net-10\/\" rel=\"noopener noreferrer nofollow\">Performance Improvements in .NET 10<\/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<\/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\/1071238\/\">https:\/\/habr.com\/ru\/articles\/1071238\/<\/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, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434, \u0435\u0441\u043b\u0438 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u0434 \u0432 try\/finally \u2014 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0432\u044b\u0432\u043e\u0434\u044b.\u041a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, try\/finally \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442. \u041d\u043e JIT \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0435 \u043d\u0430 \u044d\u0442\u043e: \u0434\u043e .NET 10 \u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u0435\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0435\u0441\u0442\u044c try\/finally. \u041a\u0430\u0436\u0434\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.\u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:\u043c\u0435\u0442\u043e\u0434 \u0431\u0435\u0437 try\/finally;\u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally;\u043e\u0431\u0445\u043e\u0434 \u0441\u043f\u0438\u0441\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 foreach;\u043e\u0431\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 MoveNext.\u0411\u0443\u0434\u0435\u0442 3 \u0438\u0441\u0442\u043e\u0440\u0438\u0438:\u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043d\u0430 .NET 8, .NET 9 \u0438 .NET 10;\u0437\u0430\u043c\u0435\u0440 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438;\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u044b, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 .NET 10 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a .NET 8, \u0438 foreach, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u043a\u043e\u0441\u043d\u0443\u043b\u043e\u0441\u044c.\u0417\u0430\u043c\u0435\u0440\u044b \u0441\u0434\u0435\u043b\u0430\u043d\u044b \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\u041e\u0421\u21161AMD Ryzen 9 5950X16 \/ 323,4 \u0413\u0413\u0446, \u0434\u043e 4,9 \u0432 \u0442\u0443\u0440\u0431\u043eWindows 10 1809\u21162Intel Core i9-10900KF10 \/ 203,7 \u0413\u0413\u0446, \u0434\u043e 5,3 \u0432 \u0442\u0443\u0440\u0431\u043eWindows 10 22H2\u211632 \u00d7 Intel Xeon Silver 43142\u00d716 \/ 642,4 \u0413\u0413\u0446, \u0434\u043e 3,4 \u0432 \u0442\u0443\u0440\u0431\u043eWindows Server 2022\u21164Intel Xeon W-225510 \/ 203,7 \u0413\u0413\u0446, \u0434\u043e 4,5 \u0432 \u0442\u0443\u0440\u0431\u043eWindows Server 2022BenchmarkDotNet 0.15.8, \u0441\u0431\u043e\u0440\u043a\u0430 Release. \u041f\u0430\u0442\u0447-\u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u0432 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u0417\u0430\u043c\u0435\u0440\u044b \u0441\u043d\u044f\u0442\u044b \u043d\u0430 .NET 8, .NET 9 \u0438 .NET 10, \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u2014 \u0435\u0449\u0451 \u0438 \u043d\u0430 .NET 11.\u0418\u0441\u0442\u043e\u0440\u0438\u044f 1. \u041e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 finally\u041e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c, \u0433\u0434\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a:\/\/ InliningEhProof, Subjects.cspublic static int ElementPlain(int[] data, int index){    int value = data[index];    Volatile.Write(ref _touched, _touched + 1);    return value;}public static int ElementFinally(int[] data, int index){    try    {        return data[index];    }    finally    {        Volatile.Write(ref _touched, _touched + 1);    }}\u0421\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0437\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b finally \u043d\u0435 \u0431\u044b\u043b \u043f\u0443\u0441\u0442\u044b\u043c: \u043f\u0443\u0441\u0442\u043e\u0439 finally JIT \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u0438 \u043e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438. Volatile.Write \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0446\u0438\u043a\u043b\u0430 \u2014 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u0443\u0431\u0435\u0440\u0451\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0446\u0438\u043a\u043b\u0430, \u0438 \u0437\u0430\u043c\u0435\u0440 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043d\u0435 \u043c\u0435\u0436\u0434\u0443 try\/finally \u0438 \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c, \u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0451\u043c\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b.\u041e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0438\u0437 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u043d\u0430 \u043d\u0451\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 NoInlining (\u0435\u0433\u043e \u0438 \u043c\u0435\u0440\u044f\u0435\u043c). \u0423 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043d\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u0438\u0445 \u043a\u043e\u0434 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0414\u043b\u0438\u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 [Params(4, 16, 64)] \u0438 \u0440\u0430\u0432\u043d\u0430 \u0447\u0438\u0441\u043b\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e.\u041c\u0430\u0448\u0438\u043d\u0430\u0421\u043f\u043e\u0441\u043e\u0431.NET 8.NET 9.NET 10\u21161 Ryzen 5950X\u0431\u0435\u0437 try\/finally1,1471,2251,247\u21161 Ryzen 5950X\u0441 try\/finally7,4016,5341,306\u21162 i9-10900KF\u0431\u0435\u0437 try\/finally2,5772,6592,625\u21162 i9-10900KF\u0441 try\/finally6,2386,1702,997\u21163 2\u00d7Xeon Silver\u0431\u0435\u0437 try\/finally8,6788,5838,666\u21163 2\u00d7Xeon Silver\u0441 try\/finally10,05110,9779,348\u21164 Xeon W-2255\u0431\u0435\u0437 try\/finally3,5813,2243,156\u21164 Xeon W-2255\u0441 try\/finally9,99510,4003,483\u041d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430: \u043d\u0430 .NET 8 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 1,16\u20136,45 \u0440\u0430\u0437\u0430, \u043d\u0430 .NET 10 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u043e 1,05\u20131,14\u041d\u0430 .NET 8 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432 1,16\u20136,45 \u0440\u0430\u0437\u0430, \u043d\u0430 .NET 9 \u2014 \u0432 1,28\u20135,33, \u0430 \u043d\u0430 .NET 10 \u043e\u0442 \u044d\u0442\u043e\u0439 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f: \u043e\u0442 1,05 \u0434\u043e 1,14 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. \u041d\u0438\u0436\u043d\u0438\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b 1,16 \u0438 1,28 \u2014 \u044d\u0442\u043e 2 \u00d7 Xeon Silver 4314, \u043d\u0430 \u0442\u0440\u0451\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0430 .NET 8 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 2,42\u20136,45 \u0440\u0430\u0437\u0430.\u041d\u0430 2 \u00d7 Xeon Silver 4314 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442 \u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435: 1,16 \u043d\u0430 .NET 8 \u0438 1,08 \u043d\u0430 .NET 10. \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u2014 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043d\u044f\u0442\u043e \u0432 .NET 10, \u0447\u0442\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438: \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0431\u043b\u043e\u043a\u0438 \u0441 try-finally, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u043e\u0441\u044c \u0432 dotnet\/runtime#108900.\u0421\u043d\u044f\u0442\u043e \u043e\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. \u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0432 JIT \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:\/\/ dotnet\/runtime, src\/coreclr\/jit\/fgbasic.cpp (\u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043e)if (compIsForInlining()){    const bool isFinallyFaultOrFilter =        (clause.Flags &amp; (CORINFO_EH_CLAUSE_FINALLY | CORINFO_EH_CLAUSE_FAULT |                         CORINFO_EH_CLAUSE_FILTER)) != 0;    if (!isFinallyFaultOrFilter)    {        JITDUMP(&#171;Inlinee EH clause %u is a catch; we can&#8217;t inline these (yet)\\n&#187;, XTnum);        compInlineResult-&gt;NoteFatal(InlineObservation::CALLEE_HAS_EH);        return;    }}\u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f finally, fault \u0438 filter. \u041c\u0435\u0442\u043e\u0434 \u0441 catch \u0432\u043d\u0443\u0442\u0440\u0438 JIT \u043d\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442.\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c\u0441\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0442\u0435\u043c \u0436\u0435 \u043a\u043e\u0434\u043e\u043c \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c [MethodImpl(MethodImplOptions.NoInlining)]. \u0415\u0441\u043b\u0438 JIT \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e.\u0421 \u044d\u0442\u0438\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 7,377\u201310,074 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 .NET 8 \u0438 5,941\u20139,012 \u043d\u0430 .NET 10. \u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 .NET 8 \u043a .NET 10 \u0437\u0434\u0435\u0441\u044c 1,03\u20131,24 \u0440\u0430\u0437\u0430, \u0430 \u0431\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434 \u0434\u0430\u0451\u0442 1,08\u20135,67. \u0417\u0430\u043f\u0440\u0435\u0442 \u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043a\u043e\u0434\u0430 \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438.\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0438\u0434\u043d\u043e \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u0412\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430 .NET 8:; InliningEhProof.Subjects:CallElementFinally(int[]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_net8.txtG_M000_IG03:       mov      rcx, rbx       mov      edx, edi       call     [InliningEhProof.Subjects:ElementFinally(int[],int):int]       add      esi, eax               ; \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u043c\u043c\u044b       inc      edi       cmp      ebp, edi       jg       SHORT G_M000_IG03; Total bytes of code 52\u041e\u043d \u0436\u0435 \u043d\u0430 .NET 10:; InliningEhProof.Subjects:CallElementFinally(int[]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_net10.txt; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO dataG_M000_IG04:       mov      r10d, dword ptr [rcx]  ; \u0447\u0442\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0433\u0440\u0430\u043d\u0438\u0446       inc      dword ptr [r8]         ; \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0438\u0437 finally       add      eax, r10d       add      rcx, 4                 ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443       dec      edx       jne      SHORT G_M000_IG04; Total bytes of code 51\u0412\u044b\u0437\u043e\u0432\u0430 \u043d\u0435\u0442, \u043a\u043e\u0434 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.\u0412 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0432\u0438\u0434\u043d\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u0440\u0430\u043d\u0438\u0446 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u043f\u0430\u043b\u0430, \u0430\u0434\u0440\u0435\u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 6,45 \u0440\u0430\u0437\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u0438 \u0443\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u0440\u0430\u043d\u0438\u0446.\u0418\u0441\u0442\u043e\u0440\u0438\u044f 2. \u0417\u0430\u043c\u0435\u0440 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438\u041d\u0430 2 \u00d7 Xeon Silver 4314 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 64 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0434\u0440\u0430. \u0421\u0447\u0451\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0434\u0438 \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0433\u043e finally, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0435\u043c \u0441\u0430\u043c \u0432\u044b\u0437\u043e\u0432. \u041c\u0435\u0442\u043e\u0434 \u0431\u0435\u0437 try\/finally \u043d\u0430 \u044d\u0442\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u2014 8,678 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 1,147 \u043d\u0430 Ryzen 5950X, \u0445\u043e\u0442\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043d \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430. \u041a\u043e\u0434 \u0442\u043e\u0442 \u0436\u0435, \u043d\u043e \u0432 \u043d\u0438\u0445 \u043d\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.\/\/ InliningEhProof, Subjects.cspublic static int ElementGuardFinally(int[] data, int index){    try    {        return data[index];    }    finally    {        if (index &lt; 0)        {            throw new InvalidOperationException(&#171;\u041e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441&#187;);        }    }}\u0411\u043b\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432 IL \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043b\u0441\u044f, \u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 JIT \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e IL, \u0434\u043e \u043b\u044e\u0431\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439. \u0427\u0438\u0441\u043b\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f: \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0435\u0442\u043e\u0434.\u041c\u0430\u0448\u0438\u043d\u0430\u0421\u043f\u043e\u0441\u043e\u0431.NET 8.NET 9.NET 10\u21161 Ryzen 5950X\u0431\u0435\u0437 try\/finally1,3031,5751,257\u21161 Ryzen 5950X\u0441 try\/finally6,2406,5544,164\u21162 i9-10900KF\u0431\u0435\u0437 try\/finally1,6461,1371,686\u21162 i9-10900KF\u0441 try\/finally6,2407,3053,481\u21163 2\u00d7Xeon Silver\u0431\u0435\u0437 try\/finally4,2344,1914,266\u21163 2\u00d7Xeon Silver\u0441 try\/finally8,8668,9706,098\u21164 Xeon W-2255\u0431\u0435\u0437 try\/finally2,4282,0381,692\u21164 Xeon W-2255\u0441 try\/finally7,5327,5334,102\u041d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430, \u043a\u043e\u0434 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u043f\u0430\u043c\u044f\u0442\u0438: \u043d\u0430 .NET 10 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043d\u0430 .NET 8, \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f 2 \u00d7 Xeon Silver 4314 \u2014 6,098 \u043f\u0440\u043e\u0442\u0438\u0432 8,866\u0422\u0435\u043f\u0435\u0440\u044c 2 \u00d7 Xeon Silver 4314 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0442\u0440\u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435: 1,45 \u0440\u0430\u0437\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 1,50, 1,79 \u0438 1,84. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u043b \u0441\u0447\u0451\u0442\u0447\u0438\u043a.\u0412\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043c\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0431\u0435\u0437 try\/finally \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442: \u043d\u0430 Ryzen 5950X \u0441 4,79 \u0440\u0430\u0437\u0430 \u043d\u0430 .NET 8 \u0434\u043e 3,31 \u043d\u0430 .NET 10, \u043d\u0430 2 \u00d7 Xeon Silver 4314 \u2014 \u0441 2,09 \u0434\u043e 1,43. JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430, \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0435\u0442, \u0430 \u0432\u0435\u0442\u043a\u0430 \u0441 throw \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c.\u0418\u0441\u0442\u043e\u0440\u0438\u044f 3. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 foreach\u0412\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0437\u0430\u043c\u0435\u0440\u044b \u0441\u043d\u044f\u0442\u044b \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0422\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0433\u043e\u043d \u0441 DOTNET_TieredPGO=0:\u041c\u0430\u0448\u0438\u043d\u0430.NET 8.NET 10.NET 10 \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u21161 Ryzen 5950X7,4011,3067,497\u21162 i9-10900KF6,2382,9975,668\u21163 2\u00d7Xeon Silver10,0519,34811,145\u21164 Xeon W-22559,9953,4839,398\u041c\u0435\u0442\u043e\u0434 \u0441 try\/finally, \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430: \u0431\u0435\u0437 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f .NET 10 \u0434\u0430\u0451\u0442 \u0447\u0438\u0441\u043b\u0430 .NET 8\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b .NET 10 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u043a \u0443\u0440\u043e\u0432\u043d\u044e .NET 8. \u0412 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u0438\u0434\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435:; InliningEhProof.Subjects:CallElementFinally(int[]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_nopgo_net10.txt; No PGO dataG_M000_IG03:       mov      rcx, rbx       mov      edx, edi       call     [InliningEhProof.Subjects:ElementFinally(int[],int):int]       add      esi, eax       inc      edi       cmp      ebp, edi       jg       SHORT G_M000_IG03\u0411\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u0434 \u043e\u0434\u043d\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u043d\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0445. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u043d \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438 \u0437\u0434\u0435\u0441\u044c \u2014 1,376 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 1,247 \u043d\u0430 Ryzen 5950X. \u0410 \u043c\u0435\u0442\u043e\u0434 \u0441 try\/finally \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442: \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f JIT \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u0447\u0430\u0441\u0442\u044b\u0439.\u0421 .NET 8 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, .NET 10 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0443\u0440\u043e\u0432\u043d\u044e .NET 8: \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u043f\u043e \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u043e\u0442 0,91 \u0434\u043e 1,11 \u043f\u0440\u043e\u0442\u0438\u0432 \u043f\u0440\u0435\u0436\u043d\u0438\u0445 1,08\u20135,67.\u0411\u043b\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 IL \u0438 \u0431\u0435\u0437 try\/finally. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 foreach \u0432 try\/finally \u0441 \u0432\u044b\u0437\u043e\u0432\u043e\u043c Dispose \u0443 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044f, \u0438 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0445\u043e\u0434\u0438\u0442 List&lt;int&gt;, \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0434 \u0442\u043e \u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435:; InliningEhProof.Subjects:CallListForeach(System.Collections.Generic.List`1[int]):int (Tier1); Results\/Comp_2\/Disasm\/disasm_net10.txtG_M000_IG03:       mov      rcx, rbx       call     [InliningEhProof.Subjects:ListForeach(System.Collections.Generic.List`1[int]):int]       add      esi, eax       dec      edi       jne      SHORT G_M000_IG03\u041b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u0441\u043d\u044f\u0442\u044b \u0438 \u043d\u0430 .NET 11 \u2014 \u0432\u044b\u0437\u043e\u0432 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u0445 \u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. \u0410 \u043a\u043e\u0434 \u043e\u0431\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 MoveNext, \u0433\u0434\u0435 Dispose \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 try, JIT \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442&#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-491161","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/491161","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=491161"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/491161\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=491161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=491161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=491161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}