{"id":488625,"date":"2026-07-26T18:57:22","date_gmt":"2026-07-26T18:57:22","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=488625"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=488625","title":{"rendered":"\u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u044f Regex: \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u0430\u043b 10 \u043c\u043a\u0441, \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u2014 1307"},"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\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0432 \u043a\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 .NET \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u2014 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0438\u043b\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435, \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>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0432 .NET \u043c\u043e\u0436\u043d\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043d\u043e \u0441\u043e\u0432\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d: \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 RegexOptions.Compiled \u0438\u043b\u0438 \u0432\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u0417\u0430\u043c\u0435\u0440\u044b \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442. \u0410 \u0432\u043e\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0451 \u043c\u0435\u0440\u044f\u044e\u0442: \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 10 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u2014 \u0435\u0449\u0451 1307.<\/p>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0448\u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>new Regex \u2014 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>RegexOptions.Compiled \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0434 \u043f\u0430\u0442\u0442\u0435\u0440\u043d IL-\u043c\u0435\u0442\u043e\u0434 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>[GeneratedRegex] \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0438\u0448\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 C# \u043a\u043e\u0434 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Regex.IsMatch \u2014 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>RegexOptions.NonBacktracking \u2014 \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435;<\/p>\n<\/li>\n<li>\n<p>string.Contains \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u0431\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f.<\/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>\u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0437\u0430\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0442\u0438\u0432 Compiled \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u0434\u0432\u0430 \u043f\u0440\u043e\u043c\u0430\u0445\u0430 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u044b\u0441\u044f\u0447\u0443 \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>\u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u2014 \u0438 \u0447\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u043e \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u2014 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/ComboxSoftDeveloper\/RegexProof\" rel=\"noopener noreferrer nofollow\">RegexProof<\/a>. \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=\"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>\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=\"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, \u0434\u043e 4,9 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">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=\"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, \u0434\u043e 5,3 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">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=\"left\">2   \u00d7 Intel Xeon Silver 4314<\/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, \u0434\u043e 3,4 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">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=\"left\">Intel   Xeon W-2255<\/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, \u0434\u043e 4,5 \u0432 \u0442\u0443\u0440\u0431\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">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, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u044b .NET 8, 9 \u0438 10. \u041f\u0430\u0442\u0447-\u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0440\u0430\u0437\u043d\u044b\u0435, \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, \u0430 \u043d\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d.<\/p>\n<p>\u0412\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0438\u0436\u0435 \u2014 \u043f\u043e .NET 10. \u0423 Compiled \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0451\u0440\u043a\u0435 \u0438 \u0434\u0435\u0432\u044f\u0442\u043a\u0435 \u0442\u0435 \u0436\u0435 \u0447\u0438\u0441\u043b\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432. \u0423 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 RegexOptions.NonBacktracking \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043c\u0430\u0448\u0438\u043d\u044b: \u043d\u0430 \u21161 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u043d\u0435\u0442, \u0430 \u043d\u0430 \u21164 \u043e\u043d\u0438 \u043d\u0430 .NET 8 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0434\u0432\u043e\u0435. \u041f\u043e\u043b\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0440\u0451\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c \u043b\u0435\u0436\u0430\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0442\u0440\u0438:<\/p>\n<pre><code class=\"cs\">\/\/ RegexProof, Subjects.cs \/\/ \u0442\u043e\u0447\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430public const string LiteralPattern = \"orders\/export\"; \/\/ \u0440\u0430\u0437\u0431\u043e\u0440 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044bpublic const string EmailPattern = @\"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\"; \/\/ \u043f\u043e\u0432\u0442\u043e\u0440\u044b \u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044bpublic const string HeavyPattern = @\"(?:[a-z]+\\d+){2,}(?:foo|bar|baz)+end\";<\/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<h2>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 1. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u0430\u043b 10 \u043c\u043a\u0441, \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u2014 1307<\/h2>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0430\u0442\u0442\u0435\u0440\u043d \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, .NET 10.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0421\u043f\u043e\u0441\u043e\u0431<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21161 Ryzen, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21162 i9, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21163 Xeon Silver, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21164 Xeon W, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   402<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   330<\/p>\n<\/td>\n<td>\n<p align=\"left\">2   185<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   953<\/p>\n<\/td>\n<td>\n<p align=\"left\">2   736 \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex + Compiled<\/p>\n<\/td>\n<td>\n<p align=\"left\">9   503<\/p>\n<\/td>\n<td>\n<p align=\"left\">10   055<\/p>\n<\/td>\n<td>\n<p align=\"left\">14   822<\/p>\n<\/td>\n<td>\n<p align=\"left\">13   501<\/p>\n<\/td>\n<td>\n<p align=\"left\">14   024 \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex + NonBacktracking<\/p>\n<\/td>\n<td>\n<p align=\"left\">53   798<\/p>\n<\/td>\n<td>\n<p align=\"left\">80   079<\/p>\n<\/td>\n<td>\n<p align=\"left\">99   201<\/p>\n<\/td>\n<td>\n<p align=\"left\">121   907<\/p>\n<\/td>\n<td>\n<p align=\"left\">198   176 \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">[GeneratedRegex]<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">0   \u0411<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, .NET 10: \u0432 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d<\/em><\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>new Regex \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0438 \u0441\u0442\u0440\u043e\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u2014 \u043e\u0442 \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u0434\u043e \u0434\u0432\u0443\u0445 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0438 \u043f\u0430\u0440\u0430 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0441 RegexOptions.Compiled \u043a \u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u0430 IL-\u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 14 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442;<\/p>\n<\/li>\n<li>\n<p>RegexOptions.NonBacktracking \u0441\u0442\u0440\u043e\u0438\u0442 \u0438\u0437 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442, \u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u0443\u0445\u043e\u0434\u0438\u0442 198 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442 \u0438 \u043e\u0442 54 \u0434\u043e 122 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434;<\/p>\n<\/li>\n<li>\n<p>[GeneratedRegex] \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e: \u043a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u043e\u0434 \u043e\u0442\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0438\u0434\u043d\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u2014 \u043e\u043d \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 Generated:<\/p>\n<pre><code class=\"cs\">\/\/ Generated\/System.Text.RegularExpressions.Generator\/...\/RegexGenerator.g.cs public static partial global::System.Text.RegularExpressions.Regex EmailGenerated()    =&gt; global::System.Text.RegularExpressions.Generated.EmailGenerated_1.Instance;<\/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>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u043a\u044d\u0448. \u0423 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Regex \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u043a\u044d\u0448 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432, \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.text.regularexpressions.regex.cachesize\" rel=\"noopener noreferrer nofollow\">Regex.CacheSize<\/a>. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u044f\u043c\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c: \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u044d\u0448 \u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432. \u041f\u043e\u043a\u0430 \u0438\u0445 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0431\u0435\u0440\u0451\u0442 \u0438\u0437 \u043a\u044d\u0448\u0430 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. \u0428\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0439 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443: 1, 8 \u0438 15 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u044d\u0448, 16 \u0438 32 \u2014 \u0443\u0436\u0435 \u043d\u0435\u0442.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/afa\/8ee\/7d5\/afa8ee7d5b1ad21cb697a996cc16a5cd.png\" alt=\"\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u0434\u043e \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432\u044b\u0437\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 125 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u043d\u0430 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u043c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432 22 \u0440\u0430\u0437\u0430, \u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0441 Compiled \u2014 \u0432 6 700\" title=\"\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u0434\u043e \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432\u044b\u0437\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 125 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u043d\u0430 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u043c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432 22 \u0440\u0430\u0437\u0430, \u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0441 Compiled \u2014 \u0432 6 700\" width=\"1320\" height=\"675\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/afa\/8ee\/7d5\/afa8ee7d5b1ad21cb697a996cc16a5cd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/afa\/8ee\/7d5\/afa8ee7d5b1ad21cb697a996cc16a5cd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u0434\u043e \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432\u044b\u0437\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 125 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u043d\u0430 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u043c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432 22 \u0440\u0430\u0437\u0430, \u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0441 Compiled \u2014 \u0432 6 700<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0435\u043b\u0451\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0438 \u2014 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c. \u0422\u0435 \u0436\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u043d\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438 \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u043e\u043b\u0435: 29\u201335 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0438 \u0447\u0438\u0441\u043b\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442. \u0417\u043d\u0430\u0447\u0438\u0442 \u0434\u0435\u043b\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043a\u044d\u0448\u0435.<\/p>\n<p>\u0413\u0440\u0443\u043f\u043f\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0435 \u043d\u0430\u0434\u043e: \u0442\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u0438\u0437 N. \u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u044b \u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0442 \u0432\u043e\u0441\u044c\u043c\u0438 \u0438 \u043f\u0440\u0430\u0432\u0435\u0435.<\/p>\n<p>\u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \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>\u041c\u0430\u0448\u0438\u043d\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>IsMatch, 15<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>IsMatch, 16<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>IsMatch + Compiled, 15<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>IsMatch + Compiled, 16<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21161   Ryzen<\/p>\n<\/td>\n<td>\n<p align=\"left\">67   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   490 \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">68   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">456   566 \u043d\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21162   i9<\/p>\n<\/td>\n<td>\n<p align=\"left\">76   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   416 \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">81   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">471   368 \u043d\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21163   Xeon Silver<\/p>\n<\/td>\n<td>\n<p align=\"left\">118   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">2   563 \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">119   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">654   996 \u043d\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u21164   Xeon W<\/p>\n<\/td>\n<td>\n<p align=\"left\">100   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">2   192 \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">105   \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">600   756 \u043d\u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043a \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438, .NET 10: \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432 19\u201322 \u0440\u0430\u0437\u0430, \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0441 Compiled \u2014 \u0432 5 483\u20136 723 \u0440\u0430\u0437\u0430<\/em><\/p>\n<p>\u0421 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0432\u0441\u0451 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f: \u043f\u0440\u043e\u043c\u0430\u0445 \u043a\u044d\u0448\u0430 \u0434\u0430\u0451\u0442 1 490 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0438 3 528 \u0431\u0430\u0439\u0442, \u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 1 402 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 2 736 \u0431\u0430\u0439\u0442. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u043c\u0430\u0445\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<p>\u0410 \u0441 Compiled \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f. \u041f\u0440\u043e\u043c\u0430\u0445 \u043a\u044d\u0448\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 15 014 \u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0442\u0438\u0432 14 024 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u043e\u0436\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u0410 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 456 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u043c\u0435\u0441\u0442\u043e 9,5.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0427\u0442\u043e \u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0412\u0440\u0435\u043c\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex(pattern, Compiled)<\/p>\n<\/td>\n<td>\n<p align=\"left\">9   503 \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">14   024 \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u043c\u0430\u0445 \u043a\u044d\u0448\u0430: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">456   566 \u043d\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">15   014 \u0411<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2014 \u0432 48 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435<\/em><\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e: \u0437\u0430\u043c\u0435\u0440\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439. \u041f\u0430\u0442\u0442\u0435\u0440\u043d \u0442\u043e\u0442 \u0436\u0435, \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0427\u0442\u043e \u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21161 Ryzen, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21162 i9, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21163 Xeon Silver, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21164 Xeon W, \u043d\u0441<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   402<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   330<\/p>\n<\/td>\n<td>\n<p align=\"left\">2   185<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   953<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new Regex \u0438 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   773<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   695<\/p>\n<\/td>\n<td>\n<p align=\"left\">2   905<\/p>\n<\/td>\n<td>\n<p align=\"left\">2   491<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex + Compiled<\/p>\n<\/td>\n<td>\n<p align=\"left\">9   503<\/p>\n<\/td>\n<td>\n<p align=\"left\">10   055<\/p>\n<\/td>\n<td>\n<p align=\"left\">14   822<\/p>\n<\/td>\n<td>\n<p align=\"left\">13   501<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new Regex + Compiled \u0438 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   336 834<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   307 369<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   879 379<\/p>\n<\/td>\n<td>\n<p align=\"left\">1   593 919<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>.NET 10: \u0443 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 365\u2013720 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0443 Compiled \u2014 \u043e\u0442 1,3 \u0434\u043e 1,9 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b<\/em><\/p>\n<p>\u0423 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 365\u2013720 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u2014 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0423 Compiled \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442 1,3 \u0434\u043e 1,9 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 118\u2013141 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041d\u0430 \u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0435 \u0440\u0430\u0437\u0440\u044b\u0432 \u0432 117\u2013130 \u0440\u0430\u0437, \u043d\u0430 \u0442\u044f\u0436\u0451\u043b\u043e\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0435 \u2014 \u0432 217\u2013231. \u0422\u0430\u043a \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d RegexOptions.Compiled, \u0438 \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438: <a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/base-types\/regular-expression-source-generators\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 IL \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u044b DynamicMethod<\/a>, \u0430 <a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/base-types\/compilation-and-reuse-in-regular-expressions\" rel=\"noopener noreferrer nofollow\">\u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 IL \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 JIT<\/a> \u2014 \u0443\u0436\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u0422\u0435\u043c \u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Text.RegularExpressions\/src\/System\/Text\/RegularExpressions\/RegexCompiler.cs\" rel=\"noopener noreferrer nofollow\">RegexCompiler.cs<\/a> \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u0417\u0430\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0441\u0442\u043e \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439.<\/p>\n<p>\u0421\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0438:<\/p>\n<pre><code class=\"assembly\">; Disasm\/Listings_Comp_2\/disasm_net10.txt; System.Text.RegularExpressions.CompiledRegexRunner:;   Regex1_TryFindNextPossibleStartingPosition(RegexRunner, ReadOnlySpan&lt;char&gt;):bool (FullOpts)     lea      rcx, bword ptr [r8+2*rcx]    mov      edx, edi    sub      edx, esi    call     [System.Buffers.IndexOfAnyAsciiSearcher:IndexOfAnyCore[...]]    test     eax, eax    jl       SHORT G_M000_IG06 ; Total bytes of code 120<\/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\u043e\u043c\u0435\u0442\u043a\u0430 FullOpts \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e JIT \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0431\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0441\u0442\u043e\u0438\u0442 Tier0: \u0435\u0433\u043e \u043a\u043e\u0434 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043a\u0430\u043a \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u0431\u043e\u0440\u043a\u0438. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. <\/p>\n<p>\u0417\u0430\u043e\u0434\u043d\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0435\u043c \u0437\u0430\u043d\u044f\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438: \u0432 \u044d\u0442\u043e\u043c \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0437\u0430 \u043d\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 <a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Private.CoreLib\/src\/System\/SearchValues\/IndexOfAnyAsciiSearcher.cs\" rel=\"noopener noreferrer nofollow\">IndexOfAnyAsciiSearcher<\/a> \u0438\u0437 System.Buffers \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0441\u0440\u0430\u0437\u0443 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041d\u0430\u0431\u043e\u0440 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439, [A-Za-z0-9._%+-]. \u0414\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0432\u0440\u043e\u0434\u0435 [a-z] \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043f\u0440\u043e\u0449\u0435, IndexOfAnyInRange, \u2014 \u043e\u043d \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u044d\u0448 \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440, \u043d\u043e \u043f\u0440\u043e \u043f\u0440\u043e\u043c\u0430\u0445 \u0441 <code>RegexOptions.Compiled<\/code> \u0442\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442. \u0410 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0442 \u0447\u0442\u043e: \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 <code>Regex.IsMatch<\/code> \u0441 \u044d\u0442\u0438\u043c \u0444\u043b\u0430\u0433\u043e\u043c \u2014 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 IL \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<p>\u0422\u043e\u0442 \u0436\u0435 \u044d\u0444\u0444\u0435\u043a\u0442 \u0432\u0438\u0434\u0435\u043d \u0438 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. BenchmarkDotNet \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0440\u0430 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442: \u043e\u043d \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430\u0435\u0442 \u043a\u043e\u0434, \u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043c\u0435\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: <code>Stopwatch<\/code> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 <code>Main<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0442\u0430\u0440\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0430 \u043f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0434\u0451\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u043e \u0434\u0435\u0441\u044f\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ae\/3e4\/07f\/1ae3e407f9b84d7938b9fdb89f6c3760.png\" alt=\"\u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432: \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445, Compiled \u2014 \u0432 3,7\u20135,1 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043d\u0435\u0433\u043e. \u0420\u0430\u0437\u0431\u0440\u043e\u0441: \u043d\u0430 \u21161 \u0438 \u21162 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 10%, \u043d\u0430 \u21163 \u0438 \u21164 \u0434\u043e 30%\" title=\"\u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432: \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445, Compiled \u2014 \u0432 3,7\u20135,1 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043d\u0435\u0433\u043e. \u0420\u0430\u0437\u0431\u0440\u043e\u0441: \u043d\u0430 \u21161 \u0438 \u21162 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 10%, \u043d\u0430 \u21163 \u0438 \u21164 \u0434\u043e 30%\" width=\"1320\" height=\"675\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1ae\/3e4\/07f\/1ae3e407f9b84d7938b9fdb89f6c3760.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ae\/3e4\/07f\/1ae3e407f9b84d7938b9fdb89f6c3760.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432: \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445, Compiled \u2014 \u0432 3,7\u20135,1 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043d\u0435\u0433\u043e. \u0420\u0430\u0437\u0431\u0440\u043e\u0441: \u043d\u0430 \u21161 \u0438 \u21162 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 10%, \u043d\u0430 \u21163 \u0438 \u21164 \u0434\u043e 30%<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u0442\u043a\u0430\u043c\u0438, \u044d\u0442\u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0431\u0435\u0437\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b. \u0410 \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u043e\u043d\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b.<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 2. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u0438: \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0442\u0438\u0432 Compiled \u0438 \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u043c\u0430\u0445\u0430<\/h3>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u2014 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u044b\u0439 \u043a\u043e\u0434. \u0417\u0430\u043c\u0435\u0440\u044b \u0438\u0434\u0443\u0442 \u043f\u043e \u0442\u0440\u0451\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c, \u0434\u0432\u0443\u043c \u0434\u043b\u0438\u043d\u0430\u043c \u0441\u0442\u0440\u043e\u043a\u0438 (100 \u0438 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u0438 \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f, \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u0442\u043e\u044f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0421\u043f\u043e\u0441\u043e\u0431<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21161 Ryzen, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21162 i9, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21163 Xeon Silver, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21164 Xeon W, \u043d\u0441<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex<\/p>\n<\/td>\n<td>\n<p align=\"left\">8   926<\/p>\n<\/td>\n<td>\n<p align=\"left\">10   053<\/p>\n<\/td>\n<td>\n<p align=\"left\">16   194<\/p>\n<\/td>\n<td>\n<p align=\"left\">12   869<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex + Compiled<\/p>\n<\/td>\n<td>\n<p align=\"left\">246<\/p>\n<\/td>\n<td>\n<p align=\"left\">302<\/p>\n<\/td>\n<td>\n<p align=\"left\">497<\/p>\n<\/td>\n<td>\n<p align=\"left\">398<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">[GeneratedRegex]<\/p>\n<\/td>\n<td>\n<p align=\"left\">227<\/p>\n<\/td>\n<td>\n<p align=\"left\">295<\/p>\n<\/td>\n<td>\n<p align=\"left\">482<\/p>\n<\/td>\n<td>\n<p align=\"left\">389<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439   Regex.IsMatch<\/p>\n<\/td>\n<td>\n<p align=\"left\">8   916<\/p>\n<\/td>\n<td>\n<p align=\"left\">10   051<\/p>\n<\/td>\n<td>\n<p align=\"left\">14   645<\/p>\n<\/td>\n<td>\n<p align=\"left\">13   418<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex + NonBacktracking<\/p>\n<\/td>\n<td>\n<p align=\"left\">8   859<\/p>\n<\/td>\n<td>\n<p align=\"left\">10   006<\/p>\n<\/td>\n<td>\n<p align=\"left\">15   304<\/p>\n<\/td>\n<td>\n<p align=\"left\">12   890<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">string.Contains<\/p>\n<\/td>\n<td>\n<p align=\"left\">291<\/p>\n<\/td>\n<td>\n<p align=\"left\">455<\/p>\n<\/td>\n<td>\n<p align=\"left\">466<\/p>\n<\/td>\n<td>\n<p align=\"left\">593<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, .NET 10: Compiled \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u043e\u0431\u0433\u043e\u043d\u044f\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 32\u201339 \u0440\u0430\u0437<\/em><\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0442\u0440\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438 Compiled \u043d\u0435\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b. \u041f\u043e \u0432\u0441\u0435\u043c 48-\u043c\u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430, \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043a Compiled \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 0,78\u20131,15 \u043f\u0440\u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u0435 0,96. \u041a\u043e\u0434 \u0443 \u043d\u0438\u0445 \u0440\u0430\u0437\u043d\u044b\u0439, \u043d\u043e \u043e\u0431\u0430 \u0443\u0445\u043e\u0434\u044f\u0442 \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043a \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Regex.IsMatch \u0438\u0434\u0451\u0442 \u043d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c new Regex. \u041a\u044d\u0448 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043d\u043e \u0432 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0435 \u0431\u0435\u0437 RegexOptions \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u2014 \u0442\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c Compiled. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f. \u0421 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u0438 \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f: \u0442\u0430\u043c \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u044b\u043b\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0438 \u043c\u0435\u0440\u0438\u043b\u0441\u044f \u043a\u044d\u0448, \u0437\u0434\u0435\u0441\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0442\u044b\u0441\u044f\u0447 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043c\u0435\u0440\u0438\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>RegexOptions.NonBacktracking \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 \u043e\u0442\u0441\u0442\u0430\u0451\u0442 \u043e\u0442 Compiled \u0432 31\u201336 \u0440\u0430\u0437. \u042d\u0442\u043e \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435: \u043d\u0430 \u0434\u0432\u0443\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0441 Compiled \u043d\u0435\u0442. \u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e, \u0433\u0434\u0435 \u043e\u043d \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0432\u043f\u0435\u0440\u0451\u0434.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0431\u0435\u0440\u0451\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0433 \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u0430\u0434\u0440\u0435\u0441;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u0442\u043e\u044f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443, \u043d\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043d\u0435\u0439 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u0438 \u0441\u0442\u0440\u043e\u043a\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21161 Ryzen, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21162 i9, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21163 Xeon Silver, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21164 Xeon W, \u043d\u0441<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u0434\u0440\u0435\u0441, \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">210<\/p>\n<\/td>\n<td>\n<p align=\"left\">273<\/p>\n<\/td>\n<td>\n<p align=\"left\">440<\/p>\n<\/td>\n<td>\n<p align=\"left\">367<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u0434\u0440\u0435\u0441, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">11   060<\/p>\n<\/td>\n<td>\n<p align=\"left\">12   512<\/p>\n<\/td>\n<td>\n<p align=\"left\">23   246<\/p>\n<\/td>\n<td>\n<p align=\"left\">18   141<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u044f\u0436\u0451\u043b\u044b\u0439   \u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">185<\/p>\n<\/td>\n<td>\n<p align=\"left\">220<\/p>\n<\/td>\n<td>\n<p align=\"left\">223<\/p>\n<\/td>\n<td>\n<p align=\"left\">329<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u044f\u0436\u0451\u043b\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">120   316<\/p>\n<\/td>\n<td>\n<p align=\"left\">135   745<\/p>\n<\/td>\n<td>\n<p align=\"left\">244   016<\/p>\n<\/td>\n<td>\n<p align=\"left\">189   733<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>RegexOptions.Compiled, 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442, .NET 10: \u0443 \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 46\u201353 \u0440\u0430\u0437\u0430, \u0443 \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u2014 \u0432 577\u20131 094 \u0440\u0430\u0437\u0430<\/em><\/p>\n<p>\u0421\u0442\u0440\u043e\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0434\u043b\u0438\u043d\u044b, \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439, \u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u0442\u0440\u0451\u0445 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435\u0442, \u043f\u043e\u0438\u0441\u043a \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 <code>IndexOfAnyAsciiSearcher<\/code> \u2014 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0438\u0437 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u2014 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0435\u0441\u0442\u044c, \u0434\u0432\u0438\u0436\u043e\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 <strong>\u00ab\u043f\u0440\u043e\u043c\u0430\u0445 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b\u00bb<\/strong> \u0432\u0435\u0440\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f. \u0412 \u043a\u044d\u0448\u0435, \u0433\u0434\u0435 \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439.<\/p>\n<p>\u041d\u0430 \u0434\u043b\u0438\u043d\u0430\u0445 \u0434\u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0431\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u043c\u0438, \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2d8\/250\/64b\/2d825064ba7ec1c13ac6c42d7327c866.png\" alt=\"\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0431\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435, \u043d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u0432 45\u201354 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435\" title=\"\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0431\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435, \u043d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u0432 45\u201354 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435\" width=\"1320\" height=\"675\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2d8\/250\/64b\/2d825064ba7ec1c13ac6c42d7327c866.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2d8\/250\/64b\/2d825064ba7ec1c13ac6c42d7327c866.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043e\u0431\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435, \u043d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u0432 45\u201354 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0412\u0441\u0451 \u0432\u044b\u0448\u0435 \u0437\u0430\u043c\u0435\u0440\u044f\u043b\u043e\u0441\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043c IsMatch. \u041e\u043d \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0438 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0433\u0440\u0443\u043f\u043f, \u043d\u0438 \u0441\u0430\u043c\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0443 \u043d\u0435\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041c\u0435\u0442\u043e\u0434<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21161 Ryzen, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21162 i9, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21163 Xeon Silver, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21164 Xeon W, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">IsMatch<\/p>\n<\/td>\n<td>\n<p align=\"left\">43<\/p>\n<\/td>\n<td>\n<p align=\"left\">51<\/p>\n<\/td>\n<td>\n<p align=\"left\">84<\/p>\n<\/td>\n<td>\n<p align=\"left\">63<\/p>\n<\/td>\n<td>\n<p align=\"left\">0   \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Match<\/p>\n<\/td>\n<td>\n<p align=\"left\">58<\/p>\n<\/td>\n<td>\n<p align=\"left\">75<\/p>\n<\/td>\n<td>\n<p align=\"left\">119<\/p>\n<\/td>\n<td>\n<p align=\"left\">102<\/p>\n<\/td>\n<td>\n<p align=\"left\">208   \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">EnumerateMatches<\/p>\n<\/td>\n<td>\n<p align=\"left\">3   452<\/p>\n<\/td>\n<td>\n<p align=\"left\">5   048<\/p>\n<\/td>\n<td>\n<p align=\"left\">8   668<\/p>\n<\/td>\n<td>\n<p align=\"left\">6   041<\/p>\n<\/td>\n<td>\n<p align=\"left\">0   \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">EnumerateMatches,   \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0447\u0451\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">3   697<\/p>\n<\/td>\n<td>\n<p align=\"left\">5   000<\/p>\n<\/td>\n<td>\n<p align=\"left\">7   903<\/p>\n<\/td>\n<td>\n<p align=\"left\">6   018<\/p>\n<\/td>\n<td>\n<p align=\"left\">0   \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Count(string)<\/p>\n<\/td>\n<td>\n<p align=\"left\">4   864<\/p>\n<\/td>\n<td>\n<p align=\"left\">4   367<\/p>\n<\/td>\n<td>\n<p align=\"left\">7   226<\/p>\n<\/td>\n<td>\n<p align=\"left\">5   952<\/p>\n<\/td>\n<td>\n<p align=\"left\">0   \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Count(ReadOnlySpan&lt;char&gt;)<\/p>\n<\/td>\n<td>\n<p align=\"left\">3   608<\/p>\n<\/td>\n<td>\n<p align=\"left\">4   071<\/p>\n<\/td>\n<td>\n<p align=\"left\">7   021<\/p>\n<\/td>\n<td>\n<p align=\"left\">4   993<\/p>\n<\/td>\n<td>\n<p align=\"left\">0   \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Replace<\/p>\n<\/td>\n<td>\n<p align=\"left\">4   256<\/p>\n<\/td>\n<td>\n<p align=\"left\">5   071<\/p>\n<\/td>\n<td>\n<p align=\"left\">8   451<\/p>\n<\/td>\n<td>\n<p align=\"left\">6   195<\/p>\n<\/td>\n<td>\n<p align=\"left\">824   \u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Matches<\/p>\n<\/td>\n<td>\n<p align=\"left\">7   456<\/p>\n<\/td>\n<td>\n<p align=\"left\">8   233<\/p>\n<\/td>\n<td>\n<p align=\"left\">13   843<\/p>\n<\/td>\n<td>\n<p align=\"left\">11   914<\/p>\n<\/td>\n<td>\n<p align=\"left\">23   080 \u0411<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u0421\u0442\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, .NET 10: IsMatch \u0438 Match \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u043c\u044b \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438<\/em><\/p>\n<p>IsMatch \u0438 Match \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u044f\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0448\u0435\u0441\u0442\u044c \u043d\u0438\u0436\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u0430\u043c \u2014 Matches: \u043e\u043d \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c, 23 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u0441\u043e\u0442\u043d\u044e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 1,6\u20132,2 \u0440\u0430\u0437\u0430 \u0434\u043e\u043b\u044c\u0448\u0435 EnumerateMatches. <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043e\u0431\u0445\u043e\u0434\u044f\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u0438 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u2014 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 Count: \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043e\u043d\u0430 \u043d\u0430 3\u201335% \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0441\u043e span, \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445. \u0410 \u043e\u0431\u0445\u043e\u0434 \u0441 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043a \u0434\u043b\u0438\u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0418 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435: EnumerateMatches \u043e\u0442\u0434\u0430\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439. \u0413\u0440\u0443\u043f\u043f \u0438 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a \u043e\u0442 \u043d\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u2014 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0431\u0440\u0430\u0442\u044c Matches \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0433\u043e \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f\u043c\u0438.<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 3. \u0427\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440<\/h3>\n<p>\u0423 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u0443 Compiled: \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0430 \u0434\u0438\u0441\u043a \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442, \u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"cs\">&lt;!-- RegexProof.csproj --&gt; &lt;EmitCompilerGeneratedFiles&gt;true&lt;\/EmitCompilerGeneratedFiles&gt;&lt;CompilerGeneratedFilesOutputPath&gt;Generated&lt;\/CompilerGeneratedFilesOutputPath&gt;<\/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\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 Generated \u043b\u0435\u0436\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 C# \u043a\u043e\u0434. \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code class=\"cs\">\/\/ Generated\/...\/RegexGenerator.g.cs, \u043f\u0430\u0442\u0442\u0435\u0440\u043d \"orders\/export\" protected override void Scan(ReadOnlySpan&lt;char&gt; inputSpan){    if (TryFindNextPossibleStartingPosition(inputSpan))    {        \/\/ The search in TryFindNextPossibleStartingPosition performed the entire match.        int start = base.runtextpos;        int end = base.runtextpos = start + 13;        base.Capture(0, start, end);    }}<\/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\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442: \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u044e \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443, \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0431 \u044d\u0442\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0434\u043b\u044f \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430:<\/p>\n<pre><code class=\"cs\">\/\/ Generated\/...\/RegexGenerator.g.cs, \u043f\u0430\u0442\u0442\u0435\u0440\u043d (?:[a-z]+\\d+){2,}(?:foo|bar|baz)+end private bool TryFindNextPossibleStartingPosition(ReadOnlySpan&lt;char&gt; inputSpan){    int pos = base.runtextpos;     \/\/ Any possible match is at least 10 characters.    if (pos &lt;= inputSpan.Length - 10)    {        \/\/ The pattern begins with a character in the set [a-z].        int i = inputSpan.Slice(pos).IndexOfAnyInRange('a', 'z');        if (i &gt;= 0)        {            base.runtextpos = pos + i;            return true;        }    }     base.runtextpos = inputSpan.Length;    return 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>\u0412\u043e\u0442 \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u043c 185\u2013329 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043c \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u0438 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0437 \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0420\u0430\u0437\u0431\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0443\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f: \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 <code>IndexOfAnyInRange<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u043c \u0431\u0443\u043a\u0432\u0430\u043c, \u0438 \u044d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c true \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0430\u043c \u0440\u0430\u0437\u0431\u043e\u0440 \u2014 \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u044b\u0441\u044f\u0447\u0443 \u0440\u0430\u0437.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u044b. \u0415\u0441\u0442\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0447\u0435\u043c \u043e\u043f\u0430\u0441\u043d\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f: \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u043e\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0441\u0442\u0440\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u043c\u0443 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u041a\u0430\u0436\u0434\u044b\u0439 \u043b\u0438\u0448\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0431\u043e\u0440\u0430, \u0438 \u043d\u0430 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u0438\u043d\u0443\u0442\u044b.<\/p>\n<pre><code class=\"cs\">\/\/ RegexProof, Subjects.cs public const string NestedPattern = \"^(?:a+)+$\"; \/\/ \u0441\u0442\u0440\u043e\u043a\u0430: Length \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \"a\" \u0438 \u043e\u0434\u0438\u043d \"X\" \u0432 \u043a\u043e\u043d\u0446\u0435 - \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442<\/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>\u0417\u0430\u043c\u0435\u0440 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043e\u0442 16 \u0434\u043e 22 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c62\/9fb\/f5a\/c629fbf5aee4cf547439921b07982471.png\" alt=\"\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u044f \u043d\u0435\u0442 \u2014 \u043d\u0430 \u044d\u0442\u0438\u0445 \u0434\u043b\u0438\u043d\u0430\u0445 \u0432\u0440\u0435\u043c\u044f \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\" title=\"\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u044f \u043d\u0435\u0442 \u2014 \u043d\u0430 \u044d\u0442\u0438\u0445 \u0434\u043b\u0438\u043d\u0430\u0445 \u0432\u0440\u0435\u043c\u044f \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\" width=\"1320\" height=\"675\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c62\/9fb\/f5a\/c629fbf5aee4cf547439921b07982471.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c62\/9fb\/f5a\/c629fbf5aee4cf547439921b07982471.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><em>\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u044f \u043d\u0435\u0442 \u2014 \u043d\u0430 \u044d\u0442\u0438\u0445 \u0434\u043b\u0438\u043d\u0430\u0445 \u0432\u0440\u0435\u043c\u044f \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0432\u044b\u0437\u043e\u0432<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0423\u0434\u0432\u043e\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0438 \u043e\u0442\u0432\u0435\u0442 \u0441\u043d\u043e\u0432\u0430 \u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435:<\/p>\n<pre><code class=\"cs\">\/\/ Generated\/...\/RegexGenerator.g.cs, \u043f\u0430\u0442\u0442\u0435\u0440\u043d ^(?:a+)+$ \/\/\/ Explanation:\/\/\/   \u25cb Match if at the beginning of the string.\/\/\/   \u25cb Match 'a' atomically at least once.\/\/\/   \u25cb Match if at the end of the string or if before an ending newline. \/\/ \u0438 \u0441\u0430\u043c \u0440\u0430\u0437\u0431\u043e\u0440 - \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:int iteration = slice.IndexOfAnyExcept('a');<\/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\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0432\u0442\u043e\u0440 \u0441\u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0439. \u0410\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0432\u0438\u0436\u043e\u043a \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0430\u0434 \u0443\u0436\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0430 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u0438\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430\u0445.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u00aba\u00bb: \u0432\u0440\u0435\u043c\u044f \u0443 \u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0440\u0430\u0441\u0442\u0451\u0442 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u043e, \u0430 \u043d\u0435 \u0432\u0434\u0432\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b. \u0421\u0432\u0435\u0440\u043d\u0443\u043b \u043f\u043e\u0432\u0442\u043e\u0440 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u0430 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430, \u043e\u0431\u0449\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u2014 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0432\u044b\u0448\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435. \u041f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0432 .NET 7, Stephen Toub \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435. <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/regular-expression-improvements-in-dotnet-7\/\" rel=\"noopener noreferrer nofollow\">Regular Expression Improvements in .NET 7<\/a><\/p>\n<p>\u041d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u044b \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043b\u0438\u0441\u044c. \u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0442\u044f\u0436\u0451\u043b\u043e\u043c\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0443 \u0438 \u0441\u0442\u0440\u043e\u043a\u0435, \u0433\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443, \u2014 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 <code>RegexOptions.NonBacktracking<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0421\u043f\u043e\u0441\u043e\u0431<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21161 Ryzen, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21162 i9, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21163 Xeon Silver, \u043d\u0441<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u21164 Xeon W, \u043d\u0441<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex<\/p>\n<\/td>\n<td>\n<p align=\"left\">595   096<\/p>\n<\/td>\n<td>\n<p align=\"left\">580   309<\/p>\n<\/td>\n<td>\n<p align=\"left\">910   933<\/p>\n<\/td>\n<td>\n<p align=\"left\">958   761<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex + Compiled<\/p>\n<\/td>\n<td>\n<p align=\"left\">120   316<\/p>\n<\/td>\n<td>\n<p align=\"left\">135   745<\/p>\n<\/td>\n<td>\n<p align=\"left\">244   016<\/p>\n<\/td>\n<td>\n<p align=\"left\">189   733<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">[GeneratedRegex]<\/p>\n<\/td>\n<td>\n<p align=\"left\">101   020<\/p>\n<\/td>\n<td>\n<p align=\"left\">123   831<\/p>\n<\/td>\n<td>\n<p align=\"left\">223   948<\/p>\n<\/td>\n<td>\n<p align=\"left\">168   051<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">new   Regex + NonBacktracking<\/p>\n<\/td>\n<td>\n<p align=\"left\">33   123<\/p>\n<\/td>\n<td>\n<p align=\"left\">35   762<\/p>\n<\/td>\n<td>\n<p align=\"left\">56   672<\/p>\n<\/td>\n<td>\n<p align=\"left\">48   395<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><em>\u0422\u044f\u0436\u0451\u043b\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d, 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u043d\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u0442\u043e\u044f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443, .NET 10: RegexOptions.NonBacktracking \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 3,6\u20134,3 \u0440\u0430\u0437\u0430<\/em><\/p>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043c\u0435\u0441\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0442\u0440\u0430\u0442\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0442\u044b\u0441\u044f\u0447 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, Compiled \u2014 \u0432 3,7\u20135,1 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435, \u0430 <code>RegexOptions.NonBacktracking<\/code> \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 Compiled \u0432 3,6\u20134,3 \u0440\u0430\u0437\u0430, \u0445\u043e\u0442\u044f \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u043b \u0432 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0441 \u043b\u0438\u0448\u043d\u0438\u043c. \u041e\u043d \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u2014 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u044d\u0442\u043e \u0438 \u0440\u0435\u0448\u0430\u0435\u0442.<\/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>\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u0441 [GeneratedRegex] \u0432 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 1\u20132 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u0438: \u043a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>new Regex \u0441 RegexOptions.Compiled \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 9,5\u201314,8 \u043c\u043a\u0441 \u0438 14 \u041a\u0411, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430: \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0451 1,3\u20131,9 \u043c\u0441. \u041f\u043e \u0442\u0440\u0451\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c \u0438 \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u043c\u0430\u0448\u0438\u043d\u0430\u043c \u044d\u0442\u043e \u0432 117\u2013231 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Regex.IsMatch \u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u044d\u0448 \u043d\u0430 15 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432. \u0428\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0432 19\u201322 \u0440\u0430\u0437\u0430, \u0430 \u0441 RegexOptions.Compiled \u2014 \u0432 5 483\u20136 723 \u0440\u0430\u0437\u0430 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u043c \u043a\u043e\u0434\u0435 [GeneratedRegex] \u0438 RegexOptions.Compiled \u043d\u0435\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b: 0,78\u20131,15 \u043f\u0440\u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u0435 0,96 \u043f\u043e 48-\u043c\u0438 \u0437\u0430\u043c\u0435\u0440\u0430\u043c;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430: \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 4,6\u20136,7 \u043c\u0441, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 9,0\u201315,0 \u043c\u0441, Compiled 18,0\u201329,3 \u043c\u0441;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0432\u0430 \u043f\u0440\u043e\u043c\u0430\u0445\u0430 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u044b: \u0435\u0441\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 185\u2013440 \u043d\u0441 \u043d\u0430 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u2014 \u0432 46\u201353 \u0440\u0430\u0437\u0430 \u0434\u043e\u043b\u044c\u0448\u0435 \u0443 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0432 577\u20131 094 \u0440\u0430\u0437\u0430 \u0443 \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430;<\/p>\n<\/li>\n<li>\n<p>RegexOptions.NonBacktracking \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430: \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043e\u043d \u043e\u0442\u0441\u0442\u0430\u0451\u0442 \u043e\u0442 Compiled \u0432 31\u201336 \u0440\u0430\u0437, \u043d\u0430 \u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0435 \u0432 1,1\u20131,5 \u0440\u0430\u0437\u0430, \u0430 \u043d\u0430 \u0442\u044f\u0436\u0451\u043b\u043e\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043d\u0435\u0442. \u0417\u0430\u0442\u043e \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0435, \u0433\u0434\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043e\u0431\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u0432 3,6\u20134,3 \u0440\u0430\u0437\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0432\u0442\u043e\u0440 ^(?:a+)+$ \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b: \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0439, \u0438 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u0420\u043e\u0441\u0442\u0430 \u0432\u0434\u0432\u043e\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0435\u0442, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434;<\/p>\n<\/li>\n<li>\n<p>Matches \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c: 23 080 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0441\u043e\u0442\u043d\u044e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439, \u0438 \u043e\u043d \u0432 1,6\u20132,2 \u0440\u0430\u0437\u0430 \u0434\u043e\u043b\u044c\u0448\u0435 EnumerateMatches. Count, Replace \u0438 EnumerateMatches \u043e\u0431\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0431\u0435\u0437 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439.<\/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>\u0435\u0441\u043b\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 [GeneratedRegex]. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043e\u043d \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u0447\u0442\u043e Compiled, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u0442\u0434\u0430\u0451\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 NativeAOT, \u0433\u0434\u0435 \u0441\u0431\u043e\u0440\u043a\u0430 IL \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430: \u0432 <a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Text.RegularExpressions\/src\/System\/Text\/RegularExpressions\/Regex.cs\" rel=\"noopener noreferrer nofollow\">Regex.cs<\/a> \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 RuntimeFeature.IsDynamicCodeCompiled, \u0438\u043d\u0430\u0447\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 <a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/base-types\/regular-expression-source-generators\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0432\u0435\u0442\u0443\u0435\u0442 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a>. \u041f\u043b\u044e\u0441 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 new Regex \u0441 RegexOptions.Compiled \u2014 \u043d\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u0435, \u0438\u043d\u0430\u0447\u0435 \u0437\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 <code>Regex.IsMatch<\/code> \u0443\u0434\u043e\u0431\u0435\u043d, \u043f\u043e\u043a\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u044d\u0448\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043e\u043d \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>Regex.CacheSize<\/code>. \u0414\u0430\u043b\u044c\u0448\u0435 \u043a\u044d\u0448 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0442\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 Regex \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u043f\u043e\u043b\u0435;<\/p>\n<\/li>\n<li>\n<p>RegexOptions.Compiled \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c Regex.IsMatch \u2014 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c: \u043f\u0440\u0438 \u043f\u0440\u043e\u043c\u0430\u0445\u0435 \u043a\u044d\u0448\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 IL \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0437\u0430\u043d\u043e\u0432\u043e, \u0430 \u044d\u0442\u043e \u0441\u043e\u0442\u043d\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0434\u0430\u0451\u0442 \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430: \u0443 string.Contains \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435, \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 Contains \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u043f\u043e\u043c\u0435\u0440\u0438\u0442\u044c <code>RegexOptions.NonBacktracking<\/code>: \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043d \u043e\u0442\u0441\u0442\u0430\u0451\u0442, \u0430 \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445. \u0412\u0435\u0437\u0434\u0435 \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u2014 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043d\u0430\u0437\u0430\u0434 \u043e\u043d \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u0430 \u0441\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b Match \u043d\u0435 \u043d\u0443\u0436\u043d\u044b, \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0431\u0435\u0437 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u2014 EnumerateMatches, Count \u0438\u043b\u0438 Replace. Matches \u0441\u0442\u043e\u0438\u0442 \u0431\u0440\u0430\u0442\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u044b \u0441\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b: \u043e\u043d \u0432\u0434\u0432\u043e\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 23 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u0441\u043e\u0442\u043d\u044e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0432\u0430\u0436\u043d\u0435\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0430 \u0442\u0430\u043c RegexOptions.Compiled \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0432 3,7\u20135,1 \u0440\u0430\u0437\u0430.<\/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\/RegexProof\" rel=\"noopener noreferrer nofollow\">RegexProof<\/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, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \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<h3>\u0421\u0441\u044b\u043b\u043a\u0438<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/base-types\/regular-expression-source-generators\" rel=\"noopener noreferrer nofollow\">\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u2014 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/regular-expression-improvements-in-dotnet-7\/\" rel=\"noopener noreferrer nofollow\">Regular Expression Improvements in .NET 7 \u2014 \u0440\u0430\u0437\u0431\u043e\u0440 \u0434\u0432\u0438\u0436\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.text.regularexpressions.regex.cachesize\" rel=\"noopener noreferrer nofollow\">Regex.CacheSize \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u044d\u0448\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/api\/system.text.regularexpressions.regexoptions\" rel=\"noopener noreferrer nofollow\">RegexOptions.NonBacktracking<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Text.RegularExpressions\/src\/System\/Text\/RegularExpressions\/Regex.Cache.cs\" rel=\"noopener noreferrer nofollow\">Regex.Cache.cs \u2014 \u043a\u044d\u0448 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 dotnet\/runtime<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Text.RegularExpressions\/src\/System\/Text\/RegularExpressions\/RegexCompiler.cs\" rel=\"noopener noreferrer nofollow\">RegexCompiler.cs \u2014 \u0441\u0431\u043e\u0440\u043a\u0430 IL \u0434\u043b\u044f RegexOptions.Compiled<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtime\/blob\/main\/src\/libraries\/System.Private.CoreLib\/src\/System\/SearchValues\/IndexOfAnyAsciiSearcher.cs\" rel=\"noopener noreferrer nofollow\">IndexOfAnyAsciiSearcher.cs \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/learn.microsoft.com\/dotnet\/standard\/base-types\/compilation-and-reuse-in-regular-expressions\" rel=\"noopener noreferrer nofollow\">Compilation and Reuse in Regular Expressions \u2014 \u043f\u0440\u043e IL \u0438 JIT<\/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\/1063204\/\">https:\/\/habr.com\/ru\/articles\/1063204\/<\/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\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0432 \u043a\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 .NET \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u2014 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0438\u043b\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435, \u2014 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0432\u044b\u0432\u043e\u0434\u044b.\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0432 .NET \u043c\u043e\u0436\u043d\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043d\u043e \u0441\u043e\u0432\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d: \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 RegexOptions.Compiled \u0438\u043b\u0438 \u0432\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u0417\u0430\u043c\u0435\u0440\u044b \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442. \u0410 \u0432\u043e\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0451 \u043c\u0435\u0440\u044f\u044e\u0442: \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 10 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u2014 \u0435\u0449\u0451 1307.\u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0448\u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432:new Regex \u2014 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c;RegexOptions.Compiled \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0434 \u043f\u0430\u0442\u0442\u0435\u0440\u043d IL-\u043c\u0435\u0442\u043e\u0434 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f;[GeneratedRegex] \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0438\u0448\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 C# \u043a\u043e\u0434 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430;\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Regex.IsMatch \u2014 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432;RegexOptions.NonBacktracking \u2014 \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435;string.Contains \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u0431\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f.\u0411\u0443\u0434\u0435\u0442 3 \u0438\u0441\u0442\u043e\u0440\u0438\u0438:\u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0437\u0430\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f;\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0442\u0438\u0432 Compiled \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u0434\u0432\u0430 \u043f\u0440\u043e\u043c\u0430\u0445\u0430 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u044b\u0441\u044f\u0447\u0443 \u0440\u0430\u0437;\u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u2014 \u0438 \u0447\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u043e \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u2014 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 RegexProof. \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, \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u044b .NET 8, 9 \u0438 10. \u041f\u0430\u0442\u0447-\u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0440\u0430\u0437\u043d\u044b\u0435, \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, \u0430 \u043d\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d.\u0412\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0438\u0436\u0435 \u2014 \u043f\u043e .NET 10. \u0423 Compiled \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0451\u0440\u043a\u0435 \u0438 \u0434\u0435\u0432\u044f\u0442\u043a\u0435 \u0442\u0435 \u0436\u0435 \u0447\u0438\u0441\u043b\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432. \u0423 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 RegexOptions.NonBacktracking \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043c\u0430\u0448\u0438\u043d\u044b: \u043d\u0430 \u21161 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u043d\u0435\u0442, \u0430 \u043d\u0430 \u21164 \u043e\u043d\u0438 \u043d\u0430 .NET 8 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0434\u0432\u043e\u0435. \u041f\u043e\u043b\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0440\u0451\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c \u043b\u0435\u0436\u0430\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0442\u0440\u0438:\/\/ RegexProof, Subjects.cs \/\/ \u0442\u043e\u0447\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430public const string LiteralPattern = &#171;orders\/export&#187;; \/\/ \u0440\u0430\u0437\u0431\u043e\u0440 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044bpublic const string EmailPattern = @&#187;[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}&#187;; \/\/ \u043f\u043e\u0432\u0442\u043e\u0440\u044b \u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044bpublic const string HeavyPattern = @&#187;(?:[a-z]+\\d+){2,}(?:foo|bar|baz)+end&#187;;\u0418\u0441\u0442\u043e\u0440\u0438\u044f 1. \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e\u043a\u0430\u0437\u0430\u043b 10 \u043c\u043a\u0441, \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u2014 1307\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0430\u0442\u0442\u0435\u0440\u043d \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, .NET 10.\u0421\u043f\u043e\u0441\u043e\u0431\u21161 Ryzen, \u043d\u0441\u21162 i9, \u043d\u0441\u21163 Xeon Silver, \u043d\u0441\u21164 Xeon W, \u043d\u0441\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043enew   Regex1   4021   3302   1851   9532   736 \u0411new   Regex + Compiled9   50310   05514   82213   50114   024 \u0411new   Regex + NonBacktracking53   79880   07999   201121   907198   176 \u0411[GeneratedRegex]11210   \u0411\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, .NET 10: \u0432 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0427\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0442\u0430\u043a:new Regex \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0438 \u0441\u0442\u0440\u043e\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u2014 \u043e\u0442 \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u0434\u043e \u0434\u0432\u0443\u0445 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0438 \u043f\u0430\u0440\u0430 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442;\u0441 RegexOptions.Compiled \u043a \u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u0430 IL-\u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 14 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442;RegexOptions.NonBacktracking \u0441\u0442\u0440\u043e\u0438\u0442 \u0438\u0437 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442, \u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u0443\u0445\u043e\u0434\u0438\u0442 198 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442 \u0438 \u043e\u0442 54 \u0434\u043e 122 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434;[GeneratedRegex] \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e: \u043a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u043e\u0434 \u043e\u0442\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f.\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0438\u0434\u043d\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u2014 \u043e\u043d \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 Generated:\/\/ Generated\/System.Text.RegularExpressions.Generator\/&#8230;\/RegexGenerator.g.cs public static partial global::System.Text.RegularExpressions.Regex EmailGenerated()    =&gt; global::System.Text.RegularExpressions.Generated.EmailGenerated_1.Instance;\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u043a\u044d\u0448. \u0423 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Regex \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u043a\u044d\u0448 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432, \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e Regex.CacheSize. \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u044f\u043c\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c: \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u044d\u0448 \u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432. \u041f\u043e\u043a\u0430 \u0438\u0445 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0431\u0435\u0440\u0451\u0442 \u0438\u0437 \u043a\u044d\u0448\u0430 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. \u0428\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0439 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439.\u0417\u0430\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443: 1, 8 \u0438 15 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u044d\u0448, 16 \u0438 32 \u2014 \u0443\u0436\u0435 \u043d\u0435\u0442.\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u0434\u043e \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432\u044b\u0437\u043e\u0432 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 125 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u043d\u0430 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u043c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432 22 \u0440\u0430\u0437\u0430, \u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0441 Compiled \u2014 \u0432 6 700\u0417\u0435\u043b\u0451\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0438 \u2014 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c. \u0422\u0435 \u0436\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u043d\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438 \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u043e\u043b\u0435: 29\u201335 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0438 \u0447\u0438\u0441\u043b\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442. \u0417\u043d\u0430\u0447\u0438\u0442 \u0434\u0435\u043b\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043a\u044d\u0448\u0435.\u0413\u0440\u0443\u043f\u043f\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0435 \u043d\u0430\u0434\u043e: \u0442\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u0438\u0437 N. \u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u044b \u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0442 \u0432\u043e\u0441\u044c\u043c\u0438 \u0438 \u043f\u0440\u0430\u0432\u0435\u0435.\u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.\u041c\u0430\u0448\u0438\u043d\u0430IsMatch, 15IsMatch, 16IsMatch + Compiled, 15IsMatch + Compiled, 16\u21161   Ryzen67   \u043d\u04411   490 \u043d\u044168   \u043d\u0441456   566 \u043d\u0441\u21162   i976   \u043d\u04411   416 \u043d\u044181   \u043d\u0441471   368 \u043d\u0441\u21163   Xeon Silver118   \u043d\u04412   563 \u043d\u0441119   \u043d\u0441654   996 \u043d\u0441\u21164   Xeon W100   \u043d\u04412   192 \u043d\u0441105   \u043d\u0441600   756 \u043d\u0441\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043a \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438, .NET 10: \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432 19\u201322 \u0440\u0430\u0437\u0430, \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u0441 Compiled \u2014 \u0432 5 483\u20136 723 \u0440\u0430\u0437\u0430\u0421 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0432\u0441\u0451 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f: \u043f\u0440\u043e\u043c\u0430\u0445 \u043a\u044d\u0448\u0430 \u0434\u0430\u0451\u0442 1 490 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0438 3 528 \u0431\u0430\u0439\u0442, \u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 1 402 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 2 736 \u0431\u0430\u0439\u0442. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u043c\u0430\u0445\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442.\u0410 \u0441 Compiled \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f. \u041f\u0440\u043e\u043c\u0430\u0445 \u043a\u044d\u0448\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 15 014 \u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0442\u0438\u0432 14 024 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u043e\u0436\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u0410 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 456 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u043c\u0435\u0441\u0442\u043e 9,5.\u0427\u0442\u043e \u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f\u0412\u0440\u0435\u043c\u044f\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043enew   Regex(pattern, Compiled)9   503 \u043d\u044114   024 \u0411\u041f\u0440\u043e\u043c\u0430\u0445 \u043a\u044d\u0448\u0430: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430456   566 \u043d\u044115   014 \u0411\u041c\u0430\u0448\u0438\u043d\u0430 \u21161, .NET 10: \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2014 \u0432 48 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435\u0417\u043d\u0430\u0447\u0438\u0442 \u0432\u0440\u0435\u043c\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e: \u0437\u0430\u043c\u0435\u0440\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439. \u041f\u0430\u0442\u0442\u0435\u0440\u043d \u0442\u043e\u0442 \u0436\u0435, \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b.\u0427\u0442\u043e \u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f\u21161 Ryzen, \u043d\u0441\u21162 i9, \u043d\u0441\u21163 Xeon Silver, \u043d\u0441\u21164 Xeon W, \u043d\u0441new   Regex1   4021   3302   1851   953new Regex \u0438 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u04301   7731   6952   9052   491new   Regex + Compiled9   50310   05514   82213   501new Regex + Compiled \u0438 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u04301   336 8341   307 3691   879 3791   593 919.NET 10: \u0443 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 365\u2013720 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0443 Compiled \u2014 \u043e\u0442 1,3 \u0434\u043e 1,9 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b\u0423 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 365\u2013720 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u2014 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0423 Compiled \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442 1,3 \u0434\u043e 1,9 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 118\u2013141 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041d\u0430 \u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0435 \u0440\u0430\u0437\u0440\u044b\u0432 \u0432 117\u2013130 \u0440\u0430\u0437, \u043d\u0430 \u0442\u044f\u0436\u0451\u043b\u043e\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0435 \u2014 \u0432 217\u2013231. \u0422\u0430\u043a \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d RegexOptions.Compiled, \u0438 \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438: \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 IL \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u044b DynamicMethod, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 IL \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 JIT \u2014 \u0443\u0436\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u0422\u0435\u043c \u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f RegexCompiler.cs \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u0417\u0430\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0441\u0442\u043e \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439.\u0421\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0438:; Disasm\/Listings_Comp_2\/disasm_net10.txt; System.Text.RegularExpressions.CompiledRegexRunner:;   Regex1_TryFindNextPossibleStartingPosition(RegexRunner, ReadOnlySpan&lt;char&gt;):bool (FullOpts)     lea      rcx, bword ptr [r8+2*rcx]    mov      edx, edi    sub      edx, esi    call     [System.Buffers.IndexOfAnyAsciiSearcher:IndexOfAnyCore[&#8230;]]    test     eax, eax    jl       SHORT G_M000_IG06 ; Total bytes of code 120\u041f\u043e\u043c\u0435\u0442\u043a\u0430 FullOpts \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e JIT \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0431\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0441\u0442\u043e\u0438\u0442 Tier0: \u0435\u0433\u043e \u043a\u043e\u0434 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043a\u0430\u043a \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u0431\u043e\u0440\u043a\u0438. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u0417\u0430\u043e\u0434\u043d\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0435\u043c \u0437\u0430\u043d\u044f\u0442 \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438: \u0432 \u044d\u0442\u043e\u043c \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u0437\u0430 \u043d\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 IndexOfAnyAsciiSearcher \u0438\u0437 System.Buffers \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0441\u0440\u0430\u0437\u0443 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041d\u0430\u0431\u043e\u0440 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439, [A-Za-z0-9._%+-]. \u0414\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0432\u0440\u043e\u0434\u0435 [a-z] \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043f\u0440\u043e\u0449\u0435, IndexOfAnyInRange, \u2014 \u043e\u043d \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u044d\u0448 \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440, \u043d\u043e \u043f\u0440\u043e \u043f\u0440\u043e\u043c\u0430\u0445 \u0441 RegexOptions.Compiled \u0442\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442. \u0410 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0442 \u0447\u0442\u043e: \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Regex.IsMatch \u0441 \u044d\u0442\u0438\u043c \u0444\u043b\u0430\u0433\u043e\u043c \u2014 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 IL \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0437\u0430\u043d\u043e\u0432\u043e.\u0422\u043e\u0442 \u0436\u0435 \u044d\u0444\u0444\u0435\u043a\u0442 \u0432\u0438\u0434\u0435\u043d \u0438 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. BenchmarkDotNet \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0440\u0430 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442: \u043e\u043d \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430\u0435\u0442 \u043a\u043e\u0434, \u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043c\u0435\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: Stopwatch \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 Main, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0442\u0430\u0440\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0430 \u043f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0434\u0451\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u043e \u0434\u0435\u0441\u044f\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.\u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432: \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445, Compiled \u2014 \u0432 3,7\u20135,1 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u043d\u0435\u0433\u043e. \u0420\u0430\u0437\u0431\u0440\u043e\u0441: \u043d\u0430 \u21161 \u0438 \u21162 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 10%, \u043d\u0430 \u21163 \u0438 \u21164 \u0434\u043e 30%\u041d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u0442\u043a\u0430\u043c\u0438, \u044d\u0442\u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0431\u0435\u0437\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b. \u0410 \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u043e\u043d\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b.\u0418\u0441\u0442\u043e\u0440\u0438\u044f 2. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u0438: \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0442\u0438\u0432 Compiled \u0438 \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u043c\u0430\u0445\u0430\u0414\u0430\u043b\u044c\u0448\u0435 \u2014 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u044b\u0439 \u043a\u043e\u0434. \u0417\u0430\u043c\u0435\u0440\u044b \u0438\u0434\u0443\u0442 \u043f\u043e \u0442\u0440\u0451\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c, \u0434\u0432\u0443\u043c \u0434\u043b\u0438\u043d\u0430\u043c \u0441\u0442\u0440\u043e\u043a\u0438 (100 \u0438 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432) \u0438 \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438:\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438;\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435;\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f, \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442;\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u0442\u043e\u044f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443.\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 10 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.\u0421\u043f\u043e\u0441\u043e\u0431\u21161 Ryzen, \u043d\u0441\u21162 i9, \u043d\u0441\u21163 Xeon&#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-488625","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488625","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=488625"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488625\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}