{"id":490149,"date":"2026-08-07T11:33:55","date_gmt":"2026-08-07T11:33:55","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=490149"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=490149","title":{"rendered":"\u041f\u0438\u0448\u0435\u043c Zero\u2011Allocation \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 G\u2011\u043a\u043e\u0434\u0430 \u043d\u0430\u00a0C# (.NET 10): \u043a\u0430\u043a\u00a0\u0432\u044b\u0436\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0438\u0437\u00a0\u0436\u0435\u043b\u0435\u0437\u0430 \u0431\u0435\u0437\u00a0GC\u2011\u043f\u0430\u0443\u0437"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0415\u0441\u043b\u0438 \u0432\u00a0\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u044f\u0445 \u0443\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 G\u2011\u043a\u043e\u0434\u0430, \u043e\u043d \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 (GRBL\/FluidNC\/Linux\u2011CNC),\u00a0\u043b\u0438\u0431\u043e \u043f\u0438\u0448\u0435\u0442 \u0441\u0432\u043e\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u043d\u0430\u00a0\u0421\/\u0421++ \u0438\u043b\u0438\u00a0Rust \u0438 \u0434\u043b\u044f\u00a0\u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430.NET \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0432\u0438\u0434\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0439 (\u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u043e \u0438\u043b\u0438\u00a0\u043d\u0435\u0442\u00a0\u2014 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0434\u0430\u043b\u0435\u0435).<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043e\u0431\u0449\u0435 C# \u0438.NET?<\/h2>\n<p>\u0423\u00a0\u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u0435\u0441\u043b\u0438 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0434\u043b\u044f\u00a0RT \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 C \u0438\u043b\u0438\u00a0C++?<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043c\u0435\u043d\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u00a0\u043f\u043e\u043b\u044c\u0437\u0443 C# \u0438.NET\u00a0\u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439.NET\u00a0\u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u00a0\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0\u0431\u044b\u043b \u043b\u0435\u0442 10\u00a0\u043d\u0430\u0437\u0430\u0434, \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u0440\u0438\u00a0\u0434\u043e\u043b\u0436\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0431\u043e\u0440 \u0441\u0432\u044f\u0437\u043a\u0438 C# \u0438.NET \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435: Avalonia UI, ASP.NET, Entity Framework, Microsoft.Extensions. \u0412\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0435\u0437\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u0432\u043e\u0438\u0445 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043e\u0432 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0421# \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0421\u00a0\u0438 \u0421++ \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432\u00a0\u043a\u043e\u043b\u0435\u043d\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0432\u044f\u0437\u043a\u0430 C# \u0438.NET \u043f\u0440\u0438\u00a0\u043d\u0430\u0438\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u043d\u043e\u0439 \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u043d\u043a\u043e\u0432 \u0438 3D \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u043e\u0432?<\/h2>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u043d\u043a\u043e\u0432 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434? \u041e\u0442\u0432\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0430\u043d\u0430\u043b\u0435\u043d\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043e\u043d\u00a0\u0436\u0435 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0437\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0437\u0430\u00a0\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0421\u0442\u0430\u043d\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u00a0\u0441\u0432\u043e\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0446\u0438\u043a\u043b\u0430\u043c \u0438 \u043f\u043e\u0442\u043e\u043a \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0434\u043b\u044f\u00a0\u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 (\u043b\u0438\u0431\u043e \u043f\u043e\u0442\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438) \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a\u00a0\u0440\u0432\u0430\u043d\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u043d\u043a\u0430 \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u00a0\u0432\u044b\u0445\u043e\u0434\u0443 \u0448\u0430\u0433\u043e\u0432\u044b\u0445 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0437\u00a0\u0441\u0442\u0440\u043e\u044f \u043e\u0442\u00a0\u0443\u0434\u0430\u0440\u0430, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u043a\u00a0\u043f\u043e\u0440\u0447\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u043f\u043e\u0442\u0435\u0440\u0435 \u0434\u0440\u0430\u0433\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u0436\u0435\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e \u043d\u0430\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443\u00a0\u0436\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 C# \u0438.NET \u0441\u00a0\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u043c\u0438, \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c\u043e\u043c, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u00a0\u043a\u0443\u0447\u0435 \u043d\u0435\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u00a0\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f?<\/p>\n<p>\u041d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u00a0\u043e\u0434\u043d\u0430:<\/p>\n<ol>\n<li>\n<p>\u0418\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u044b\u0436\u043a\u0438 \u043f\u043e\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e.<\/p>\n<p>\u0418\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u2011\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u00a0\u043a\u0443\u0447\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0430\u00a0\u0442\u0430\u043c \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0434\u00a0\u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438\u00a0\u0441\u043f\u0438\u0441\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u00a0\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u00a0\u0441\u0430\u043c\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0430\u00a0\u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430\u00a0\u043d\u0438\u0445, \u043e\u0442\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u00a0\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u00a0\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043f\u0440\u044b\u0433\u0430\u0442\u044c \u043e\u0442\u00a0\u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u043a\u044d\u0448\u0430 (cache misses), \u0438\u0437\u2011\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043f\u043e\u0441\u0442\u0443\u043f\u044f\u0442 \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0440\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u00a0RAM.<\/p>\n<p>\u041f\u0440\u044b\u0436\u043a\u0438 \u043f\u043e\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u044b \u0442\u0435\u043c, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0447\u0438\u0441\u0442\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c \u043d\u0430\u00a0\u0430\u0434\u0440\u0435\u0441 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e\u00a0JIT \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435\u00a0\u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0435\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e (\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u043e\u0434\u00a0NativeAOT \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u043e\u00a0\u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u043b\u044f\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f), \u0430\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b, \u0438\u0437\u2011\u0437\u0430 \u0447\u0435\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u00a0\u043e\u0447\u0435\u043d\u044c \u0432\u0435\u043b\u0438\u043a\u0438 (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b), \u043d\u043e\u00a0\u043e\u043d\u0438 \u0432\u043d\u043e\u0441\u044f\u0442 \u0441\u0432\u043e\u044e \u043b\u0435\u043f\u0442\u0443 \u0432\u00a0\u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u0441\u00a0\u0434\u0440\u0443\u0433\u043e\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435. \u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u00a0\u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u00a0\u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f\u0445 GC, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u00a0Gen0\u00a0\u0438 Gen1, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u00a0\u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u0441\u00a0\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, GC \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u00a0\u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Stop\u2011The\u2011World), \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043a\u0430\u043a\u00a0\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043a\u00a0\u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044e \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0441\u0442\u0430\u043d\u043e\u043a, \u043f\u0440\u0438\u0447\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u044c \u044d\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u00a0\u2014 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0440\u0435\u043c\u044f \u043f\u0430\u0443\u0437\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u00a0\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u0432\u00a0\u043a\u0443\u0447\u0435, \u043f\u0440\u0438\u00a0\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0442\u0438. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00a0\u0436\u0435 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b GC. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0440\u0442\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0436\u0438\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u00a0\u043a\u0443\u0447\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0440\u0435\u0448\u0435\u0442\u043e, \u043e\u0442\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u043a\u044d\u0448\u0430 (GC \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0443\u043f\u043b\u043e\u0442\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u0447\u0438, \u043d\u043e\u00a0\u044d\u0442\u043e \u0434\u043e\u0440\u043e\u0433\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043a\u00a0\u0442\u043e\u043c\u0443\u00a0\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u0430\u0448\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0436\u0438\u0432\u0443\u0442 \u0432\u00a0Large Object Heap\u00a0\u2014 \u0442\u0430\u043c \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0435\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0432\u0441\u0435).<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437\u00a0\u0432\u0441\u0435\u0433\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e.NET \u0438 C# \u043d\u0435\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044f\u0434\u0440\u043e \u0434\u043b\u044f\u00a0RT \u0441\u0438\u0441\u0442\u0435\u043c\u044b? \u0418\u043b\u0438\u00a0\u043c\u043e\u0433\u0443\u0442?..<\/p>\n<p>\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u043f\u0435\u0440\u0435\u0434\u00a0\u2014 \u043c\u043e\u0433\u0443\u0442, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0441\u0430\u043c\u0438 \u0437\u0430\u00a0\u0441\u0435\u0431\u044f:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f (Mean)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c (Allocated)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">10<\/p>\n<\/td>\n<td>\n<p align=\"left\">8.12\u00a0\u03bcs<\/p>\n<\/td>\n<td>\n<p align=\"left\">0\u00a0B<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">147.38\u00a0\u03bcs<\/p>\n<\/td>\n<td>\n<p align=\"left\">0\u00a0B<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">1\u202f000<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.81\u00a0ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">0\u00a0B<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">10\u202f000<\/p>\n<\/td>\n<td>\n<p align=\"left\">24.88\u00a0ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">0\u00a0B<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">100\u202f000<\/p>\n<\/td>\n<td>\n<p align=\"left\">251.55\u00a0ms<\/p>\n<\/td>\n<td>\n<p align=\"left\">0\u00a0B<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong><em>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0442\u0435\u043d\u0434\u0430: Intel Core i5-10400F,.NET 10.0, X64\u00a0RyuJIT AVX2, BenchmarkDotNet v0.15.2.<\/em><\/strong><\/p>\n<p>\u0412\u00a0\u0442\u0435\u0441\u0442\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u043b\u043e\u0441\u044c \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u043c \u0438\u0437 7\u00a0\u0441\u043b\u043e\u0435\u0432 10, 100, 1000, 10\u202f000\u00a0\u0438 100\u202f000\u00a0\u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430 (\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u043f\u0438\u0434). \u041a\u0430\u043a\u00a0\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0437\u0430 1\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u043a\u043e\u043b\u043e 400\u202f000\u00a0\u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430 \u0441 0\u00a0\u0431\u0430\u0439\u0442 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043d\u0430\u00a0\u0447\u0438\u0441\u0442\u043e\u043c C# \u0438.NET 10.0\u00a0\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0438\u0445 \u0432\u00a0\u043f\u043b\u043e\u0442\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0431\u0430\u0439\u0442\u2011\u043a\u043e\u0434\u0430 \u0441\u00a0\u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430\u00a0\u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 C# \u0438.NET 10.0\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438?<\/h2>\n<p>\u0412\u0440\u0435\u043c\u0435\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 C#\u00a0\u0431\u044b\u043b \u00ab\u044f\u0437\u044b\u043a\u043e\u043c \u0434\u043b\u044f\u00a0\u0444\u043e\u0440\u043c\u043e\u0447\u0435\u043a \u0438 \u0432\u0435\u0431\u0430\u00bb, \u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u0438. \u0412\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u0430.NET \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043d\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f\u00a0\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u043f\u043e\u0434\u00a0\u0436\u0435\u0441\u0442\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u00a0\u0436\u0435\u043b\u0435\u0437\u0430 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 NativeAOT.<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u00a0\u0442\u0438\u043f\u0443 ReadOnlyMemory&lt;char&gt;, ReadOnlySpan&lt;char&gt;, ref struct, allows ref struct, NativeMemory, StructLayout\u00a0\u2014 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0431\u0435\u0437\u00a0\u0435\u0434\u0438\u043d\u043e\u0439 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0\u043a\u0443\u0447\u0435 (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0431\u0435\u0437\u00a0GC \u043f\u0430\u0443\u0437) \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043b\u043e\u0436\u0438\u043b\u0438\u0441\u044c \u0432\u00a0\u043a\u044d\u0448 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>ReadOnlyMemory&lt;T&gt; \u0438 ReadOnlySpan&lt;T&gt; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u0435\u0437\u00a0\u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, ref struct \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u0443\u0442\u0435\u043a\u0443\u0442 \u0432\u00a0\u043a\u0443\u0447\u0443 \u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0431\u043e\u043a\u0441\u0438\u043d\u0433, allow ref struct \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u00a0\u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 (\u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u00a0\u043a\u0430\u0436\u0434\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 NativeAOT), NativeMemory \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f\u00a0GC \u0430\u0440\u0435\u043d\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u00a0\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0445, StructLayout \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u00a0\u043b\u0438\u043d\u0438\u0438 \u043a\u044d\u0448\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435\u00a0\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c 400\u202f000\u00a0\u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430 \u0432\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0432\u043e\u00a0\u0444\u0440\u0435\u0439\u043c\u044b \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438\u00a0\u043b\u0438\u0431\u043e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u043d\u043a\u0430 \u0441\u00a0\u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u00a0GC \u0438 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430.<\/p>\n<h2>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 NG.Velox<\/h2>\n<p>\u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 NG.Velox \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0438\u0437 7\u00a0\u0441\u043b\u043e\u0435\u0432:<\/p>\n<ol>\n<li>\n<p>Preprocessor&lt;TInput&gt;\u00a0\u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043f\u0440\u043e\u0431\u0435\u043b\u044b, N\u2011\u043c\u0435\u0442\u043a\u0438 (\u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430).<\/p>\n<\/li>\n<li>\n<p>Lexer\u00a0\u2014 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u00a0\u0442\u043e\u043a\u0435\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>Parser\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u044b \u0432\u00a0\u043d\u043e\u0434\u044b.<\/p>\n<\/li>\n<li>\n<p>Interpreter\u00a0\u2014 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043d\u043e\u0434\u044b \u0432\u043e\u00a0\u0444\u0440\u0435\u0439\u043c\u044b \u0441\u0442\u0430\u043d\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>Planner\u00a0\u2014 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>Interpolator\u00a0\u2014 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0431\u043b\u043e\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>Postprocessor&lt;TOutput&gt;\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 (\u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f\u00a0\u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u0430 \u043d\u0430\u00a0\u0441\u0442\u0430\u043d\u043e\u043a,\u00a0\u043b\u0438\u0431\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0444\u0440\u0435\u0439\u043c\u043e\u0432 \u0434\u043b\u044f\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435).<\/p>\n<\/li>\n<\/ol>\n<p>\u041c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u044f\u043c\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 DiagnosticBag \u0434\u043b\u044f\u00a0\u0441\u0431\u043e\u0440\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cd7\/cc3\/66a\/cd7cc366a2743747d73569803390dfa4.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1 - \u0421\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 NG.Velox\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1 - \u0421\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 NG.Velox\" width=\"2334\" height=\"2512\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/cd7\/cc3\/66a\/cd7cc366a2743747d73569803390dfa4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cd7\/cc3\/66a\/cd7cc366a2743747d73569803390dfa4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1\u00a0\u2014 \u0421\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 NG.Velox<\/figcaption><\/div>\n<\/figure>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445:<\/p>\n<ol>\n<li>\n<p>Zero Heap Allocation \u0432\u00a0Hot Path (\u0432\u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0436\u0438\u0432\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0\u0441\u0442\u0435\u043a\u0435).<\/p>\n<\/li>\n<li>\n<p>Data Oriented Design (\u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u043d\u0430\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u0436\u043d\u0435\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439).<\/p>\n<\/li>\n<li>\n<p>Unsafe Within, Safe Without (\u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u044b\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u043d\u043e\u00a0\u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 API \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0432\u00a0ReadOnlySpan&lt;T&gt;).<\/p>\n<\/li>\n<li>\n<p>\u0427\u0438\u0441\u0442\u043e\u0442\u0430 \u043e\u0442\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430\u00a0\u0447\u0438\u0441\u0442\u043e\u043c.NET \u0431\u0435\u0437\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0442\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0440\u043e\u0441\u0441\u2011\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430).<\/p>\n<\/li>\n<\/ol>\n<h2>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/h2>\n<h3>Unsafe \u043a\u043e\u0434<\/h3>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f unsafe \u043a\u043e\u0434 \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u0440\u0438\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e Span&lt;T&gt;\/ReadOnlySpan&lt;T&gt; \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0420\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430\u00a0\u044d\u0442\u043e \u043c\u0438\u0437\u0435\u0440\u043d\u044b\u0435 (\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u043b\u0435\u0432\u044b\u0435, \u0435\u0441\u043b\u0438 JIT \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u044b\u0445\u043e\u0434\u044b \u0437\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u043a\u043e\u0434\u0430), \u043d\u043e\u00a0\u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438\u043b\u0438\u00a0\u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447\u00a0\u2014 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u044b.<\/p>\n<pre><code class=\"cs\">[MethodImpl(MethodImplOptions.AggressiveInlining)]public static unsafe void SkipWhitespaces(ref char* pCurrent, char* pEnd){    char* ptr = pCurrent;    const CharMask whitespaceMask = CharMask.Whitespace | CharMask.NewLine;    while (ptr &lt; pEnd &amp;&amp; (*ptr).Is(whitespaceMask))    {        ptr++;    }    pCurrent = ptr;}<\/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<h3>\u0415\u0434\u0438\u043d\u0430\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 (Memory Arena)<\/h3>\n<p>MemoryArena \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 NativeMemory.Alloc \u0434\u043b\u044f\u00a0\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0433\u043e \u0434\u043b\u044f\u00a0GC \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u043b\u0435\u0436\u0430\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0439 \u0430\u0440\u0435\u043d\u044b. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u00a0ArrayPool&lt;T&gt;? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043f\u0443\u043b\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0GC, \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432\u00a0\u043f\u0443\u043b, \u0430\u00a0\u043f\u0430\u0442\u0442\u0435\u0440\u043d MemoryArena \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u00a0O(1) \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u0441\u0434\u0432\u0438\u0433\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0438 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u00a0\u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u0441\u0431\u0440\u043e\u0441\u0430 \u043e\u0444\u0441\u0435\u0442\u0430.<\/p>\n<pre><code class=\"cs\">public unsafe struct MemoryArena : IDisposable{    private readonly byte* _memory;    private readonly int _capacity;    private int _offset;    private bool _disposed;    public MemoryArena(int capacity)    {        ArgumentOutOfRangeException.ThrowIfNegativeOrZero(capacity);        _capacity = capacity;        _offset = 0;        _memory = (byte*)NativeMemory.Alloc((nuint)capacity);    }    public readonly int Capacity    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        get =&gt; _capacity;    }    public readonly int AllocatedBytes    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        get =&gt; _offset;    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public byte* Allocate(int size, int alignment)    {        ObjectDisposedException.ThrowIf(_disposed, typeof(MemoryArena));        byte* currentPtr = _memory + _offset;        byte* alignedPtr = (byte*)(((ulong)currentPtr + (ulong)alignment - 1) &amp; ~(ulong)(alignment - 1));        int realAllocatedSize = (int)(alignedPtr - currentPtr) + size;        if (_offset + realAllocatedSize &gt; _capacity)        {            ThrowOutOfMemoryException(size, _capacity - _offset);        }        _offset += realAllocatedSize;        return alignedPtr;    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public void Reset()    {        _offset = 0;    }    public void Dispose()    {        if (_disposed) return;        if (_memory is not null)        {            NativeMemory.Free(_memory);        }        _disposed = true;    }    [MethodImpl(MethodImplOptions.NoInlining)]    private static void ThrowOutOfMemoryException(int size, int left)        =&gt; throw new OutOfMemoryException($\"Not enough memory in arena. Requested {size} bytes, left: {left} bytes.\");}<\/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<h3>\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 (Arena Allocator)<\/h3>\n<p>ArenaAllocator \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u00a0\u0430\u0440\u0435\u043d\u0435 \u0431\u043b\u043e\u043a \u0431\u0430\u0439\u0442 \u043f\u043e\u0434\u00a0\u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u043b\u0443\u0447\u0448\u0435 \u043b\u0435\u0433\u043b\u0438 \u0432\u00a0\u043a\u044d\u0448 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0414\u043b\u044f\u00a0\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0445\u0435\u043b\u043f\u0435\u0440\u2011\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u00a0\u0442\u0438\u043f\u043e\u043c \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f StructLayout.Sequential, \u044d\u0442\u043e\u0442 \u0442\u0440\u044e\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u0438\u0448\u0435\u0442 \u043d\u0430\u00a0\u0421++ \u043f\u043e\u0434\u00a0\u0438\u043c\u0435\u043d\u0435\u043c alignof. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u00a0\u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u00a0\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044e \u0442\u0438\u043f\u0430 \u0432\u00a0\u0431\u0430\u0439\u0442\u0430\u0445, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430\u00a0\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 JIT. \u0412\u00a0\u0447\u0435\u043c \u0441\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430? \u0422\u0430\u043a \u043a\u0430\u043a\u00a0StructLayout.Sequential \u043e\u0431\u044f\u0437\u044b\u0432\u0430\u0435\u0442 JIT \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c Value \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u00a0Target (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f byte) \u043f\u043e\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u0435 \u0431\u0430\u0439\u0442\u044b \u043e\u0442\u0441\u0442\u0443\u043f\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c Value \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443, \u043a\u0440\u0430\u0442\u043d\u043e\u043c\u0443 \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u00a0\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044e. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 Unsafe.ByteOffset \u0432\u0437\u044f\u0442\u044c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u00a0\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u00a0\u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u043b\u044f Target \u0434\u043e\u00a0\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u00a0\u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u043b\u044f Value, \u044d\u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435.<\/p>\n<pre><code class=\"cs\">internal static unsafe class ArenaAllocator{    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public static TEntity* Allocate&lt;TEntity&gt;(ref MemoryArena arena, int count)        where TEntity : unmanaged    {        if (count == 0)            return null;        int size = checked(sizeof(TEntity) * count);        int alignment = AlignOf&lt;TEntity&gt;();        return (TEntity*)arena.Allocate(size, alignment);    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    private static int AlignOf&lt;T&gt;() where T : unmanaged    {        var layout = default(AlignmentHelper&lt;T&gt;);        ref byte start = ref Unsafe.As&lt;AlignmentHelper&lt;T&gt;, byte&gt;(ref layout);        ref byte field = ref Unsafe.As&lt;T, byte&gt;(ref layout.Value);        return (int)Unsafe.ByteOffset(ref start, ref field);    }    [StructLayout(LayoutKind.Sequential)]    private struct AlignmentHelper&lt;T&gt; where T : unmanaged    {        public byte Target;        public T Value;    }}<\/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<h3>\u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f\u00a0\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0441\u043b\u043e\u0435\u0432 (Context)<\/h3>\n<p>Context \u0445\u0440\u0430\u043d\u0438\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0444\u0438\u0447\u0443 C# 13\u00a0\u2014 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 allows ref struct \u0434\u043b\u044f\u00a0generic \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0414\u043e\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 13\u00a0\u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u043d\u0430\u00a0ref struct \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0435\u0435 \u043a\u0430\u043a\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u043b \u0441\u0430\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438\u0437\u2011\u0437\u0430 \u0440\u0438\u0441\u043a\u0430 \u0443\u0442\u0435\u0447\u043a\u0438 ref struct \u0432\u00a0\u043a\u0443\u0447\u0443 \u0438\u0437\u2011\u0437\u0430 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0432\u00a0managed \u043e\u0431\u0435\u0440\u0442\u043a\u0443. \u041f\u043e\u0441\u043b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 13\u00a0\u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 allows ref struct \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043e\u0439\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c \u0441\u00a0ref struct \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u043e\u0434\u00a0\u0432\u044b\u0437\u043e\u0432 \u0441\u00a0\u043a\u0430\u0436\u0434\u044b\u043c \u0442\u0438\u043f\u043e\u043c generic \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430.<\/p>\n<pre><code class=\"cs\">internal ref struct VeloxContext&lt;TInput, TOutput&gt; :    IPreprocessingContext&lt;TInput&gt;,    ILexingContext,    IParsingContext,    IInterpretationContext,    IPlanningContext,    IInterpolationContext,    IPostprocessingContext&lt;TOutput&gt;    where TInput : notnull    where TOutput : unmanaged{    private readonly ref TInput _input;    private readonly ref MemoryArena _arena;    private PreprocessingResult _preprocessingResult;    private LexingResult _lexingResult;    private ParsingResult _parsingResult;    private InterpretationResult _interpretationResult;    private PlanningResult _planningResult;    private InterpolationResult _interpolationResult;    private PostprocessingResult&lt;TOutput&gt; _postprocessingResult;    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public VeloxContext(        ref TInput input,        ref MemoryArena arena)    {        _input = ref input;        _arena = ref arena;        _preprocessingResult = default;        _lexingResult = default;        _parsingResult = default;        _interpretationResult = default;        _planningResult = default;        _interpolationResult = default;        _postprocessingResult = default;    }    public readonly ref MemoryArena Arena    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        get =&gt; ref _arena;    }    public readonly TInput Input    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        get =&gt; _input;    }    public PreprocessingResult PreprocessingResult    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        readonly get =&gt; _preprocessingResult;        [MethodImpl(MethodImplOptions.AggressiveInlining)]        set =&gt; _preprocessingResult = value;    }    public LexingResult LexingResult    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        readonly get =&gt; _lexingResult;        [MethodImpl(MethodImplOptions.AggressiveInlining)]        set =&gt; _lexingResult = value;    }    public ParsingResult ParsingResult    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        readonly get =&gt; _parsingResult;        [MethodImpl(MethodImplOptions.AggressiveInlining)]        set =&gt; _parsingResult = value;    }    public InterpretationResult InterpretationResult    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        readonly get =&gt; _interpretationResult;        [MethodImpl(MethodImplOptions.AggressiveInlining)]        set =&gt; _interpretationResult = value;    }    public PlanningResult PlanningResult    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        readonly get =&gt; _planningResult;        [MethodImpl(MethodImplOptions.AggressiveInlining)]        set =&gt; _planningResult = value;    }    public InterpolationResult InterpolationResult    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        readonly get =&gt; _interpolationResult;        [MethodImpl(MethodImplOptions.AggressiveInlining)]        set =&gt; _interpolationResult = value;    }    public PostprocessingResult&lt;TOutput&gt; PostprocessingResult    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        readonly get =&gt; _postprocessingResult;        [MethodImpl(MethodImplOptions.AggressiveInlining)]        set =&gt; _postprocessingResult = value;    }}\/\/ \u0424\u0438\u0447\u0430 C# 13void Process&lt;TContext&gt;(ref TContext context, ref DiagnosticBag diagnosticBag)        where TContext : struct, IPreprocessingContext&lt;TInput&gt;, allows ref struct;void Process&lt;TContext&gt;(ref TContext context, ref DiagnosticBag diagnosticBag)        where TContext : struct, ILexingContext, allows ref struct;void Process&lt;TContext&gt;(ref TContext context, ref DiagnosticBag diagnosticBag)        where TContext : struct, IParsingContext, allows ref struct;void Process&lt;TContext&gt;(ref TContext context, ref DiagnosticBag diagnosticBag)        where TContext : struct, IInterpretationContext, allows ref struct;void Process&lt;TContext&gt;(ref TContext context, ref DiagnosticBag diagnosticBag)        where TContext : struct, IPlanningContext, allows ref struct;void Process&lt;TContext&gt;(ref TContext context, ref DiagnosticBag diagnosticBag)        where TContext : struct, IInterpolationContext, allows ref struct;void Process&lt;TContext&gt;(ref TContext context, ref DiagnosticBag diagnosticBag)        where TContext : struct, IPostprocessingContext&lt;TOutput&gt;, allows ref struct;<\/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<h3>\u0421\u0431\u043e\u0440 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 (DiagnosticBag)<\/h3>\n<p>DiagnosticBag\u00a0\u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u00ab\u0441\u0443\u043c\u043a\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438\u00bb \u0438\u0437\u00a0Roslyn, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 ArrayPool&lt;T&gt;.Shared, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u044b\u0431\u0440\u0430\u043d, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u00a0Happy Path \u0440\u0435\u0434\u043a\u0438, \u0430\u00a0\u0441\u0430\u043c\u0430 \u0441\u0443\u043c\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e Cold Path, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0430\u0440\u0435\u043d\u0443 \u0438 \u0443\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0443\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0442\u043d\u043e, \u043d\u0435\u00a0\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f \u0438\u0445 \u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.<\/p>\n<pre><code class=\"cs\">public struct DiagnosticBag : IDisposable{    private const int INITIAL_CAPACITY = 256;    private int _errorsCount;    private int _warningsCount;    private Diagnostic[]? _buffer;    private int _totalCount;    private bool _disposed;    public readonly bool HasErrors =&gt; _errorsCount &gt; 0;    public readonly bool HasWarnings =&gt; _warningsCount &gt; 0;    public readonly ReadOnlySpan&lt;Diagnostic&gt; Diagnostics =&gt; _buffer is null        ? ReadOnlySpan&lt;Diagnostic&gt;.Empty        : _buffer.AsSpan(0, _totalCount);    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public void EnsureCapacity(int capacity)    {        if (_buffer is null) Init(capacity);        else if (_buffer.Length &lt; capacity) Resize(capacity);    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public void Add(in Diagnostic diagnostic)    {        if (_buffer is null) Init(INITIAL_CAPACITY);        else if (_totalCount &gt;= _buffer.Length) Resize(_totalCount * 2);        if (diagnostic.Severity == Severity.Error) _errorsCount++;        else if (diagnostic.Severity == Severity.Warning) _warningsCount++;        _buffer![_totalCount++] = diagnostic;    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public void Clear()    {        _totalCount = 0;        _errorsCount = 0;        _warningsCount = 0;    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    private void Init(int capacity) =&gt; _buffer = ArrayPool&lt;Diagnostic&gt;.Shared.Rent(capacity);    [MethodImpl(MethodImplOptions.NoInlining)]    private void Resize(int capacity)    {        var oldBuffer = _buffer!;        var newBuffer = ArrayPool&lt;Diagnostic&gt;.Shared.Rent(capacity);        oldBuffer.AsSpan(0, _totalCount).CopyTo(newBuffer);        ArrayPool&lt;Diagnostic&gt;.Shared.Return(oldBuffer, clearArray: false);        _buffer = newBuffer;    }    public void Dispose()    {        if (_disposed) return;        if (_buffer is not null)        {            ArrayPool&lt;Diagnostic&gt;.Shared.Return(_buffer, clearArray: false);            _buffer = null;        }        _disposed = true;    }}<\/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<h3>\u041e\u0442\u043a\u0430\u0437 \u043e\u0442\u00a0\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f (CharRegistry)<\/h3>\n<p>CharRegistry \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043c\u0430\u0441\u043a\u0438 \u0434\u043b\u044f\u00a0branchless \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0412\u00a0G\u2011\u043a\u043e\u0434\u0430 \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 ASCII, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043c\u0430\u0441\u043e\u043a, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0437\u0430\u00a0\u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0435\u043a\u0441\u0438\u043d\u0433\u0430 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u00a0if\u2011else \u0432\u0435\u0442\u043e\u043a \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 switch.<\/p>\n<pre><code class=\"cs\">[Flags]internal enum CharMask : ushort{    None = 0,    Coordinate = 1 &lt;&lt; 0,    Command = 1 &lt;&lt; 1,    Parameter = 1 &lt;&lt; 2,    Digit = 1 &lt;&lt; 3,    Exponent = 1 &lt;&lt; 4,    OpenBracket = 1 &lt;&lt; 5,    CloseBracket = 1 &lt;&lt; 6,    Semicolon = 1 &lt;&lt; 7,    Whitespace = 1 &lt;&lt; 8,    NewLine = 1 &lt;&lt; 9,    Label = 1 &lt;&lt; 10,}internal static class CharRegistry{    private static readonly ushort[] Table = new ushort[128];    static CharRegistry()    {        Table['X'] = Table['Y'] = Table['Z'] = (ushort)CharMask.Coordinate;        Table['G'] = Table['M'] = (ushort)CharMask.Command;        Table['F'] = Table['P'] = Table['I'] = Table['J'] = Table['K'] = Table['R'] = (ushort)CharMask.Parameter;        Table['N'] = (ushort)CharMask.Label;        for (int i = '0'; i &lt;= '9'; i++)        {            Table[i] = (ushort)CharMask.Digit;        }                Table['.'] = Table['-'] = Table['+'] = (ushort)CharMask.Digit;        Table['e'] = Table['E'] = (ushort)CharMask.Exponent;        Table[';'] = (ushort)CharMask.Semicolon;        Table['('] = (ushort)CharMask.OpenBracket;        Table[')'] = (ushort)CharMask.CloseBracket;        Table['\\t'] = Table['\\r'] = Table[' '] = (ushort)CharMask.Whitespace;        Table['\\n'] = (ushort)CharMask.NewLine;    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public static bool Is(this char c, CharMask mask)    {        \/\/ \u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 ASCII (0..127).        if (c &gt; 127) return false;        \/\/ \u041f\u0440\u044f\u043c\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443.        return (Table[c] &amp; (ushort)mask) != 0;    }    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public static CharMask GetMask(this char c)    {        return c &lt;= 127 ? (CharMask)Table[c] : CharMask.None;    }}<\/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<h3>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0430\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (StructLayout)<\/h3>\n<p>StructLayout.Explicit \u0438 StructLayout.Sequential\u00a0\u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440. StructLayout.Explicit \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437\u00a0\u0440\u0430\u0437\u0434\u0443\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432\u00a0\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0435\u0433\u0430\u2011\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u044f\u0432\u043d\u043e, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432\u00a0\u043d\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f union\u2011\u043f\u043e\u043b\u0435\u0439. Union\u2011\u043f\u043e\u043b\u044f \u043f\u043e\u00a0\u0441\u0443\u0442\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435 \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0437\u00a0\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. StructLayout.Sequential \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c pointer\u2011\u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0438 \u0432\u00a0unmanaged \u0441\u0435\u043a\u0446\u0438\u0438, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c JIT, \u0447\u0442\u043e\u00a0\u043f\u043e\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b\u00a0\u0431\u044b\u0442\u044c \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a\u00a0\u043e\u043d\u0438 \u0437\u0430\u0434\u0430\u043d\u044b \u0432\u00a0\u043a\u043e\u0434\u0435 (JIT \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0434\u043b\u044f\u00a0\u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438). \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e\u00a0\u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432\u00a0\u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c, \u0447\u0442\u043e\u00a0\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f\u00a0DTO.<\/p>\n<pre><code class=\"cs\">[StructLayout(LayoutKind.Explicit, Size = 16)]internal readonly struct Node{    [FieldOffset(0)]    public readonly NodeKind Kind;    [FieldOffset(1)]    public readonly ParameterKind ParameterKind; \/\/ union-\u043f\u043e\u043b\u0435    [FieldOffset(1)]    public readonly CommandKind CommandKind; \/\/ union-\u043f\u043e\u043b\u0435    [FieldOffset(1)]    public readonly CoordinateKind CoordinateKind; \/\/ union-\u043f\u043e\u043b\u0435    [FieldOffset(2)]    public readonly ushort Length;    [FieldOffset(4)]    public readonly int Start;    [FieldOffset(8)]    public readonly double Value;    public Node(NodeKind kind, CoordinateKind coordinateKind, int start, ushort length, double value)    {        Kind = kind;        CoordinateKind = coordinateKind;        Start = start;        Length = length;        Value = value;    }    public Node(NodeKind kind, CommandKind commandKind, int start, ushort length, double value)    {        Kind = kind;        CommandKind = commandKind;        Start = start;        Length = length;        Value = value;    }    public Node(NodeKind kind, ParameterKind parameterKind, int start, ushort length, double value)    {        Kind = kind;        ParameterKind = parameterKind;        Start = start;        Length = length;        Value = value;    }}[StructLayout(LayoutKind.Sequential)] \/\/ \u043f\u043e\u043b\u044f \u0438\u0434\u0443\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043epublic readonly unsafe struct SimulationFrame{    public readonly MachineFrame MachineFrame;    public readonly TrajectoryPoint* Points;    public readonly int PointsCount;    public readonly byte MotionMode;    [MethodImpl(MethodImplOptions.AggressiveInlining)]    public SimulationFrame(MachineFrame machineFrame, TrajectoryPoint* points, int pointsCount, byte motionMode)    {        MachineFrame = machineFrame;        Points = points;        PointsCount = pointsCount;        MotionMode = motionMode;    }    public readonly ReadOnlySpan&lt;TrajectoryPoint&gt; FramePoints    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        get =&gt; new(Points, PointsCount);    }}<\/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<h3>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u0433 (MethodImplOptions)<\/h3>\n<p>MethodImplOptions.AggressiveInlining \u0438 MethodImplOptions.NoInlining\u00a0\u2014 \u0440\u0443\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u0433\u043e\u043c \u0438 \u044f\u0432\u043d\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 Happy Path \u0438 Sad Path. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u043c\u0435\u0442\u043e\u0434\u044b Hot Path \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u044f\u0432\u043d\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u00a0\u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434, \u0432\u00a0\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u00a0\u0432\u044b\u0437\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u044f\u0436\u0435\u043b\u044b\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u043d\u0435\u00a0\u0437\u0430\u0431\u0438\u0432\u0430\u044f \u043a\u044d\u0448 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<pre><code class=\"cs\">public readonly ref T this[int index]{    [MethodImpl(MethodImplOptions.AggressiveInlining)]    get    {        if ((uint)index &gt;= (uint)_count)        {            ThrowIndexOutOfRangeException();        }        return ref _items[index];    }}[MethodImpl(MethodImplOptions.NoInlining)]private static void ThrowIndexOutOfRangeException()    =&gt; throw new IndexOutOfRangeException(\"Index was out of range of the ArenaList.\");<\/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<h2>\u041a\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d NG.Velox?<\/h2>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a\u00a0\u0447\u0442\u043e\u2011\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435\u00a0\u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0441\u00a0\u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 C# \u0438.NET \u0432\u00a0\u0441\u0444\u0435\u0440\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0438\u0436\u0443 \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0434\u043b\u044f\u00a0\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u00a0\u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0438\u043b\u0438\u00a0DIY \u0441\u0442\u0430\u043d\u043a\u0430\u0445, 3D \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430\u0445, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 CAD\/CAM \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043e\u0449\u043d\u043e\u0433\u043e\u00a0\u0436\u0435\u043b\u0435\u0437\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439.NET\u00a0\u2014 \u043e\u0442\u00a0Raspberry PI \u0434\u043e\u00a0\u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u041f\u041a (\u043f\u0440\u0438 \u0434\u043e\u043b\u0436\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438). \u0422\u0430\u043a\u0436\u0435, \u0434\u0443\u043c\u0430\u044e, \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c, \u0438\u0437\u0443\u0447\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0427\u041f\u0423, \u0440\u043e\u0431\u043e\u0442\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0443, \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438\u00a0\u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u0430\u043c Zero\u2011Allocation \u043a\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435\u00a0\u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u0438\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442 \u0438\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434\u00a0MIT, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043a\u0430\u043a\u00a0\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043b\u044f\u00a0\u043a\u0443\u0440\u0441\u043e\u0432\u00a0\u043b\u0438\u0431\u043e \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0418\u0442\u043e\u0433\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>\u041d\u0430\u00a0\u043c\u043e\u0439 \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u044b\u0448\u043b\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u0440\u0435\u043f\u043a\u043e \u0441\u0431\u0438\u0442\u0430\u044f \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0447\u043d\u0430\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u0438\u0437\u00a0\u043d\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u0441\u044b\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u043a\u00a0\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c \u043d\u0430\u00a0\u0421\/C++ \u043f\u0440\u0438 0\u00a0\u0431\u0430\u0439\u0442 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0437\u043c\u0435. \u042d\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043d\u0430\u00a0\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0434\u043b\u044f\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u0435\u00a0\u0436\u0435\u0440\u0442\u0432\u0443\u044f \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c\u044e, \u0438 \u043d\u0435\u00a0\u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u044f\u0441\u044c \u043e\u0442\u00a0\u041e\u041e\u041f \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043e\u00a0\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u0430\u0445, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0439\u0442\u0438. \u041d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u044b\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432\u0435\u0437\u0434\u0435\u00a0\u2014 \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u043e\u0432\u0435\u0440\u043a\u0438\u043b\u043b \u0434\u043b\u044f\u00a0\u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e\u00a0\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0435\u0440\u0442\u043a\u0438 Span&lt;T&gt; \u0438 ReadOnlySpan&lt;T&gt; \u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u043d\u0438\u043c\u0438, \u043e\u043f\u0443\u0441\u043a\u0430\u044f \u0444\u0430\u043a\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u043e\u00a0\u043c\u043d\u0435\u00a0\u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0438\u0437\u00a0\u0441\u0430\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438, \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c\u044e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u00a0\u0443\u0433\u043e\u0434\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0443\u0447\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044e.<\/p>\n<p>\u0427\u0442\u043e\u00a0\u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\u00a0\u2014 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 400\u202f000\u00a0\u0441\u0442\u0440\u043e\u043a \u0432\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f\u00a0\u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0438 \u0433\u0430\u0440\u0430\u0436\u043d\u044b\u0445 \u0427\u041f\u0423 \u0438 3D \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u043e\u0432, \u0430\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 G\u2011\u043a\u043e\u0434\u0430 \u0441\u00a0\u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0447\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432\u00a0\u043f\u043e\u043b\u0443\u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445\u00a0\u043b\u0438\u0431\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445.<\/p>\n<h2>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u0438 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u043e\u0439 \u0438 \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435\u00a0\u0441\u0442\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u00a0\u043d\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e\u00a0\u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u0442\u0430\u043f\u0443 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u00a0\u043d\u0438\u0445.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u00a0\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430, \u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0435\u0432,\u00a0\u043b\u0438\u0431\u043e \u0432\u044b \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u00a0\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u00a0\u2014 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0GitHub \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0440\u043e\u0435\u043a\u0442\u00a0\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434\u00a0MIT, \u0434\u0435\u043b\u0430\u0439\u0442\u0435 fork, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 issue, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0439\u0442\u0435, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439\u0442\u0435, \u043a\u0440\u0438\u0442\u0438\u043a\u0443\u0439\u0442\u0435, \u0437\u0430\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u043a\u0440\u044b\u0442 \u043a\u00a0\u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0443, \u0432\u00a0\u0441\u043f\u043e\u0440\u0435 \u0440\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u0438\u043d\u0430.<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/opengraph.githubassets.com\/82fec63ed30ba2e5289d1e0522b94cb4573936d2d7385a6178f2cf6f409b9e10\/MachineGate\/NG.Velox&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>GitHub &#8212; MachineGate\/NG.Velox: Zero-allocation, high-performance G-code processing pipeline for CNC kinematics, trajectory planning, and real-time interpolation.<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/MachineGate\/NG.Velox\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"embed__caption-host\">github.com<\/a><\/div>\n<\/div>\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\/1067914\/\">https:\/\/habr.com\/ru\/articles\/1067914\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u00a0\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u044f\u0445 \u0443\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 G\u2011\u043a\u043e\u0434\u0430, \u043e\u043d \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432\u00a0\u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 (GRBL\/FluidNC\/Linux\u2011CNC),\u00a0\u043b\u0438\u0431\u043e \u043f\u0438\u0448\u0435\u0442 \u0441\u0432\u043e\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u043d\u0430\u00a0\u0421\/\u0421++ \u0438\u043b\u0438\u00a0Rust \u0438 \u0434\u043b\u044f\u00a0\u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430.NET \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0432\u0438\u0434\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0439 (\u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u043e \u0438\u043b\u0438\u00a0\u043d\u0435\u0442\u00a0\u2014 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0434\u0430\u043b\u0435\u0435).\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043e\u0431\u0449\u0435 C# \u0438.NET?\u0423\u00a0\u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u0435\u0441\u043b\u0438 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0434\u043b\u044f\u00a0RT \u0441\u0438\u0441\u0442\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 C \u0438\u043b\u0438\u00a0C++?\u0414\u043b\u044f\u00a0\u043c\u0435\u043d\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u00a0\u043f\u043e\u043b\u044c\u0437\u0443 C# \u0438.NET\u00a0\u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439.NET\u00a0\u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u00a0\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0\u0431\u044b\u043b \u043b\u0435\u0442 10\u00a0\u043d\u0430\u0437\u0430\u0434, \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u0440\u0438\u00a0\u0434\u043e\u043b\u0436\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\u0412\u044b\u0431\u043e\u0440 \u0441\u0432\u044f\u0437\u043a\u0438 C# \u0438.NET \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435: Avalonia UI, ASP.NET, Entity Framework, Microsoft.Extensions. \u0412\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0435\u0437\u00a0\u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u0432\u043e\u0438\u0445 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u043e\u0432 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.\u0421# \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0421\u00a0\u0438 \u0421++ \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432\u00a0\u043a\u043e\u043b\u0435\u043d\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c.\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0432\u044f\u0437\u043a\u0430 C# \u0438.NET \u043f\u0440\u0438\u00a0\u043d\u0430\u0438\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u043d\u043e\u0439 \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u043d\u043a\u043e\u0432 \u0438 3D \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u043e\u0432?\u0421\u0442\u043e\u0438\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u043d\u043a\u043e\u0432 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434? \u041e\u0442\u0432\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0430\u043d\u0430\u043b\u0435\u043d\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043e\u043d\u00a0\u0436\u0435 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0437\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0437\u0430\u00a0\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0421\u0442\u0430\u043d\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u00a0\u0441\u0432\u043e\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0446\u0438\u043a\u043b\u0430\u043c \u0438 \u043f\u043e\u0442\u043e\u043a \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432 \u0434\u043b\u044f\u00a0\u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 (\u043b\u0438\u0431\u043e \u043f\u043e\u0442\u043e\u043a \u0442\u043e\u0447\u0435\u043a \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438) \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a\u00a0\u0440\u0432\u0430\u043d\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u043d\u043a\u0430 \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u00a0\u0432\u044b\u0445\u043e\u0434\u0443 \u0448\u0430\u0433\u043e\u0432\u044b\u0445 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0437\u00a0\u0441\u0442\u0440\u043e\u044f \u043e\u0442\u00a0\u0443\u0434\u0430\u0440\u0430, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u043a\u00a0\u043f\u043e\u0440\u0447\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u043f\u043e\u0442\u0435\u0440\u0435 \u0434\u0440\u0430\u0433\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u0436\u0435\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e \u043d\u0430\u00a0\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443.\u041f\u043e\u0447\u0435\u043c\u0443\u00a0\u0436\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 C# \u0438.NET \u0441\u00a0\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u043c\u0438, \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u0438\u0437\u043c\u043e\u043c, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u00a0\u043a\u0443\u0447\u0435 \u043d\u0435\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u00a0\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f?\u041d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u00a0\u043e\u0434\u043d\u0430:\u0418\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.\u041f\u0440\u044b\u0436\u043a\u0438 \u043f\u043e\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432.\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430.\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438.\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e.\u0418\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u2011\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u00a0\u043a\u0443\u0447\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0430\u00a0\u0442\u0430\u043c \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0434\u00a0\u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438\u00a0\u0441\u043f\u0438\u0441\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u00a0\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u00a0\u0441\u0430\u043c\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0430\u00a0\u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430\u00a0\u043d\u0438\u0445, \u043e\u0442\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u00a0\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u00a0\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043f\u0440\u044b\u0433\u0430\u0442\u044c \u043e\u0442\u00a0\u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 \u0438 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u043a\u044d\u0448\u0430 (cache misses), \u0438\u0437\u2011\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043f\u043e\u0441\u0442\u0443\u043f\u044f\u0442 \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0440\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u00a0RAM.\u041f\u0440\u044b\u0436\u043a\u0438 \u043f\u043e\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u044b \u0442\u0435\u043c, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0447\u0438\u0441\u0442\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c \u043d\u0430\u00a0\u0430\u0434\u0440\u0435\u0441 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0435\u00a0\u0437\u043d\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e\u00a0JIT \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435\u00a0\u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0435\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e (\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u043e\u0434\u00a0NativeAOT \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u043e\u00a0\u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u043b\u044f\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f), \u0430\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b, \u0438\u0437\u2011\u0437\u0430 \u0447\u0435\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u00a0\u043e\u0447\u0435\u043d\u044c \u0432\u0435\u043b\u0438\u043a\u0438 (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b), \u043d\u043e\u00a0\u043e\u043d\u0438 \u0432\u043d\u043e\u0441\u044f\u0442 \u0441\u0432\u043e\u044e \u043b\u0435\u043f\u0442\u0443 \u0432\u00a0\u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u0441\u00a0\u0434\u0440\u0443\u0433\u043e\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435. \u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u00a0\u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u00a0\u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f\u0445 GC, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u00a0Gen0\u00a0\u0438 Gen1, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u00a0\u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u0441\u00a0\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, GC \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u00a0\u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Stop\u2011The\u2011World), \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043a\u0430\u043a\u00a0\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043a\u00a0\u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044e \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0441\u0442\u0430\u043d\u043e\u043a, \u043f\u0440\u0438\u0447\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u044c \u044d\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u00a0\u2014 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0440\u0435\u043c\u044f \u043f\u0430\u0443\u0437\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u00a0\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u0432\u00a0\u043a\u0443\u0447\u0435, \u043f\u0440\u0438\u00a0\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0442\u0438. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445\u00a0\u0436\u0435 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b GC. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0440\u0442\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0436\u0438\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u00a0\u043a\u0443\u0447\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0440\u0435\u0448\u0435\u0442\u043e, \u043e\u0442\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u043c\u0430\u0445\u0438 \u043a\u044d\u0448\u0430 (GC \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0443\u043f\u043b\u043e\u0442\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u0447\u0438, \u043d\u043e\u00a0\u044d\u0442\u043e \u0434\u043e\u0440\u043e\u0433\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043a\u00a0\u0442\u043e\u043c\u0443\u00a0\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u00a0\u043a\u0430\u043a\u043e\u0439\u2011\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u0430\u0448\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0436\u0438\u0432\u0443\u0442 \u0432\u00a0Large Object Heap\u00a0\u2014 \u0442\u0430\u043c \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0435\u00a0\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0432\u0441\u0435).\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437\u00a0\u0432\u0441\u0435\u0433\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e.NET \u0438 C# \u043d\u0435\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044f\u0434\u0440\u043e \u0434\u043b\u044f\u00a0RT \u0441\u0438\u0441\u0442\u0435\u043c\u044b? \u0418\u043b\u0438\u00a0\u043c\u043e\u0433\u0443\u0442?..\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u043f\u0435\u0440\u0435\u0434\u00a0\u2014 \u043c\u043e\u0433\u0443\u0442, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0441\u0430\u043c\u0438 \u0437\u0430\u00a0\u0441\u0435\u0431\u044f:\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f (Mean)\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c (Allocated)108.12\u00a0\u03bcs0\u00a0B100147.38\u00a0\u03bcs0\u00a0B1\u202f0001.81\u00a0ms0\u00a0B10\u202f00024.88\u00a0ms0\u00a0B100\u202f000251.55\u00a0ms0\u00a0B\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0442\u0435\u043d\u0434\u0430: Intel Core i5-10400F,.NET 10.0, X64\u00a0RyuJIT AVX2, BenchmarkDotNet v0.15.2.\u0412\u00a0\u0442\u0435\u0441\u0442\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u043b\u043e\u0441\u044c \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u043c \u0438\u0437 7\u00a0\u0441\u043b\u043e\u0435\u0432 10, 100, 1000, 10\u202f000\u00a0\u0438 100\u202f000\u00a0\u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430 (\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u043a\u0440\u0443\u0433\u043e\u0432\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u043f\u0438\u0434). \u041a\u0430\u043a\u00a0\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0437\u0430 1\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u043a\u043e\u043b\u043e 400\u202f000\u00a0\u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430 \u0441 0\u00a0\u0431\u0430\u0439\u0442 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043d\u0430\u00a0\u0447\u0438\u0441\u0442\u043e\u043c C# \u0438.NET 10.0\u00a0\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0438\u0445 \u0432\u00a0\u043f\u043b\u043e\u0442\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0431\u0430\u0439\u0442\u2011\u043a\u043e\u0434\u0430 \u0441\u00a0\u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430\u00a0\u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440.\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u0438\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 C# \u0438.NET 10.0\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438?\u0412\u0440\u0435\u043c\u0435\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 C#\u00a0\u0431\u044b\u043b \u00ab\u044f\u0437\u044b\u043a\u043e\u043c \u0434\u043b\u044f\u00a0\u0444\u043e\u0440\u043c\u043e\u0447\u0435\u043a \u0438 \u0432\u0435\u0431\u0430\u00bb, \u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u0438. \u0412\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043a\u043e\u043c\u0430\u043d\u0434\u0430.NET \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043d\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f\u00a0\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u043f\u043e\u0434\u00a0\u0436\u0435\u0441\u0442\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u00a0\u0436\u0435\u043b\u0435\u0437\u0430 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 NativeAOT.\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u00a0\u0442\u0438\u043f\u0443 ReadOnlyMemory&lt;char&gt;, ReadOnlySpan&lt;char&gt;, ref struct, allows ref struct, NativeMemory, StructLayout\u00a0\u2014 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0431\u0435\u0437\u00a0\u0435\u0434\u0438\u043d\u043e\u0439 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u0432\u00a0\u043a\u0443\u0447\u0435 (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0431\u0435\u0437\u00a0GC \u043f\u0430\u0443\u0437) \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043b\u043e\u0436\u0438\u043b\u0438\u0441\u044c \u0432\u00a0\u043a\u044d\u0448 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445.ReadOnlyMemory&lt;T&gt; \u0438 ReadOnlySpan&lt;T&gt; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0431\u0435\u0437\u00a0\u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, ref struct \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e\u00a0\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u0443\u0442\u0435\u043a\u0443\u0442 \u0432\u00a0\u043a\u0443\u0447\u0443 \u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0431\u043e\u043a\u0441\u0438\u043d\u0433, allow ref struct \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u00a0\u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 (\u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u00a0\u043a\u0430\u0436\u0434\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u00a0\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 NativeAOT), NativeMemory \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f\u00a0GC \u0430\u0440\u0435\u043d\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u00a0\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u0430\u043d\u043d\u044b\u0445, StructLayout \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u00a0\u043b\u0438\u043d\u0438\u0438 \u043a\u044d\u0448\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.\u0414\u0430\u0432\u0430\u0439\u0442\u0435\u00a0\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c 400\u202f000\u00a0\u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430 \u0432\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0432\u043e\u00a0\u0444\u0440\u0435\u0439\u043c\u044b \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438\u00a0\u043b\u0438\u0431\u043e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f\u00a0\u0441\u0442\u0430\u043d\u043a\u0430 \u0441\u00a0\u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u00a0GC \u0438 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430.\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 NG.Velox\u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 NG.Velox \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0438\u0437 7\u00a0\u0441\u043b\u043e\u0435\u0432:Preprocessor&lt;TInput&gt;\u00a0\u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043f\u0440\u043e\u0431\u0435\u043b\u044b, N\u2011\u043c\u0435\u0442\u043a\u0438 (\u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a G\u2011\u043a\u043e\u0434\u0430).Lexer\u00a0\u2014 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u00a0\u0442\u043e\u043a\u0435\u043d\u044b.Parser\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u044b \u0432\u00a0\u043d\u043e\u0434\u044b.Interpreter\u00a0\u2014 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043d\u043e\u0434\u044b \u0432\u043e\u00a0\u0444\u0440\u0435\u0439\u043c\u044b \u0441\u0442\u0430\u043d\u043a\u0430.Planner\u00a0\u2014 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f.Interpolator\u00a0\u2014 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0431\u043b\u043e\u043a\u0430\u043c\u0438.Postprocessor&lt;TOutput&gt;\u00a0\u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 (\u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f\u00a0\u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u0430 \u043d\u0430\u00a0\u0441\u0442\u0430\u043d\u043e\u043a,\u00a0\u043b\u0438\u0431\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0444\u0440\u0435\u0439\u043c\u043e\u0432 \u0434\u043b\u044f\u00a0\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u00a0\u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435).\u041c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u044f\u043c\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 DiagnosticBag \u0434\u043b\u044f\u00a0\u0441\u0431\u043e\u0440\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438.\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1\u00a0\u2014 \u0421\u0445\u0435\u043c\u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 NG.Velox\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430\u00a0\u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445:Zero Heap Allocation \u0432\u00a0Hot Path (\u0432\u0441\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f\u00a0\u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0436\u0438\u0432\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0\u0441\u0442\u0435\u043a\u0435).Data Oriented Design (\u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u043d\u0430\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u0436\u043d\u0435\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439).Unsafe Within, Safe Without (\u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u044b\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u043d\u043e\u00a0\u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 API \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0432\u00a0ReadOnlySpan&lt;T&gt;).\u0427\u0438\u0441\u0442\u043e\u0442\u0430 \u043e\u0442\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430\u00a0\u0447\u0438\u0441\u0442\u043e\u043c.NET \u0431\u0435\u0437\u00a0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0442\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0440\u043e\u0441\u0441\u2011\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430).\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044fUnsafe \u043a\u043e\u0434\u0412\u043d\u0443\u0442\u0440\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f unsafe \u043a\u043e\u0434 \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0437\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u0440\u0438\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e Span&lt;T&gt;\/ReadOnlySpan&lt;T&gt; \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0420\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430\u00a0\u044d\u0442\u043e \u043c\u0438\u0437\u0435\u0440\u043d\u044b\u0435 (\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u043b\u0435\u0432\u044b\u0435, \u0435\u0441\u043b\u0438 JIT \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0432\u044b\u0445\u043e\u0434\u044b \u0437\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u043a\u043e\u0434\u0430), \u043d\u043e\u00a0\u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438\u043b\u0438\u00a0\u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447\u00a0\u2014 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u044b.[MethodImpl(MethodImplOptions.AggressiveInlining)]public static unsafe void SkipWhitespaces(ref char* pCurrent, char* pEnd){    char* ptr = pCurrent;    const CharMask whitespaceMask = CharMask.Whitespace | CharMask.NewLine;    while (ptr &lt; pEnd &amp;&amp; (*ptr).Is(whitespaceMask))    {        ptr++;    }    pCurrent = ptr;}\u0415\u0434\u0438\u043d\u0430\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 (Memory Arena)MemoryArena \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 NativeMemory.Alloc \u0434\u043b\u044f\u00a0\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0433\u043e \u0434\u043b\u044f\u00a0GC \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u043b\u0435\u0436\u0430\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0439 \u0430\u0440\u0435\u043d\u044b. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u00a0ArrayPool&lt;T&gt;? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043f\u0443\u043b\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0GC, \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432\u00a0\u043f\u0443\u043b, \u0430\u00a0\u043f\u0430\u0442\u0442\u0435\u0440\u043d MemoryArena \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u00a0O(1) \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u0441\u0434\u0432\u0438\u0433\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0438 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u00a0\u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0437\u0430\u00a0\u0441\u0447\u0435\u0442 \u0441\u0431\u0440\u043e\u0441\u0430 \u043e\u0444\u0441\u0435\u0442\u0430.public unsafe struct MemoryArena : IDisposable{    private readonly byte* _memory;    private readonly int _capacity;    private int _offset;    private bool _disposed;    public MemoryArena(int capacity)    {        ArgumentOutOfRangeException.ThrowIfNegativeOrZero(capacity);        _capacity = capacity;        _offset = 0;        _memory = (byte*)NativeMemory.Alloc((nuint)capacity);    }    public readonly int Capacity    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        get =&gt; _capacity;    &#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-490149","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490149","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=490149"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490149\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=490149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=490149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=490149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}