{"id":495363,"date":"2026-09-21T07:01:18","date_gmt":"2026-09-21T07:01:18","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=495363"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=495363","title":{"rendered":"\u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 Python-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 CinderX: JIT \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044f Python \u0435\u0441\u0442\u044c \u0447\u0438\u0441\u043b\u043e: \u0432\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043e\u043d \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041c\u0435\u0440\u044f\u044e\u0442 \u0435\u0433\u043e \u043d\u0430 \u044f\u0434\u0440\u0430\u0445 &#8212; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430, \u043e\u0431\u0445\u043e\u0434 \u0434\u0435\u0440\u0435\u0432\u0430, \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u0432 \u0446\u0438\u043a\u043b\u0435. \u0421\u0435\u0440\u0432\u0438\u0441 \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0435 \u0442\u0430\u043a: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0430\u0437\u0443, \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432 numpy, \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442, \u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e, \u0432 \u043d\u0451\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f. CinderX \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043d\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. \u0414\u043e\u043b\u044f \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 &#8212; \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0438 \u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u043d\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u0430, \u00ab\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442\u00bb \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 CinderX<\/h3>\n<p>CinderX &#8212; \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043a CPython: \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041e\u043d \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 frame evaluator (\u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e CPython \u0437\u043e\u0432\u0451\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430), \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438:<\/p>\n<ul>\n<li>\n<p><strong>JIT<\/strong> &#8212; \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p><strong>Static Python<\/strong> &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 Python. \u041f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u043a\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 JIT \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430<\/strong> &#8212; \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0435 \u0444\u0430\u0437\u044b \u0441\u0431\u043e\u0440\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u043b\u0435\u0433\u0447\u0451\u043d\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u044b<\/strong> &#8212; \u0432 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u0430\u0434\u0440\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043a\u0430\u0434\u0440. \u0420\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 JIT.<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b<\/strong> &#8212; \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<h3>JIT<\/h3>\n<p>\u0412 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u043c CPython 3.14 JIT \u0443\u0436\u0435 \u0435\u0441\u0442\u044c: <code>--enable-experimental-jit<\/code> \u0438\u0437 PEP 744, \u043e\u043d \u0436\u0435 tier 2. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u0442\u043e\u0438\u0442 \u0438\u043d\u0430\u0447\u0435: \u0437\u0430\u0447\u0435\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d.<\/p>\n<h4>\u042d\u0442\u043e \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">CinderX<\/p>\n<\/th>\n<th>\n<p align=\"left\">CPython 3.14, tier 2<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u0440\u0430\u0441\u0441\u0430 \u0438\u0437 uop\u2019\u043e\u0432, \u0434\u043e 800 \u0448\u0442\u0443\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: \u0441\u0447\u0451\u0442\u0447\u0438\u043a, jit-\u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043b\u0438 <code>force_compile<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0441\u0447\u0451\u0442\u0430 \u0441 4095<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">HIR, \u0437\u0430\u0442\u0435\u043c LIR, \u043e\u0431\u0430 \u0432 SSA, HIR \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442 &#8212; \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0430 uop\u2019\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0447\u0435\u0440\u0435\u0437 asmjit<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>memcpy<\/code> \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u043e\u0432 \u043f\u043b\u044e\u0441 \u043f\u0430\u0442\u0447 \u0434\u044b\u0440\u043e\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">linear scan \u043f\u043e SSA \u0441 \u0440\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043d\u0435\u0442<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0433\u0434\u0435 \u0436\u0438\u0432\u0443\u0442 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u043a\u0430\u0434\u0440\u0430, \u0432 \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u0433<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u043e HIR, \u0431\u044e\u0434\u0436\u0435\u0442 2000 \u043e\u043f\u043a\u043e\u0434\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u0442\u0440\u0430\u0441\u0441\u044b \u0441\u043a\u0432\u043e\u0437\u044c \u0434\u043e 5 \u043a\u0430\u0434\u0440\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0441\u044b\u043b\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u0430\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0438\u0447\u0435\u0433\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">LLVM 19, \u0442\u043e\u043b\u044c\u043a\u043e clang<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>CPython: \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0438<\/h4>\n<p>\u0418\u0434\u0435\u044f copy-and-patch \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435.<\/p>\n<p>\u0412 \u0434\u0435\u0440\u0435\u0432\u0435 CPython \u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b <code>Tools\/jit\/template.c<\/code>. \u042d\u0442\u043e \u0442\u0435\u043b\u043e <strong>\u043e\u0434\u043d\u043e\u0433\u043e<\/strong> uop\u2019\u0430 (\u043c\u0438\u043a\u0440\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d \u0431\u0430\u0439\u0442\u043a\u043e\u0434), \u043e\u0431\u0451\u0440\u043d\u0443\u0442\u043e\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 <code>(frame, stack_pointer, tstate)<\/code>. \u0412\u0441\u0451, \u0447\u0442\u043e \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u043c, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e \u0434\u044b\u0440\u043a\u0430\u043c\u0438 \u0441 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438: <code>_JIT_OPARG<\/code><em>, <\/em><code>_JIT_OPERAND0<\/code>, <code>_JIT_TARGET<\/code>, <code>_JIT_CONTINUE.<\/code><\/p>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 CPython clang \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e \u0440\u0430\u0437\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 uop \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043a\u0443\u0441\u043a\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u043e\u0432. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 LLVM 19 \u0441 clang: \u0448\u0430\u0431\u043b\u043e\u043d \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <code>musttail<\/code> &#8212; \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0443 GCC.<\/p>\n<p>\u0412 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 <code>_PyJIT_Compile<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0440\u0430\u0441\u0441\u0443 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435: \u0438\u0434\u0451\u0442 \u043f\u043e \u043d\u0435\u0439, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u044b\u0440\u043a\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0430, \u043d\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043d\u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0438 \u0434\u0435\u0448\u0451\u0432\u0430\u044f.<\/p>\n<p>\u0421\u043a\u043b\u0435\u0439\u043a\u0430 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">#define PATCH_JUMP(ALIAS)                                                \\do {                                                                     \\    PATCH_VALUE(jit_func_preserve_none, jump, ALIAS);                    \\    __attribute__((musttail)) return jump(frame, stack_pointer, tstate); \\} while (0)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0430 &#8212; \u044d\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u044b\u0433\u0430\u0435\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e, \u043d\u0435 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u044f \u0441\u0442\u0435\u043a. \u0421\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0432\u044b\u0437\u043e\u0432\u0430\u0445 <code>preserve_none<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c <code>frame<\/code>, <code>stack_pointer<\/code> \u0438 <code>tstate<\/code> \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043f\u043e \u0432\u0441\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0435.<\/p>\n<p><strong>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e uop\u2019\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043c\u044f\u0442\u044c.<\/strong> \u0420\u0430\u0437 \u043a\u0430\u0436\u0434\u044b\u0439 uop &#8212; \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a, \u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e uop\u2019\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0451\u043b <code>_LOAD_FAST<\/code>, \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0435\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u0430\u0434\u0440\u0430 (\u0432 \u043f\u0430\u043c\u044f\u0442\u044c), \u043e\u0442\u043a\u0443\u0434\u0430 \u0435\u0433\u043e \u0438 \u0437\u0430\u0431\u0435\u0440\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 uop. \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e.<\/p>\n<p>\u0427\u0442\u043e copy-and-patch \u0434\u0430\u0451\u0442: \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442 \u0446\u0438\u043a\u043b \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c <code>switch<\/code> \u0438 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c. \u041f\u043b\u044e\u0441 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 <code>Python\/optimizer_analysis.c<\/code> \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u043f\u043e \u0442\u0440\u0430\u0441\u0441\u0435 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e &#8212; \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0435\u0440\u0441\u0438\u0439 \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>\u0427\u0435\u0433\u043e \u043e\u043d \u043d\u0435 \u0434\u0430\u0451\u0442: \u0443 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 uop\u2019\u043e\u0432 \u043d\u0435\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a \u043a\u0430\u0434\u0440\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u0436\u0438\u0432\u043e\u0441\u0442\u0438. \u0421\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435: \u0431\u0435\u0440\u0451\u0442 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0431\u0435\u0441\u0441\u043c\u0435\u0440\u0442\u043d\u0430.<\/p>\n<p>\u0422\u0440\u0430\u0441\u0441\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a. <code>translate_bytecode_to_trace<\/code> \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442 \u0435\u0451 \u0432\u0434\u043e\u043b\u044c \u0433\u043e\u0440\u044f\u0447\u0435\u0433\u043e \u043f\u0443\u0442\u0438 \u043e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0430\u0437\u0432\u0438\u043b\u043a\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f. \u0423\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0441 1000 \u0438 \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u043e\u043b\u044e \u0441\u043e\u0432\u043f\u0430\u0432\u0448\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0438\u0436\u0435 333 &#8212; \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0440\u0430\u0441\u0441\u0430 \u043d\u0435 \u0434\u043b\u0438\u043d\u043d\u0435\u0435 800 uop\u2019\u043e\u0432, \u0432\u0433\u043b\u0443\u0431\u044c &#8212; \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u0438 \u043a\u0430\u0434\u0440\u043e\u0432.<\/p>\n<p>\u0426\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0443\u0442\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a &#8212; \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441\u0442\u0430\u0434\u0438\u0439, \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0438\u0434\u043d\u043e, \u0432\u043e \u0447\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0441\u0447\u0451\u0442\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0438\u0437 \u0441\u0435\u043c\u0438 \u0441\u0442\u0440\u043e\u043a:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f6\/67c\/c7e\/2f667cc7e938361daaca53f294a4dd80.png\" alt=\"\u041f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 JIT \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e CPython 3.14\" width=\"2325\" height=\"1544\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2f6\/67c\/c7e\/2f667cc7e938361daaca53f294a4dd80.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f6\/67c\/c7e\/2f667cc7e938361daaca53f294a4dd80.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 JIT \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e CPython 3.14<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0448\u0430\u0433\u0438. \u041f\u043e\u0441\u043b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0442\u0440\u0430\u0441\u0441\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 47 \u043c\u0438\u043a\u0440\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u0437 78. \u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0441\u043d\u044f\u0442\u043e\u0433\u043e &#8212; <code>_SET_IP<\/code> \u0438 <code>_CHECK_VALIDITY<\/code>, \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0438 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0435, \u0430 \u043d\u0435 \u0441\u0430\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041d\u043e \u0437\u0430\u043e\u0434\u043d\u043e \u043e\u043d \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0438\u043f\u044b: \u043f\u0435\u0440\u0435\u0434 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0432\u0443\u0445, \u0430 \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c &#8212; \u043d\u0438 \u043e\u0434\u043d\u043e\u0439.<\/p>\n<h4>CinderX: \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440<\/h4>\n<p>\u0415\u0434\u0438\u043d\u0438\u0446\u0430 &#8212; \u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c: \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043c\u0435\u0442\u043e\u0434, \u043b\u044f\u043c\u0431\u0434\u0430. \u041d\u0435 \u0442\u0440\u0430\u0441\u0441\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c: \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435.<\/p>\n<p><strong>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0451\u043d \u0438 \u0442\u0438\u043f\u043e\u0432 (<\/strong><code><strong>Preloader<\/strong><\/code><strong>).<\/strong> \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0430\u0437\u0430, \u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432\u043e \u0432\u0441\u0451\u043c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0435, \u0433\u0434\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c Python. \u041e\u043d\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u0434 <code>LOAD_GLOBAL<\/code>, \u0442\u0438\u043f\u044b \u0438 \u0446\u0435\u043b\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0434\u043b\u044f \u043e\u043f\u043a\u043e\u0434\u043e\u0432 Static Python. \u041b\u044e\u0431\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 Python \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0430 \u0444\u0430\u0437\u0430 \u0438\u0434\u0451\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434 GIL, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p><strong>\u0411\u0430\u0439\u0442\u043a\u043e\u0434 \u0432 HIR.<\/strong> \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 CPython \u0441\u0442\u0435\u043a\u043e\u0432\u0430\u044f, \u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043f\u043e\u0434 \u043d\u0435\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e: \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0431\u0435\u0440\u0451\u0442 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043b\u0430\u0434\u0451\u0442 \u0442\u0443\u0434\u0430 \u0436\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0435\u0442 \u0438\u043c\u0451\u043d. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u0434\u0430 \u043b\u0438\u0448\u043d\u044e\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043b\u0438\u0448\u043d\u044f\u044f, \u0430 \u043b\u044e\u0431\u043e\u0435 \u0442\u0430\u043a\u043e\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043a\u0442\u043e \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\u00bb. \u041a \u0441\u0442\u0435\u043a\u0443 \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0432 \u0444\u043e\u0440\u043c\u0443, \u0433\u0434\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0438\u043c\u044f, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0432\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u0438 \u0432\u044b\u0445\u043e\u0434\u044b, \u0430 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0435\u0449\u0451 \u0438 \u0442\u0438\u043f. \u0422\u0438\u043f \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a \u0436\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043a\u0430\u043a \u0438\u043c\u044f: \u0440\u0430\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e JIT \u0443\u0431\u0438\u0440\u0430\u0435\u0442 (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430, \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0441\u0441\u044b\u043b\u043e\u043a), \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0442\u0438\u043f \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c HIR.<\/p>\n<p>\u0421\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043e\u043d \u043d\u0435 \u0438\u0437 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430, \u0430 \u0438\u0437 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 <strong>\u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0431\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 CPython.<\/strong> \u041a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e <code>a + b<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043b\u044b\u0435, \u043e\u043d \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u043f\u043a\u043e\u0434 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <code>BINARY_OP_ADD_INT<\/code>. \u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c HIR \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u043f\u043a\u043e\u0434, \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0442\u0438\u043f\u0430:<\/p>\n<pre><code class=\"cpp\">case BINARY_OP_ADD_INT:case BINARY_OP_MULTIPLY_INT:case BINARY_OP_SUBTRACT_INT:  tc.emit&lt;GuardType&gt;(left, TLongExact, left, tc.frame);  tc.emit&lt;GuardType&gt;(right, TLongExact, right, tc.frame);  break;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c HIR \u0443\u0437\u043d\u0430\u0451\u0442 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0434\u0432\u0435: \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u043d\u0430\u0434 <code>int<\/code>, <code>float<\/code> \u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439 \u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439, <code>LOAD_ATTR_MODULE<\/code>. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u043a\u043e\u0434\u044b \u043e\u043d \u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043e\u0431\u0449\u0438\u0435: \u0432 HIR \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432 \u043e\u0445\u0440\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 &#8212; <code>GuardType<\/code> \u0438\u0437 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0432\u044b\u0448\u0435.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445: <strong>JIT \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0443\u0441\u043f\u0435\u043b \u0443\u0432\u0438\u0434\u0435\u0442\u044c.<\/strong> \u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u0435 \u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: HIR \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e <code>GuardType<\/code>.<\/p>\n<p><strong>\u041f\u0440\u043e\u0445\u043e\u0434\u044b \u043f\u043e HIR.<\/strong> \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0432 SSA \u0438 \u043f\u0440\u043e\u0442\u044f\u0436\u043a\u0430 \u0442\u0438\u043f\u043e\u0432. \u0412 SSA \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u043c\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u00ab\u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u043e\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb &#8212; \u043e\u0434\u0438\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0430 \u043d\u0435 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0433\u0440\u0430\u0444\u0443. \u041d\u0430 \u044d\u0442\u043e\u043c \u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044b \u043d\u0438\u0436\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439: \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439, \u0441\u043d\u044f\u0442\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0442\u0438\u043f\u0430, \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 phi-\u0443\u0437\u043b\u043e\u0432, \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u0433, \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0447\u0438\u0441\u0442\u043a\u0430 \u0433\u0440\u0430\u0444\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0418\u043d\u043b\u0430\u0439\u043d\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0431\u044e\u0434\u0436\u0435\u0442\u0443: \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#8212; \u0447\u0438\u0441\u043b\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043e\u043f\u043a\u043e\u0434\u043e\u0432, \u043b\u0438\u043c\u0438\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 2000. \u041d\u0430\u0431\u0440\u0430\u043b\u0438 \u0431\u044e\u0434\u0436\u0435\u0442, \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435 \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043c.<\/p>\n<p>\u041f\u043e\u0447\u0442\u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0438\u0434\u0451\u0442 <code><strong>RefcountInsertion<\/strong><\/code>. \u0422\u0430\u043a \u043f\u043e\u0437\u0434\u043d\u043e &#8212; \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0438 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438: \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0445\u043e\u0434\u0430\u0445. \u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 CinderX \u043d\u0435 \u0437\u0430\u0448\u0438\u0442 \u0432 \u043e\u043f\u043a\u043e\u0434\u044b: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0441\u0430\u043c, \u043f\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u0430\u044f HIR-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0438 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0440\u0430\u0434\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438. \u0417\u0430\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442 <code>incref<\/code>\/<code>decref<\/code> \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0445 \u043f\u0430\u0440\u044b.<\/p>\n<p><strong>HIR \u0432 LIR \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/strong> \u041f\u043e HIR \u043d\u0435\u043b\u044c\u0437\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b: \u043e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u0440\u043e \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043b\u043e\u0436\u0438\u0442\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0438\u043f, \u043f\u043e\u0437\u0432\u0430\u0442\u044c), \u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u0443\u0436\u043d\u0430 \u0444\u043e\u0440\u043c\u0430, \u0433\u0434\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0443\u0436\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0435, \u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0435\u0449\u0451 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e: \u0442\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044e \u0435\u0441\u0442\u044c \u0447\u0442\u043e \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c. \u042d\u0442\u043e LIR &#8212; \u0442\u043e\u043d\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c, \u0442\u043e\u0436\u0435 \u0432 SSA. \u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0434\u0430\u0451\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u044f \u043f\u0440\u0438 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0436\u0438\u0437\u043d\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0447\u0430\u0441\u0442\u0438. \u0414\u0430\u043b\u044c\u0448\u0435 x64 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 asmjit.<\/p>\n<p><strong>\u0414\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f.<\/strong> \u0420\u0430\u0437 \u043a\u043e\u0434 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0445\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043d\u0443\u0436\u0435\u043d \u0432\u044b\u0445\u043e\u0434. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 HIR \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 <code>FrameState<\/code> &#8212; \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u043f\u043a\u043e\u0434\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0435\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432, \u0441\u0442\u0435\u043a \u0431\u043b\u043e\u043a\u043e\u0432. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>Snapshot<\/code> \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u0442\u043e\u0447\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. <code>Guard<\/code> \u0431\u0435\u0440\u0451\u0442 \u0431\u0443\u043b\u0435\u0432 \u043e\u043f\u0435\u0440\u0430\u043d\u0434 \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 <code>FrameState<\/code> \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043d\u0438\u043c\u043a\u0430.<\/p>\n<p>\u0412 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 <code>Guard<\/code> &#8212; \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0443. \u0417\u0430\u0433\u043b\u0443\u0448\u0435\u043a \u0442\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f: \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 (\u043a\u043b\u0430\u0434\u0451\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445), \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e (\u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u044d\u043f\u0438\u043b\u043e\u0433\u0430) \u0438 \u043e\u0434\u0438\u043d \u0442\u0440\u0430\u043c\u043f\u043b\u0438\u043d \u043d\u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c &#8212; \u043e\u043d \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043d\u0430 \u0441\u0442\u0435\u043a, \u0437\u043e\u0432\u0451\u0442 <code>prepareForDeopt<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e <code>FrameState<\/code> \u0441\u043e\u0431\u0440\u0430\u0442\u044c <code>_PyInterpreterFrame<\/code>, \u0438 \u043e\u0442\u0434\u0430\u0451\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 <code>resumeInInterpreter<\/code>.<\/p>\n<p>\u041f\u0443\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/419\/acd\/891\/419acd8910a8cc5c1587dd3004c42556.png\" alt=\"\u041f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 JIT CinderX\" width=\"2325\" height=\"1809\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/419\/acd\/891\/419acd8910a8cc5c1587dd3004c42556.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/419\/acd\/891\/419acd8910a8cc5c1587dd3004c42556.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 JIT CinderX<\/figcaption><\/div>\n<\/figure>\n<p>\u0410 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0445\u0440\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u0441\u043e\u0448\u043b\u0430\u0441\u044c &#8212; \u043e\u0442 \u0434\u0432\u0443\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u0442\u0435\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b0d\/731\/1b6\/b0d7311b61da5e6a8fd92408b20ee173.png\" alt=\"\u041f\u0443\u0442\u044c \u0434\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438\" width=\"2325\" height=\"794\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b0d\/731\/1b6\/b0d7311b61da5e6a8fd92408b20ee173.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b0d\/731\/1b6\/b0d7311b61da5e6a8fd92408b20ee173.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0443\u0442\u044c \u0434\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u043e\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 <code>testb<\/code> \u0438 \u043d\u0435\u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c.<\/p>\n<h4>\u0427\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0443\u0431\u0438\u0440\u0430\u0435\u0442<\/h4>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442.<\/p>\n<p>Copy-and-patch \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 &#8212; \u043e\u043d\u0430 \u0432\u044b\u0438\u0433\u0440\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0440\u0430\u0444\u0438\u043a \u0432 \u043f\u0430\u043c\u044f\u0442\u044c, \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0441\u044b\u043b\u043e\u043a &#8212; \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442: \u0432\u0441\u0451 \u044d\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u0430\u043a\u0438\u043c \u0436\u0435.<\/p>\n<p>CinderX \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0441\u044b\u043b\u043e\u043a, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0437\u043d\u0430\u0435\u0442 \u0442\u0438\u043f\u044b. \u0410 \u0437\u043d\u0430\u0435\u0442 \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u0441\u043f\u0435\u043b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440: <code>int<\/code>, <code>float<\/code>, <code>str<\/code>, \u0441\u043f\u0438\u0441\u043e\u043a, \u043a\u043e\u0440\u0442\u0435\u0436, \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u0414\u043b\u044f \u043f\u043e\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u0435\u0448.<\/p>\n<h4>\u0413\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0430\u043c \u043c\u043e\u043c\u0435\u043d\u0442, \u0430 \u043d\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043f\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0443, \u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u0441\u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#8212; \u00ab\u0416\u0438\u0437\u043d\u0438\u00bb \u043d\u0430 \u043f\u043e\u043b\u0435 96\u00d796.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/af2\/e29\/980\/af2e299809d417cbe8904c9ec2f415c5.png\" alt=\"\u0422\u0438\u043f\u044b \u0431\u0435\u0437 JIT - \u0440\u0435\u0433\u0440\u0435\u0441\u0441 \u0432 3.5 \u0440\u0430\u0437\u0430, \u0442\u0438\u043f\u044b \u0441 JIT - 5.6 \u0440\u0430\u0437\u0430 \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430\" width=\"1341\" height=\"851\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/af2\/e29\/980\/af2e299809d417cbe8904c9ec2f415c5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/af2\/e29\/980\/af2e299809d417cbe8904c9ec2f415c5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0422\u0438\u043f\u044b \u0431\u0435\u0437 JIT &#8212; \u0440\u0435\u0433\u0440\u0435\u0441\u0441 \u0432 3.5 \u0440\u0430\u0437\u0430, \u0442\u0438\u043f\u044b \u0441 JIT &#8212; 5.6 \u0440\u0430\u0437\u0430 \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0438\u043d\u044f\u044f \u043b\u0438\u043d\u0438\u044f: \u0434\u0432\u0435\u0441\u0442\u0438 \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u043f\u043e 41.9 \u043c\u0441, \u043f\u043e\u0442\u043e\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043f\u043e\u0440\u043e\u0433\u0430. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0438\u0434\u0451\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f, \u043e\u043d \u0441\u0442\u043e\u0438\u0442 6.2 \u043c\u0441, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043a\u0430 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 2.13 \u043c\u0441. \u041e\u0431\u0440\u044b\u0432 \u0432 \u0434\u0435\u0432\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0440\u0430\u0437, \u0441\u0442\u0443\u043f\u0435\u043d\u044c\u043a\u043e\u0439, \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0415\u0451 \u043b\u0435\u0432\u0430\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 &#8212; \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0442\u0438\u043f\u044b \u0431\u0435\u0437 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438: \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0443\u0436\u0435 \u0441\u0442\u043e\u044f\u0442, \u0430 \u043f\u043e\u0440\u043e\u0433 \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442.<\/p>\n<p>\u0414\u0432\u0435 \u0441\u0442\u043e\u043a\u043e\u0432\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0438\u0434\u0443\u0442 \u0440\u044f\u0434\u043e\u043c. \u0421\u0442\u043e\u043a CPython 3.14 &#8212; 11.89 \u043c\u0441, \u043e\u043d \u0436\u0435 \u0441 tier 2 (<code>--enable-experimental-jit<\/code>) &#8212; 10.46 \u043c\u0441, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 JIT CPython \u0434\u0430\u0451\u0442 \u0437\u0434\u0435\u0441\u044c 1.14 \u0440\u0430\u0437\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430 \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u043d\u044c\u0448\u0435: \u0441 <code>PYTHON_JIT=0<\/code> \u0441\u0431\u043e\u0440\u043a\u0430 \u0441 tier 2 \u0438\u0434\u0451\u0442 11.54 \u043c\u0441, \u0442\u043e \u0435\u0441\u0442\u044c 1.10 \u0440\u0430\u0437\u0430.<\/p>\n<p>\u0421\u0442\u0443\u043f\u0435\u043d\u044c\u043a\u0438 \u0443 tier 2 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u043d\u0435\u0442 \u0432\u043e\u0432\u0441\u0435. \u0415\u0433\u043e \u043f\u043e\u0440\u043e\u0433 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c, \u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0446\u0438\u043a\u043b \u043f\u043e 9216 \u043a\u043b\u0435\u0442\u043a\u0430\u043c \u0434\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 4095 \u0437\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u0432\u044b\u0437\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0435\u043b\u0451\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f \u0438\u0434\u0451\u0442 \u043d\u0438\u0436\u0435 \u0441\u0435\u0440\u043e\u0439 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430. \u0412\u0438\u0434\u043d\u0430 \u0437\u0430\u0442\u043e \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u0442\u0443\u043f\u0435\u043d\u044c\u043a\u0430, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0441\u0442\u043e\u043a\u0430: \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0435\u043c\u044c \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438\u0434\u0443\u0442 \u043f\u043e 15.4 \u043c\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0435\u0449\u0451 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u043f\u043a\u043e\u0434\u044b \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435. \u0418 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e tier 2 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043d\u0435\u0447\u0435\u043c: \u0438\u043d\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0446\u0438\u0438 \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0432\u043e\u0432\u0441\u0435. <code>sys._<\/code><a href=\"http:\/\/jit.is\" rel=\"noopener nofollow\"><code>jit.is<\/code><\/a><code>_enabled()<\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0440\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, <code>is_available()<\/code> &#8212; \u043f\u0440\u043e \u0441\u0431\u043e\u0440\u043a\u0443, \u0430 <code>is_active()<\/code> &#8212; \u043f\u0440\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u0430\u0434\u0440 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430, \u043d\u043e \u043d\u0435 \u043f\u0440\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<h4>\u0414\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043d\u0435 \u0436\u0434\u0451\u0442\u0435<\/h4>\n<p>\u0414\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043c\u043d\u044f\u0442, \u044d\u0442\u043e \u043f\u043e\u0434\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b: \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430 \u0446\u0435\u043b\u044b\u0445, \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438 <code>Decimal<\/code>, \u043a\u0430\u0434\u0440 \u0443\u0448\u0451\u043b \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430 \u0438 \u043b\u0435\u0447\u0438\u0442\u0441\u044f \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u043e\u0439 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435. \u0414\u043e\u0440\u043e\u0433\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0430\u044f &#8212; \u0442\u0430, \u0433\u0434\u0435 \u043e\u0445\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b \u043d\u0435 \u0436\u0434\u0451\u0442\u0435 \u0432\u043e\u0432\u0441\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u043e\u0434 \u043d\u0435 \u0432\u0430\u0448.<\/p>\n<p><code><strong>exit<\/strong><\/code> \u0443 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 <code>next(self.gen)<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 <code>try<\/code>, \u043b\u043e\u0432\u0438\u0442 <code>StopIteration<\/code> &#8212; \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 <code>with<\/code> \u0434\u0430\u0451\u0442 \u0434\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0441 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 <code>UnhandledException<\/code>. \u041d\u0435 \u043e\u0434\u043d\u0443 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 \u0431\u043b\u043e\u043a.<\/p>\n<p>\u0412 \u0444\u043e\u0440\u043a\u0435 \u044d\u0442\u043e \u043d\u0435 \u0447\u0438\u043d\u0438\u0442\u0441\u044f: <code>contextlib.py<\/code> \u043f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u043e \u0441\u0442\u043e\u043a\u043e\u0432\u044b\u043c, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u043c\u0435\u043d\u044b <code><strong>exit<\/strong><\/code> \u0432 \u0434\u0435\u0440\u0435\u0432\u0435 \u043d\u0435\u0442. \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043a\u043e\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0435 \u043f\u0438\u0441\u0430\u043b\u0438 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u0432\u0430\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0431\u043b\u043e\u043a\u043e\u0432 <code>with<\/code>.<\/p>\n<p>\u0412\u044b\u0445\u043e\u0434 \u0432 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c, \u043d\u043e \u043d\u0435 \u0432 <code>contextlib<\/code>. \u0412 <code><strong>static<\/strong><\/code> \u043b\u0435\u0436\u0438\u0442 \u0441\u0432\u043e\u0439 <code>ContextDecorator<\/code> &#8212; \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u0431\u0435\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u043d\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438: \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440 \u043e\u043d \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c, \u0430 \u0442\u0435\u043b\u043e \u0434\u0435\u043a\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 <code>with &lt;\u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440&gt;._recreate_cm():<\/code> \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0451. \u041d\u0438 \u043e\u0431\u0451\u0440\u0442\u043a\u0438, \u043d\u0438 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430, \u043d\u0438 \u0435\u0434\u0438\u043d\u043e\u0439 \u0434\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0438 \u0438\u0437 \u043d\u0435\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f: \u0442\u0430\u043c \u0442\u0443 \u0436\u0435 \u0440\u043e\u043b\u044c \u0438\u0433\u0440\u0430\u0435\u0442 C-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u0430 \u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0441 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u0442\u0438\u043f\u0430.<\/p>\n<h4>\u0423 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b JIT \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043b\u043e<\/h4>\n<p>\u041a\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 &#8212; \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442: <code>force_compile<\/code> \u043d\u0430 <code>async def<\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 <code>True<\/code>, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u0434\u0430\u0451\u0442 920 \u0431\u0430\u0439\u0442 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u0437\u0430 \u0434\u0432\u0435 \u0442\u044b\u0441\u044f\u0447\u0438 \u0437\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043d\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0438 \u043e\u0434\u0438\u043d. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a <code>async<\/code> \u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0435\u0442.<\/p>\n<p>\u0412 <code>await f(x)<\/code> \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0435\u0451 \u0442\u0435\u043b\u0430 \u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u043f\u0440\u043e\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 \u0446\u0438\u043a\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0442\u043e\u0440\u0443\u044e.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u043d\u0441 \u043d\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0441\u0442\u043e\u043a<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0441\u0442\u043e\u043a, tier 2<\/p>\n<\/th>\n<th>\n<p align=\"left\">CinderX, JIT \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/p>\n<\/th>\n<th>\n<p align=\"left\">CinderX + JIT<\/p>\n<\/th>\n<th>\n<p align=\"left\">Static Python + JIT<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u0435\u043b\u043e 64 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">2525<\/p>\n<\/td>\n<td>\n<p align=\"left\">2024<\/p>\n<\/td>\n<td>\n<p align=\"left\">2909<\/p>\n<\/td>\n<td>\n<p align=\"left\">1975<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>await<\/code>, \u043f\u0443\u0441\u0442\u043e\u0435 \u0442\u0435\u043b\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">111<\/p>\n<\/td>\n<td>\n<p align=\"left\">113<\/p>\n<\/td>\n<td>\n<p align=\"left\">185<\/p>\n<\/td>\n<td>\n<p align=\"left\">187<\/p>\n<\/td>\n<td>\n<p align=\"left\">231<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>await<\/code>, \u0442\u0435\u043b\u043e 8 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">396<\/p>\n<\/td>\n<td>\n<p align=\"left\">375<\/p>\n<\/td>\n<td>\n<p align=\"left\">528<\/p>\n<\/td>\n<td>\n<p align=\"left\">405<\/p>\n<\/td>\n<td>\n<p align=\"left\">247<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>await<\/code>, \u0442\u0435\u043b\u043e 64 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">2567<\/p>\n<\/td>\n<td>\n<p align=\"left\">2102<\/p>\n<\/td>\n<td>\n<p align=\"left\">2986<\/p>\n<\/td>\n<td>\n<p align=\"left\">2059<\/p>\n<\/td>\n<td>\n<p align=\"left\">340<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>await<\/code> \u0441 \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">2393<\/p>\n<\/td>\n<td>\n<p align=\"left\">2474<\/p>\n<\/td>\n<td>\n<p align=\"left\">2970<\/p>\n<\/td>\n<td>\n<p align=\"left\">3002<\/p>\n<\/td>\n<td>\n<p align=\"left\">2999<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u0443\u0441\u0442\u0430\u044f \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 185 \u043d\u0441 \u0434\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 187 \u043f\u043e\u0441\u043b\u0435. \u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 &#8212; 2970 \u0438 3002. \u0418 \u0442\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043a\u043e\u0434 asyncio \u043d\u0430 C, \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u043f\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0442\u0430\u043c \u043d\u0435\u0442, \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 JIT \u043e\u0431\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u0447\u0443\u0442\u044c \u043f\u043e\u0440\u0442\u0438\u0442.<\/p>\n<p>\u0422\u0435\u043b\u043e \u043e\u043d \u0431\u0435\u0440\u0451\u0442: 2986 \u043f\u0440\u043e\u0442\u0438\u0432 2059 \u043d\u0441, \u0432 1.45 \u0440\u0430\u0437\u0430. \u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 \u0442\u0435\u043c \u0436\u0435 \u0442\u0435\u043b\u043e\u043c \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435, \u0432 1.47 \u0440\u0430\u0437\u0430, \u0438 \u0447\u0435\u043c \u043b\u0435\u0433\u0447\u0435 \u0442\u0435\u043b\u043e, \u0442\u0435\u043c \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u044b\u0432: \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0443 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b 1.30, \u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 1.66. \u0421\u044a\u0435\u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u043e\u0442\u0438\u0432 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e CPython \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0445\u0443\u0436\u0435. \u041d\u0430 \u0442\u0435\u043b\u0435 \u0432 64 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 JIT \u043e\u0442\u044b\u0433\u0440\u044b\u0432\u0430\u0435\u0442 1.25 \u0440\u0430\u0437\u0430: \u0447\u0430\u0441\u0442\u044c \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u0430\u043c\u0438\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0437 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043e\u0440\u043e\u0436\u0435 \u0441\u0442\u043e\u043a\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0410 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0435 \u043d\u0430\u0434\u0431\u0430\u0432\u043a\u0430 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f: 111 \u043d\u0441 \u0443 \u0441\u0442\u043e\u043a\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 187 \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c. \u0421\u043e \u0441\u0442\u043e\u043a\u043e\u043c, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0441\u043e \u0441\u0432\u043e\u0438\u043c JIT, \u0440\u0430\u0437\u0440\u044b\u0432\u0430 \u043d\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c: \u043d\u0430 \u0442\u0435\u043b\u0435 \u0432 64 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 2102 \u043f\u0440\u043e\u0442\u0438\u0432 2059 \u043d\u0441, \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0438 tier 2 \u0438 \u0432\u043e\u0432\u0441\u0435 \u0432\u043f\u0435\u0440\u0435\u0434\u0438 &#8212; 375 \u043f\u0440\u043e\u0442\u0438\u0432 405.<\/p>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430: \u043d\u0430 \u043d\u0435\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0435 \u0441 \u0433\u043e\u0440\u044f\u0447\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 \u0441\u0442\u043e\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u0433\u043e\u043d\u044f\u0435\u0442 CinderX \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e, \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0438 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0438 \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<p>\u0411\u0435\u0437 JIT \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0430 &#8212; 539 \u043d\u0441 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u043c \u0442\u0435\u043b\u0435 \u0438 11.3 \u043c\u043a\u0441 \u043d\u0430 \u0442\u0435\u043b\u0435 \u0432 64 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 2.9 \u0438 \u0432 3.8 \u0440\u0430\u0437\u0430 \u0445\u0443\u0436\u0435 \u043d\u0435\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439: \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441, \u0447\u0442\u043e \u0438 \u0432\u0435\u0437\u0434\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435. \u041f\u043e\u0434 JIT &#8212; 231 \u0438 340 \u043d\u0441. \u0428\u0435\u0441\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0430 \u0441\u0442\u043e\u044f\u0442 109 \u043d\u0441, \u043f\u043e 1.7 \u043d\u0441 \u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e, \u0430 \u043e\u0431\u0432\u044f\u0437\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044d\u0442\u043e \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u0441\u0442\u043e\u0438\u0442 231 \u043d\u0441, \u0432\u0434\u0432\u043e\u0435 \u0434\u043e\u0440\u043e\u0436\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u044b, \u0438 \u044d\u0442\u0430 \u043e\u0431\u0432\u044f\u0437\u043a\u0430 \u043b\u0435\u0436\u0438\u0442 \u043d\u0435 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0435.<\/p>\n<p>\u041d\u0430 \u0442\u0435\u043b\u0435 \u0432 64 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0432 7.5 \u0440\u0430\u0437\u0430, \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0438 &#8212; \u0432 1.6, \u0430 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u043d\u0430 \u0432\u0434\u0432\u043e\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435: 231 \u043d\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 111. \u0422\u0438\u043f\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043e\u0442\u0431\u0438\u0432\u0430\u0442\u044c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043d\u0430\u0434\u0431\u0430\u0432\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043b\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0435\u043b: \u043e\u0434\u0438\u043d <code>await<\/code>, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0434\u0430\u044e\u0449\u0438\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0446\u0438\u043a\u043b\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0441\u0442\u043e\u0438\u0442 \u043e\u043a\u043e\u043b\u043e 2.6 \u043c\u043a\u0441 \u0441\u0432\u0435\u0440\u0445 \u0442\u0435\u043b\u0430 &#8212; \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0441\u0435\u043c\u044c \u043f\u043e\u043b\u043d\u044b\u0445 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0441 \u0442\u0435\u043b\u043e\u043c \u0432 64 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0430\u0437\u0443, \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0438 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u0434\u0440\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0442\u0430\u043c \u0441\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0442\u0430\u043a \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0442.<\/p>\n<p>\u041e\u0434\u043d\u0430 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043d\u0430\u043b\u0435\u0442\u0438\u0442\u0435 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u0447\u0430\u0441. \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0443 <code>async def<\/code> \u043f\u043e\u0434 JIT \u043b\u043e\u043c\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u043b\u0447\u0430: \u0432\u044b\u0437\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0443, \u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 <code>int<\/code>, \u0438 <code>await<\/code> \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 <code>TypeError: 'int' object can't be awaited<\/code>.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">JIT<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0432\u044b\u0437\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\"><code>await<\/code><\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int64<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">coroutine<\/p>\n<\/td>\n<td>\n<p align=\"left\">84<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int64<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043a\u043b\u044e\u0447\u0451\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">int<\/p>\n<\/td>\n<td>\n<p align=\"left\">TypeError<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">coroutine<\/p>\n<\/td>\n<td>\n<p align=\"left\">84<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043a\u043b\u044e\u0447\u0451\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">coroutine<\/p>\n<\/td>\n<td>\n<p align=\"left\">84<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 <code>await<\/code> \u0441\u0442\u043e\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u0430\u0441\u0441\u0435\u0440\u0442\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430: <code>Only primitive numeric types should be boxed<\/code>. \u041b\u0435\u0447\u0438\u0442\u0441\u044f \u0431\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 &#8212; \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c <code>int<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>int64<\/code> \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>box()<\/code> \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435. \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438.<\/p>\n<h4>\u0420\u0435\u0436\u0438\u043c\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0444\u043b\u0430\u0433\u0438<\/h4>\n<p>\u0420\u0435\u0436\u0438\u043c\u044b: <code>auto()<\/code> \u043f\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, <code>compile_after_n_calls(n)<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u043e\u043b\u044c, <code>force_compile<\/code> \u0438 <code>lazy_compile<\/code> \u043f\u043e\u0448\u0442\u0443\u0447\u043d\u043e, <code>precompile_all(workers)<\/code> \u043f\u0430\u0447\u043a\u043e\u0439. \u0427\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; jit-\u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0444\u0430\u0439\u043b\u043e\u043c \u0441 wildcards.<\/p>\n<p>\u0412\u0441\u0451 \u0442\u043e \u0436\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u0430\u043c\u0438 <code>-X cinderx-jit-*<\/code>, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>CINDERX_JIT_*<\/code>. \u0412 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 JIT \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c, \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u043e\u043a \u043a\u043e\u0434\u0430. \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a &#8212; \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u0434\u0435\u0432\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u0444\u043b\u0430\u0433\u043e\u0432, \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438 &#8212; \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0441\u0430\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c:<\/p>\n<pre><code class=\"bash\">python -X cinderx-jit-help -c 'import cinderx; cinderx.init()'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>cinderx.set_adaptive_delay(n)<\/code> \u0438 <code>cinderx.delay_adaptive(bool)<\/code> \u043b\u0435\u0436\u0430\u0442 \u043d\u0435 \u0432 jit-\u043c\u043e\u0434\u0443\u043b\u0435, \u0430 \u0432 \u0441\u0430\u043c\u043e\u043c <code>cinderx<\/code>. \u041e\u043d\u0438 \u0434\u0432\u0438\u0433\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0433, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u043a\u043e\u0434\u044b, \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u0435\u0442 \u0433\u043e\u0440\u044f\u0447\u0435\u0439. \u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u043e\u0440\u043e\u0433 \u0440\u0430\u0432\u0435\u043d \u0432\u043e\u0441\u044c\u043c\u0438\u0434\u0435\u0441\u044f\u0442\u0438. \u0420\u044b\u0447\u0430\u0433 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u043d\u043e \u043e\u043d \u043f\u0440\u043e \u0442\u043e \u0436\u0435: \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u043f\u043a\u043e\u0434\u044b, \u0437\u043d\u0430\u0447\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0442\u0438\u043f\u0430 &#8212; \u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c\u0438 \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f. \u041d\u0430 \u0441\u0447\u0451\u0442\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043e\u0440\u043e\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432: 6.09 \u043c\u0441 \u0431\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 4.35 \u043f\u043e\u0441\u043b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u0430\u0447\u043a\u043e\u0439: 200 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0448\u0442\u0443\u0447\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <code>force_compile<\/code> &#8212; 368 \u043c\u0441, \u0442\u0435 \u0436\u0435 200 \u0447\u0435\u0440\u0435\u0437 <code>precompile_all(workers=4)<\/code> &#8212; 88 \u043c\u0441, \u0432\u0447\u0435\u0442\u0432\u0435\u0440\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u0437\u044b \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u043c\u0451\u043d.<\/p>\n<h4>\u0427\u0435\u043c\u0443 \u0438\u0437 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0435\u0440\u0438\u0442\u044c<\/h4>\n<p>JIT \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0437\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442 \u0432\u044b\u0448\u043b\u043e \u0438 \u0447\u0442\u043e \u0443\u0432\u0438\u0434\u0435\u043b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430. \u0427\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0435 \u043d\u0430 \u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0437\u0430\u0434\u0430\u0451\u0442\u0435: <code>is_enabled()<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u0440\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 \u043d\u0435 \u043f\u0440\u043e \u0432\u0430\u0448 \u043a\u043e\u0434, \u0430 <code>is_static_module(mod)<\/code> \u043d\u0430\u0434\u043e \u0431\u0440\u0430\u0442\u044c \u0438\u0437 <code><strong>static<\/strong><\/code>, \u0430 \u043d\u0435 \u0438\u0437 jit-\u043c\u043e\u0434\u0443\u043b\u044f, \u0438\u043d\u0430\u0447\u0435 \u0431\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u0441 <code>import <strong>static<\/strong><\/code> \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Python \u0438 \u0432\u044b \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442\u0435.<\/p>\n<p>\u0418 \u0433\u043b\u0430\u0432\u043d\u043e\u0435: <strong>\u0442\u043e\u0447\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430, \u0443\u0441\u043f\u0435\u0432\u0448\u0430\u044f \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u043e\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u043e\u0441\u043b\u0435 <\/strong><code><strong>force_compile()<\/strong><\/code><strong> \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0437\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440.<\/strong> \u041f\u0440\u0438 \u044d\u0442\u043e\u043c <code>is_jit_compiled()<\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 <code>True<\/code>, <code>get_compiled_size()<\/code> \u043e\u0442\u0434\u0430\u0451\u0442 2408 \u0431\u0430\u0439\u0442, \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043a\u043e\u0434 &#8212; \u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0435 \u0438 \u043f\u0440\u0438 \u0434\u0432\u0443\u0445 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/822\/def\/1d8\/822def1d800aa567294ff9ad18ab29ed.png\" alt=\"\u041f\u043e\u0441\u043b\u0435 force_compile() \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0437\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\" width=\"1638\" height=\"811\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/822\/def\/1d8\/822def1d800aa567294ff9ad18ab29ed.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/822\/def\/1d8\/822def1d800aa567294ff9ad18ab29ed.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0441\u043b\u0435 force_compile() \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0437\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440<\/figcaption><\/div>\n<\/figure>\n<p>\u0411\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430 6.09 \u043c\u0441, \u043f\u043e\u0441\u043b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e &#8212; 4.35, \u043f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 &#8212; 8.57 \u0438 \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0438 \u0433\u0440\u0435\u0439. \u041f\u043e\u043b\u043a\u0430 \u0440\u0430\u0432\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430. \u041f\u043e\u0448\u0442\u0443\u0447\u043d\u043e \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043f\u043e <code>count_interpreted_calls<\/code>: \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0443\u0448\u043b\u043e \u043d\u043e\u043b\u044c \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438\u0437 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438, \u043f\u0440\u0438 \u0434\u0432\u0443\u0445 &#8212; \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0438\u0437 \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438. <code>auto()<\/code> \u0438 <code>compile_after_n_calls(n)<\/code> \u044d\u0442\u0438\u043c \u043d\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u044e\u0442, Static Python \u0442\u043e\u0436\u0435: \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0445\u043e\u0434\u044f\u0442 \u0441\u0432\u043e\u0438\u043c \u043f\u0443\u0442\u0451\u043c \u0432\u044b\u0437\u043e\u0432\u0430, \u0438 \u043f\u0440\u043e\u0433\u0440\u0435\u0432 \u0442\u0430\u043c \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043c\u0435\u0440\u044f\u0435\u0442\u0435 JIT \u0447\u0435\u0440\u0435\u0437 <code>force_compile<\/code>, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c &#8212; <code>count_interpreted_calls<\/code>. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<h3>Static Python<\/h3>\n<p>\u0422\u0430\u043c, \u0433\u0434\u0435 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u0435\u0448\u0435\u0439 \u043c\u0430\u043b\u043e \u0438\u043b\u0438 \u043e\u043d\u0438 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b, \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u0430\u044e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0442\u043e, \u0447\u0435\u0433\u043e \u043e\u043d \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0430\u043c.<\/p>\n<h4>\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u043a\u043e\u0434\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432<\/h4>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u043a\u043e\u0434\u044b: \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u043b\u044e \u043f\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430, \u043f\u0440\u044f\u043c\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438, \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u0432\u043c\u0435\u0441\u0442\u043e <code>PyNumber_*<\/code>.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u043e\u044f\u0442 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435, \u0430 \u043d\u0435 \u0432\u0435\u0437\u0434\u0435. \u041d\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u044c, \u0438 \u0442\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f. \u0412 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u043b\u043e\u0433 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u044f\u0432\u043d\u044b\u0435 \u043a\u0430\u0441\u0442\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0435 \u0432\u0445\u043e\u0434\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u043b\u044e &#8212; \u0441\u044b\u0440\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u0431\u0435\u0437 \u043f\u043e\u0438\u0441\u043a\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0438\u043f\u0430.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b<\/h4>\n<p>\u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b: <code>int8<\/code>\u2026<code>int64<\/code>, <code>uint8<\/code>\u2026<code>uint64<\/code>, <code>cbool<\/code>, <code>char<\/code>, <code>double<\/code>, <code>size_t<\/code>. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430: <code>Array[int64]<\/code>, <code>CheckedDict<\/code>, <code>CheckedList<\/code>. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b: <code>box<\/code>\/<code>unbox<\/code> \u0438 <code>cast<\/code> &#8212; \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>typing.cast<\/code>, \u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435. \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445: <code>clen<\/code>, <code>crange<\/code>. \u0421\u0432\u043e\u0438 \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u044b: <code>@inline<\/code>, <code>@native<\/code> \u0438 <code>@dynamic_return<\/code> &#8212; \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0430\u043d\u0442\u0430\u0439\u043c-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0442\u0438\u043f\u0430: \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u043b\u044f \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u044c\u0449\u0438\u043a\u0430 \u0442\u0438\u043f\u043e\u0432, \u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0435\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0432\u0435\u0440\u044f\u0435\u0442. \u0410 <code>final<\/code> \u0438\u0437 <code><strong>static<\/strong><\/code> &#8212; \u044d\u0442\u043e \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442 <a href=\"http:\/\/typing.final\" rel=\"noopener nofollow\"><code>typing.final<\/code><\/a>. \u041d\u043e\u0432\u044b\u043c \u043e\u043d \u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u0433\u043e \u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0431\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0430.<\/p>\n<p><strong>\u0423 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430.<\/strong> \u041f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int8<\/code> 127 + 1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2212128<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>uint8<\/code> 255 + 1<\/p>\n<\/td>\n<td>\n<p align=\"left\">0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int16<\/code> 32767 + 1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u221232768<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int32<\/code> 2147483647 + 1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22122147483648<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>uint64<\/code> 0 \u2212 1<\/p>\n<\/td>\n<td>\n<p align=\"left\">18446744073709551615<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>int8(int64(300))<\/code> &#8212; \u0441\u0443\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">44<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0438 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0421\u0447\u0451\u0442\u0447\u0438\u043a, \u0445\u0435\u0448 \u0438\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c Python \u0443\u0435\u0437\u0436\u0430\u043b\u043e \u0432 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0443, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0440\u0442\u0430 \u0441\u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e.<\/p>\n<p><strong>\u041a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u0440\u0442.<\/strong> \u0412\u043e\u0442 \u044f\u0434\u0440\u043e \u043e\u0431\u0445\u043e\u0434\u0430 \u0433\u0440\u0430\u0444\u0430 \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 &#8212; \u043d\u0430 \u043d\u0451\u043c \u0436\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0437\u0430\u043c\u0435\u0440\u044b. \u0411\u044b\u043b\u043e:<\/p>\n<pre><code class=\"python\">def walk(indptr, indices, weights, seeds, scores, touched) -&gt; int:    n_touched = 0    for seed in seeds:        p = indptr[seed]        pe = indptr[seed + 1]        while p &lt; pe:            nb = indices[p]            w = weights[p]            prev = scores[nb]            if prev == 0:                touched[n_touched] = nb                n_touched += 1            scores[nb] = prev + w * DECAY_FIRST<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0442\u0430\u043b\u043e:<\/p>\n<pre><code class=\"python\">def walk(indptr: Array[int64], indices: Array[int64], weights: Array[int64],         seeds: Array[int64], n_seeds: int64,         scores: Array[int64], touched: Array[int64]) -&gt; int64:    n_touched: int64 = 0    s: int64 = 0    while s &lt; n_seeds:        seed: int64 = seeds[s]        p: int64 = indptr[seed]        pe: int64 = indptr[seed + 1]        while p &lt; pe:            nb: int64 = indices[p]            w: int64 = weights[p]            prev: int64 = scores[nb]            if prev == 0:                touched[n_touched] = nb                n_touched = n_touched + 1            acc: int64 = prev + w * 16            scores[nb] = acc<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043d\u0438 \u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0443. \u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u043e \u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c: \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b.<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/strong> \u0421\u043f\u0438\u0441\u043a\u0438 \u0441\u0442\u0430\u043b\u0438 <code>Array[int64]<\/code>. \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u0445 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u043c\u0443, \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0435\u0439: \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0435 \u043d\u0435\u0442, \u0430 \u043a\u043e\u043f\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0432\u0445\u043e\u0434\u0443 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0430\u0447\u043d\u0451\u0442\u0441\u044f \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430.<\/p>\n<p><strong>\u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430.<\/strong> \u0411\u0443\u0444\u0435\u0440\u044b \u043f\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439: \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043e\u0442\u0431\u043e\u0440\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0435 <code>out_ids<\/code>\/<code>out_scores<\/code> \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a, \u0430 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0435 \u043a\u043e\u0440\u0442\u0435\u0436\u0438 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f <code>boxed_pairs<\/code>. \u0423\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0442\u0438\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0437\u0430 \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u043e\u043f, \u0430 \u043d\u0435 \u0437\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0440\u043e\u043d\u0443\u0442\u043e\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430.<\/p>\n<p><strong>\u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c.<\/strong> \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0435\u0435 \u0438\u0437 <code>Array[int64]<\/code>, \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e: <code>nb = indices[p]<\/code> &#8212; \u044d\u0442\u043e <code>int64<\/code> \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0439 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438. \u0410 \u0432\u043e\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a, \u0437\u0430\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u043c, \u043d\u0435 \u0441\u043e\u0431\u0435\u0440\u0451\u0442\u0441\u044f:<\/p>\n<pre><code class=\"python\">total = 0for i in crange(n):        # i: int64    total = total + i# TypedSyntaxError: invalid union type Union[int64, Literal[0]];#                   unions cannot include primitive types<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0443\u043b\u044f: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0438 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0443\u043c\u043c\u0443.<\/p>\n<p><strong>\u0418\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438\u0441\u0447\u0435\u0437\u043b\u0438.<\/strong> \u0422\u0430\u043c, \u0433\u0434\u0435 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <code>w * DECAY_FIRST<\/code><em>, \u0432 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 &#8212; <\/em><code>w<em> <\/em>* 16<\/code>. \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0435 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u043c \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435, \u0430 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0435\u0451 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u043c \u043d\u0435\u043b\u044c\u0437\u044f: \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b.<\/p>\n<p>\u041f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c. \u041f\u043e\u0441\u043b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u044c, \u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043d\u0451\u043c \u043a\u043b\u0430\u0441\u0441\u044b: \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u0430\u0451\u0442 <code>AttributeError: cannot modify attribute ... of strict module<\/code>, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u043a\u043b\u0430\u0441\u0441\u0443 &#8212; <code>TypeError: cannot set ... attribute of immutable type ...<\/code>. \u0417\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0442\u0435\u043b\u0430 \u043c\u043e\u0434\u0443\u043b\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0443 \u0437\u0430\u043a\u043e\u043d\u043d\u043e, \u0430 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0443\u0436\u0435 \u043d\u0435\u0442. \u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c. \u0421\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e <code>mock.patch<\/code> \u043f\u043e \u0442\u0430\u043a\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0428\u0442\u0430\u0442\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 &#8212; \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0441 <code>enable_patching=True<\/code> \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <code>StrictModuleTestingPatchProxy<\/code>.<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u0440\u0430\u0437\u0443: <code>functools.cached_property<\/code> \u0432 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043e\u0432\u0441\u0435. \u041a\u043b\u0430\u0441\u0441\u044b \u0441\u043b\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043d\u0435\u0442, \u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0443 \u043d\u0435\u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#8212; <code>TypeError: No '__dict__' attribute on 'S' instance to cache 'x' property<\/code>. \u0417\u0430\u043c\u0435\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0438\u0442 <code>cached_property<\/code> \u0438\u0437 <code>cinderx<\/code>: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u043d\u043e\u0441\u0438\u0442 \u0442\u0435\u043b\u043e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435 \u0432 \u0441\u043b\u043e\u0442\u044b \u0438 \u0447\u0438\u0442\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u044f\u043c\u044b\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c. \u041f\u043e\u0434 JIT \u044d\u0442\u043e \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u0442\u0440\u0435\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e, \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430 \u0441\u0447\u0451\u0442 \u0441\u043b\u043e\u0442\u0430: \u0442\u0430 \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u043e\u0442 <code>functools<\/code> \u043d\u0435\u043e\u0442\u043b\u0438\u0447\u0438\u043c\u0430.<\/p>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u043b\u0443\u0447\u0448\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435: \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0441\u043b\u043e\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 (\u0437\u043d\u0430\u0447\u0438\u0442 <code>AttributeError<\/code> \u0442\u0430\u043c, \u0433\u0434\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0430 \u0441\u043b\u0430\u0431\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u0434\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u043c <code>@allow_weakrefs<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 <code><strong>weakref<\/strong><\/code> \u0432 \u0441\u043b\u043e\u0442\u044b), \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b \u0432\u044b\u0437\u043e\u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 (\u0437\u043d\u0430\u0447\u0438\u0442 <code>mock.call_args<\/code> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435), \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u043e\u0439 \u043f\u0430\u0434\u0430\u0435\u0442 &#8212; \u0434\u0432\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c, <code>TypeError: multiple bases have instance lay-out conflict<\/code>, \u0438 \u043b\u0435\u0447\u0438\u0442\u0441\u044f \u044d\u0442\u043e \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u043c <code>@mixin<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043a\u043b\u0430\u0441\u0441 \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c.<\/p>\n<h4>\u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u0451\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442<\/h4>\n<p>\u0412\u0441\u0451, \u0447\u0442\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c Python \u043f\u0438\u0448\u0443\u0442 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044f\u0441\u044c. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u0435\u0442 \u044d\u0442\u043e \u043d\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0435, \u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 <code>StrictModuleError<\/code> &#8212; \u0442\u0435\u043a\u0441\u0442 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e: <code>class C(A, B)<\/code> \u043e\u043d \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0443\u0436\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0447\u0442\u043e \u043f\u0438\u0448\u0435\u0442\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0447\u0442\u043e \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>for i in range(n): a[i] = i<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>type mismatch: dynamic cannot be assigned to int64<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>SHIFT: int64 = 12<\/code> \u0432 \u043c\u043e\u0434\u0443\u043b\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>cannot use primitives in global or closure scope<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>SHIFT: Final[int] = 6<\/code>, \u0437\u0430\u0442\u0435\u043c <code>w &gt;&gt; SHIFT<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>cannot right shift int64 and int<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>print(n)<\/code>, \u0433\u0434\u0435 <code>n: int64<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>Call argument cannot be a primitive<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>class C(A, B)<\/code>, \u0443 \u043e\u0431\u043e\u0438\u0445 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>TypeError: multiple bases have instance lay-out conflict<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0438 \u043c\u0435\u0442\u043e\u0434 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>function conflicts with other member attr<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>x: int<\/code> \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0432 \u043e\u0431\u0435\u0438\u0445 \u0432\u0435\u0442\u043a\u0430\u0445 <code>if<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>Cannot redefine local variable x<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>a == b or x &gt; y<\/code> &#8212; <code>cbool<\/code> \u0440\u044f\u0434\u043e\u043c \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>invalid union type Union[cbool, dynamic]<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 <code>@final<\/code>-\u043c\u0435\u0442\u043e\u0434\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>Cannot assign to a Final attribute<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0426\u0438\u043a\u043b \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0438 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u0447\u0451\u0442\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<p>\u0426\u0438\u043a\u043b \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443:<\/p>\n<pre><code class=\"python\">for i in range(n):    a[i] = i# TypedSyntaxError: type mismatch: dynamic cannot be assigned to int64<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>range()<\/code> \u043e\u0442\u0434\u0430\u0451\u0442 <code>dynamic<\/code>. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>dynamic<\/code> \u0432 <code>int<\/code> \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u043a\u0430\u043a \u043d\u0435\u044f\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u043a\u0430\u0441\u0442, <code>dynamic<\/code> \u0432 <code>int64<\/code> &#8212; \u043d\u0435\u0442. \u0417\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <code>crange<\/code>, \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433, \u043b\u0438\u0431\u043e \u043d\u0430 \u044f\u0432\u043d\u044b\u0439 <code>while<\/code> \u0441\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u043c. \u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 <code>Array[int64]<\/code> \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430: \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0446\u0438\u043a\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0438\u043f <code>int64<\/code>, \u043a\u043e\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u041f\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443 \u043e\u043d\u0430 \u0441\u043d\u043e\u0432\u0430 <code>dynamic<\/code>, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>int64(v)<\/code>.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430:<\/p>\n<pre><code class=\"python\">SHIFT: Final[int] = 6acc: int64 = (w * w2) &gt;&gt; SHIFT# TypedSyntaxError: cannot right shift int64 and int<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0439 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0435. \u041d\u0438 \u043a\u0430\u043a <code>Final[int]<\/code>, \u043d\u0438 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f: \u0442\u043e\u0433\u0434\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 <code>cannot right shift int64 and dynamic<\/code>. \u041e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0435\u0451 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u043c \u0442\u043e\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f: \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (<code>&gt;&gt; int64(SHIFT)<\/code>) \u0438\u043b\u0438 \u043f\u043e\u0434\u044a\u0451\u043c \u0432 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041b\u0438\u0431\u043e, \u043a\u0430\u043a \u0432 \u044f\u0434\u0440\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0432 \u043b\u0438\u0442\u0435\u0440\u0430\u043b.<\/p>\n<h4>\u0426\u0435\u043d\u0430 \u0431\u0435\u0437 JIT<\/h4>\n<p>\u0412\u043e\u0442 \u0432\u043e \u0447\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0447\u0451\u0442\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b3c\/334\/486\/b3c3344863a4b919d3aca2e481aa563f.png\" alt=\"\u041e\u0434\u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0447\u0451\u0442\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445: \u043e\u0431\u044b\u0447\u043d\u044b\u0439 int, int \u0432 Static Python, int64 \u0431\u0435\u0437 JIT \u0438 int64 \u043f\u043e\u0434 JIT\" width=\"1212\" height=\"768\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b3c\/334\/486\/b3c3344863a4b919d3aca2e481aa563f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b3c\/334\/486\/b3c3344863a4b919d3aca2e481aa563f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041e\u0434\u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0447\u0451\u0442\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445: \u043e\u0431\u044b\u0447\u043d\u044b\u0439 int, int \u0432 Static Python, int64 \u0431\u0435\u0437 JIT \u0438 int64 \u043f\u043e\u0434 JIT<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0439 <code>int<\/code> &#8212; 50.9 \u043d\u0441. \u0422\u043e\u0442 \u0436\u0435 <code>int<\/code> \u0432 Static Python &#8212; 75.7 \u043d\u0441. <code>int64<\/code> \u0432 Static Python &#8212; <strong>172 \u043d\u0441<\/strong>, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 3.4 \u0440\u0430\u0437\u0430 \u0445\u0443\u0436\u0435, \u0447\u0435\u043c \u0442\u043e, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0438.<\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c JIT, \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u044f: <code>int64<\/code> &#8212; <strong>0.676 \u043d\u0441<\/strong>. \u0412 255 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0435\u0431\u044f \u0436\u0435 \u0431\u0435\u0437 JIT \u0438 \u0432 75 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <code>int<\/code>.<\/p>\n<p>\u0421\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442 \u043f\u044f\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0432 \u0442\u043e\u0442 \u0436\u0435 \u0446\u0438\u043a\u043b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c (<code>(s * 31 + i) &amp; 1048575<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f) &#8212; \u0432\u044b\u0445\u043e\u0434\u0438\u0442 2.53 \u043d\u0441, \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0440\u0430\u0437 \u043f\u0440\u043e\u0442\u0438\u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <code>int<\/code>. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u043d\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c \u0442\u0430\u043a \u0436\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e.<\/p>\n<p>\u0412 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435 <code>int64<\/code> &#8212; \u044d\u0442\u043e \u0432\u0441\u0451 \u0435\u0449\u0451 <code>PyLong<\/code>. \u041e\u043f\u043a\u043e\u0434 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0430 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0430 C \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e &#8212; \u0432 \u0441\u0432\u0435\u0436\u0438\u0439 <code>PyLong<\/code>, \u0441 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0435\u0439. \u041f\u043b\u044e\u0441 <code>EXTENDED_OPCODE<\/code> &#8212; \u0434\u0432\u0430 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e. \u041e\u0431\u044a\u044f\u0432\u0438\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u0442\u0438\u043f, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0442\u0443 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043b\u044e\u0441 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0443 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0451. <strong>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b &#8212; \u044d\u0442\u043e \u0432\u0445\u043e\u0434 \u0434\u043b\u044f JIT: \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0438\u0433\u0434\u0435.<\/strong><\/p>\n<h4>\u0426\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u043e\u043b\u044e<\/h4>\n<p>\u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0443\u044e \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0443 \u043f\u0438\u0448\u0443\u0442 \u0440\u0435\u0434\u043a\u043e, \u043f\u043e\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 &#8212; \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0443, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0438 \u043f\u0440\u043e \u043d\u0438\u0445.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u043d\u0441 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0441\u0442\u043e\u043a<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0441\u0442\u043e\u043a, tier 2<\/p>\n<\/th>\n<th>\n<p align=\"left\">CinderX + JIT<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0442\u0438\u043f\u044b, JIT \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0442\u0438\u043f\u044b + JIT<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">35.7<\/p>\n<\/td>\n<td>\n<p align=\"left\">34.6<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>19.7<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">72.7<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>16.2<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">73.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">65.1<\/p>\n<\/td>\n<td>\n<p align=\"left\">51.4<\/p>\n<\/td>\n<td>\n<p align=\"left\">115.9<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>44.4<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043d\u0435\u043e\u0442\u043a\u0443\u0434\u0430 \u0443\u0437\u043d\u0430\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 &#8212; \u043e\u043d \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u0435\u0448, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0432\u043e\u0434\u0438\u0442 \u0441\u0430\u043c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u043e\u043c\u0430\u0445\u0435. \u042d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u044f\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443: 19.7 \u043d\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 35.7 \u0443 \u0441\u0442\u043e\u043a\u0430. \u0422\u0438\u043f\u044b \u0434\u0430\u044e\u0442 \u0442\u043e, \u0447\u0435\u0433\u043e \u043a\u0435\u0448\u0435\u043c \u043d\u0435 \u0434\u043e\u0431\u0440\u0430\u0442\u044c: \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u042d\u0442\u043e 16.2 \u043d\u0441, \u0435\u0449\u0451 \u043f\u044f\u0442\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0432\u0435\u0440\u0445\u0443. \u041d\u0430 \u043f\u0430\u0440\u0435 \u00ab\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c\u00bb \u043e\u0431\u0435 \u043f\u0440\u0438\u0431\u0430\u0432\u043a\u0438 \u0442\u0435 \u0436\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044f\u0433\u0447\u0435: 51.4 \u043f\u0440\u043e\u0442\u0438\u0432 73.0 \u0443 \u0441\u0442\u043e\u043a\u0430 \u0438 44.4 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438 &#8212; \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u0442\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c, \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0441\u0430\u043c \u043e\u0431\u044a\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 CinderX \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u044f \u0434\u043e\u0440\u043e\u0436\u0435 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e: 43.6 \u043f\u0440\u043e\u0442\u0438\u0432 35.7. \u0411\u0435\u0437 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0448\u0430\u0435\u0442.<\/p>\n<p>\u0422\u0438\u043f\u044b \u0431\u0435\u0437 JIT &#8212; \u0432\u0434\u0432\u043e\u0435 \u0445\u0443\u0436\u0435 \u0441\u0442\u043e\u043a\u0430, 72.7 \u043f\u0440\u043e\u0442\u0438\u0432 35.7: \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441, \u0447\u0442\u043e \u0438 \u043d\u0430 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0435. \u0423 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u0435 \u043b\u0435\u0436\u0438\u0442 \u043f\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e, \u0438 \u0432 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 &#8212; \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 NULL \u0438 \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0441\u044b\u043b\u043e\u043a \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f.<\/p>\n<h4>\u0426\u0435\u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b<\/h4>\n<p>\u041f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u044f\u0434\u0440\u0430 \u0438\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0438 \u0442\u0430\u043c \u0441\u0442\u043e\u044f\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8ec\/9d0\/b71\/8ec9d0b713c52dad54bb46102b6a9002.png\" alt=\"\u0426\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430\" width=\"1212\" height=\"730\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8ec\/9d0\/b71\/8ec9d0b713c52dad54bb46102b6a9002.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8ec\/9d0\/b71\/8ec9d0b713c52dad54bb46102b6a9002.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0426\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0411\u0435\u0437 JIT \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u0440\u043e\u0436\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e: 203 \u043d\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 120, \u0432 1.7 \u0440\u0430\u0437\u0430. \u0421 JIT \u043d\u0430\u0434\u0431\u0430\u0432\u043a\u0430 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c &#8212; 83 \u043d\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 89, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0434\u0430\u0436\u0435 \u0447\u0443\u0442\u044c \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043d\u0435\u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e, \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439.<\/p>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0438\u043a \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0435. \u0422\u0430\u043c \u0432\u0435\u0441\u044c \u0446\u0438\u043a\u043b \u0436\u0438\u0432\u0451\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430, \u0438 \u0431\u0435\u0437 JIT \u043e\u043d \u043f\u043b\u0430\u0442\u0438\u0442 \u0437\u0430 \u0448\u0442\u0440\u0430\u0444 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043f\u0440\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b (248 \u043d\u0441), \u0430 \u0441 JIT \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u044b\u0437\u043e\u0432\u043e\u043c (33 \u043d\u0441). \u0421 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0430\u043c\u0438 \u0435\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u0437\u0430\u043c\u0435\u0440\u0435 \u044d\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043c\u0435\u0442\u043a\u043e\u0439.<\/p>\n<h3>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430: \u0442\u043e, \u0447\u0442\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443<\/h3>\n<p>\u0412\u0441\u0451 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0443\u0441\u043a\u043e\u0440\u044f\u043b\u043e \u0431\u0430\u0439\u0442\u043a\u043e\u0434. \u0412 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 &#8212; \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<h4>\u041e\u0434\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445<\/h4>\n<p><code>AsyncLazyValue<\/code> \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0438 \u0434\u0430\u0451\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u0440\u0430\u0437 \u0435\u0451 \u043d\u0438 \u0436\u0434\u0430\u043b\u0438, \u0442\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u041f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u0442\u0435\u043b\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u0440\u0430\u0437 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">50<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043e\u0434\u0438\u043d <code>AsyncLazyValue<\/code>, \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>1<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0443\u0442 \u043d\u0435\u043b\u044c\u0437\u044f: \u043e\u0431\u044a\u0435\u043a\u0442-\u043a\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 <code>await<\/code> \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 <code>cannot reuse already awaited coroutine<\/code>. <code>AsyncLazyValue<\/code> \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 <code>Future<\/code>: \u043f\u0435\u0440\u0432\u044b\u0439 <code>await<\/code> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0441\u0442\u0430\u044e\u0442 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a, \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u0441\u0435\u043c \u0440\u0430\u0437\u043e\u043c.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u043d\u0441 \u043d\u0430 \u043e\u0434\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">CinderX, JIT \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/p>\n<\/th>\n<th>\n<p align=\"left\">CinderX + JIT<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>await<\/code> \u0441\u0432\u0435\u0436\u0435\u0439 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">185<\/p>\n<\/td>\n<td>\n<p align=\"left\">187<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>await<\/code> \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e <code>AsyncLazyValue<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">123<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>45<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0433\u043e\u0442\u043e\u0432\u044b\u0439 <code>AsyncLazyValue<\/code> \u0447\u0435\u0440\u0435\u0437 <code>async_cached_property<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">128<\/p>\n<\/td>\n<td>\n<p align=\"left\">69<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0411\u0435\u0437 JIT \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0441\u0432\u0435\u0436\u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0432 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u0430, \u0441 JIT &#8212; \u0432\u0447\u0435\u0442\u0432\u0435\u0440\u043e. \u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0446\u0435\u043d\u0443 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <code>await<\/code> \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u0432\u043e\u0432\u0441\u0435, 185 \u0438 187 \u043d\u0441, \u0430 \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>AsyncLazyValue<\/code> \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043e 123 \u0434\u043e 45.<\/p>\n<p><code>async_cached_property<\/code> &#8212; \u0442\u0430 \u0436\u0435 \u0432\u0435\u0449\u044c \u0432 \u0444\u043e\u0440\u043c\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430: \u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0434\u0451\u0442 <code>AsyncLazyValue<\/code> \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430, \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430. \u0414\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043f\u044f\u0442\u044c \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043f\u043e\u0434 JIT \u0438 \u0435\u0441\u0442\u044c \u0446\u0435\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0432\u0435\u0440\u0445 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432 \u043d\u0435\u0442: <code>functools.cached_property<\/code> \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c.<\/p>\n<h3>\u041f\u0440\u043e\u0446\u0435\u0441\u0441: \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0444\u043e\u0440\u043a<\/h3>\n<p>\u0418\u043c\u043c\u043e\u0440\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0443\u0447\u0438 \u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043f\u0440\u0435-\u0444\u043e\u0440\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h4>\u041f\u0430\u043c\u044f\u0442\u044c: \u0438\u043c\u043c\u043e\u0440\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p><code>immortalize_heap()<\/code> \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u0437\u0432\u0443\u0447\u0438\u0442: \u043e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0443\u0441\u043e\u0440, \u0437\u043e\u0432\u0451\u0442 <code>gc.freeze()<\/code> \u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0443\u0441\u044f permanent generation, \u043f\u043e\u043c\u0435\u0447\u0430\u044f \u0431\u0435\u0441\u0441\u043c\u0435\u0440\u0442\u043d\u044b\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0442\u043e, \u0447\u0442\u043e \u0442\u043e\u0442 \u043e\u0442\u0434\u0430\u0451\u0442 \u043e\u0434\u043d\u0438\u043c \u0448\u0430\u0433\u043e\u043c <code>tp_traverse<\/code>. \u0422\u0440\u0430\u043d\u0437\u0438\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f \u043f\u043e \u0433\u0440\u0430\u0444\u0443 \u043d\u0435\u0442: \u0434\u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043b, \u0438 \u0435\u0433\u043e \u043f\u0440\u044f\u043c\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c, \u043f\u043b\u044e\u0441 \u0440\u0443\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c &#8212; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c \u0438 \u0438\u043c\u0435\u043d\u0430\u043c \u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0421\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u0443 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u044e\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u043e\u0441\u043b\u0435 <code>fork()<\/code> \u044d\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438.<\/p>\n<p>\u0412 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u043c CPython \u0435\u0441\u0442\u044c \u0438 \u0442\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435: <code>gc.freeze()<\/code> \u0441 3.7, \u0438\u043c\u043c\u043e\u0440\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 3.12. \u041d\u043e <code>gc.freeze()<\/code> \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043e\u0431\u0445\u043e\u0434\u0430 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 &#8212; \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0447\u0442\u0435\u043d\u0438\u0438, \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0441\u0442\u0440\u043e\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u0441\u043e\u0442 \u0442\u044b\u0441\u044f\u0447 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0438 \u0444\u043e\u0440\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u043e\u0440\u043a\u0435\u0440 \u0442\u0440\u0438\u0436\u0434\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0435\u0433\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0438\u0437 <code>\/proc\/&lt;pid&gt;\/smaps_rollup<\/code>.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0430\u0440\u043c<\/p>\n<\/th>\n<th>\n<p align=\"left\">PSS \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">Shared_Dirty<\/p>\n<\/th>\n<th>\n<p align=\"left\">Private_Dirty<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043a\u0430\u043a \u0435\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">103.3 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">66.8 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">86.6 \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u043e\u0441\u043b\u0435 <code>gc.freeze()<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">103.4 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">66.8 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">86.6 \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u043e\u0441\u043b\u0435 <code>immortalize_heap()<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">103.2 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">67.1 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">86.4 \u041c\u0411<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u0441\u0435 \u0442\u0440\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442: \u0438\u043c\u043c\u043e\u0440\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0430 \u043d\u0438 \u043e\u0431\u0449\u0443\u044e \u0434\u043e\u043b\u044e \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0438 \u043e\u0431\u044a\u0451\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0433\u0440\u044f\u0437\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 &#8212; 86.4 \u041c\u0411 \u043f\u0440\u043e\u0442\u0438\u0432 86.6. \u041d\u0430 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0435\u0442\u044b\u0440\u0451\u0445\u0441\u0442\u0430\u0445 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u043c\u0435\u043b\u043a\u0438\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u0434\u0440\u044f\u0434, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0431\u0435\u0437 \u043d\u0435\u0451.<\/p>\n<h4>\u041f\u0430\u0443\u0437\u044b: \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a<\/h4>\n<p>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a &#8212; \u044d\u0442\u043e \u043a\u043e\u043f\u0438\u044f \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u0438\u0437 <code>Python\/gc.c<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0437 \u0434\u0435\u0432\u044f\u0442\u0438 \u0444\u0430\u0437 \u0441\u0431\u043e\u0440\u043a\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043d\u044b \u0434\u0432\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/63d\/79d\/05e\/63d79d05e5f016078e7f357a12b27821.png\" alt=\"\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u043f\u043e \u0433\u0440\u0430\u0444\u0443\" width=\"2970\" height=\"2163\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/63d\/79d\/05e\/63d79d05e5f016078e7f357a12b27821.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/63d\/79d\/05e\/63d79d05e5f016078e7f357a12b27821.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u043f\u043e \u0433\u0440\u0430\u0444\u0443<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0437 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432 \u0432\u044b\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0438, \u0432\u0435\u0434\u0443\u0449\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f: \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0442\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043d\u0430 \u043a\u043e\u0433\u043e \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0441\u043d\u0430\u0440\u0443\u0436\u0438. \u041f\u043e\u0442\u043e\u043c \u043e\u0442 \u043d\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u043e\u0435. \u041e\u0431\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u0438\u0434\u0443\u0442 \u043f\u043e \u0433\u0440\u0430\u0444\u0443 \u0447\u0435\u0440\u0435\u0437 <code>tp_traverse<\/code> \u0438 \u043e\u0431\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0431\u0430\u0440\u044c\u0435\u0440\u043e\u043c &#8212; \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435 \u0434\u0432\u0438\u043d\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0442\u043e, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a.<\/p>\n<p>\u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u0436\u0438\u0432\u043e\u0435 \u0438 \u043c\u0443\u0441\u043e\u0440, \u0432\u043e\u043f\u0440\u0435\u043a\u0438 \u0438\u043c\u0435\u043d\u0438 <code>Ci_move_unreachable_parallel<\/code>, \u0438\u0434\u0451\u0442 \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0424\u0438\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b, \u0441\u043b\u0430\u0431\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, <code>tp_clear<\/code> \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 &#8212; \u0442\u043e\u0436\u0435.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442, \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0434\u043e\u043b\u0435\u0439 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432. \u0410 \u0441\u0430\u043c\u0443 \u044d\u0442\u0443 \u0434\u043e\u043b\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0443\u043b\u044e &#8212; \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u043e\u0439.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7f2\/d89\/def\/7f2d89def48305fbaa1bc064527d14c9.png\" alt=\"\u0417\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0430 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0431\u0445\u043e\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c\" width=\"1481\" height=\"762\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7f2\/d89\/def\/7f2d89def48305fbaa1bc064527d14c9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7f2\/d89\/def\/7f2d89def48305fbaa1bc064527d14c9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0417\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0430 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0431\u0445\u043e\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/figcaption><\/div>\n<\/figure>\n<p>\u041b\u0435\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c: \u043e\u0431\u0445\u043e\u0434 \u0436\u0438\u0432\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430 \u0438\u0437 300 \u0442\u044b\u0441\u044f\u0447 \u0443\u0437\u043b\u043e\u0432 &#8212; 64 \u043c\u0441. \u041f\u043e\u0441\u043b\u0435 <code>gc.freeze()<\/code> \u0438\u043b\u0438 <code>immortalize_heap()<\/code> &#8212; 1.8 \u043c\u043a\u0441. \u0412 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u0448\u0435\u0441\u0442\u044c \u0442\u044b\u0441\u044f\u0447 \u0440\u0430\u0437 \u043c\u0435\u043d\u044c\u0448\u0435: \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043d\u0435 \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0432\u0441\u0435.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c &#8212; \u043f\u043e\u043b\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0441 300 \u0442\u044b\u0441\u044f\u0447\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0443\u0441\u043e\u0440\u0430: 109 \u043c\u0441 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, 41 \u043c\u0441 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0438. \u0417\u0434\u0435\u0441\u044c \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432\u0441\u0435\u0433\u043e \u0432 2.65 \u0440\u0430\u0437\u0430: \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0430 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437 \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u0445\u043e\u0434 \u0436\u0438\u0432\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430, 64 \u043c\u0441, \u0430 \u0442\u0440\u0438\u0441\u0442\u0430 \u0442\u044b\u0441\u044f\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0443\u0441\u043e\u0440\u0430 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f &#8212; \u0438\u0445 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0430\u0434\u043e \u043e\u0431\u043e\u0439\u0442\u0438 \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c.<\/p>\n<p>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043d\u0430 \u044d\u0442\u043e\u043c \u0436\u0435 \u0433\u0440\u0430\u0444\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442, \u0438 \u043a\u0440\u0443\u043f\u043d\u043e: \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u043e\u0431\u0445\u043e\u0434\u044f\u0442 \u0435\u0433\u043e \u0437\u0430 145 \u043c\u0441 \u0432\u043c\u0435\u0441\u0442\u043e 64, \u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 184 \u043c\u0441 \u0432\u043c\u0435\u0441\u0442\u043e 109. \u041d\u043e \u0443\u0437\u043b\u044b \u0437\u0434\u0435\u0441\u044c &#8212; \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u0442\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u044f\u043c\u0438, \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0447\u0435\u0442\u044b\u0440\u0435. \u041e\u0431\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b, \u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h4>\u0424\u043e\u0440\u043c\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0440\u0435\u0448\u0430\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0441\u043c\u044b\u0441\u043b \u0432\u043e\u043e\u0431\u0449\u0435<\/h4>\n<p>\u041d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0443 \u043d\u0435\u0433\u043e \u0438\u0434\u0443\u0442 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u043d\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443: \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0434 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u043f\u043b\u044e\u0441 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432\u043e\u0440\u043e\u0432\u0441\u0442\u0432\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u043a\u0443\u0447\u0435 \u0432 \u0434\u0432\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0441\u0441\u044b\u043b\u043e\u043a \u0432\u0441\u0451 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u044b \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c. \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0440\u044f\u0434\u043e\u043c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c &#8212; \u0432\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">2 \u043f\u043e\u0442\u043e\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">4 \u043f\u043e\u0442\u043e\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">8 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3<\/p>\n<\/td>\n<td>\n<p align=\"left\">666 \u0442\u044b\u0441.<\/p>\n<\/td>\n<td>\n<p align=\"left\">40.1 \u043c\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">115.1 \u043c\u0441, 0.35\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\">111.1 \u043c\u0441, 0.36\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\">75.5 \u043c\u0441, 0.53\u00d7<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">10<\/p>\n<\/td>\n<td>\n<p align=\"left\">200 \u0442\u044b\u0441.<\/p>\n<\/td>\n<td>\n<p align=\"left\">17.1 \u043c\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">49.0 \u043c\u0441, 0.35\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\">38.5 \u043c\u0441, 0.44\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\">29.7 \u043c\u0441, 0.58\u00d7<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">30<\/p>\n<\/td>\n<td>\n<p align=\"left\">67 \u0442\u044b\u0441.<\/p>\n<\/td>\n<td>\n<p align=\"left\">12.7 \u043c\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">26.5 \u043c\u0441, 0.48\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\">21.8 \u043c\u0441, 0.58\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\">16.6 \u043c\u0441, 0.77\u00d7<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">20 \u0442\u044b\u0441.<\/p>\n<\/td>\n<td>\n<p align=\"left\">12.2 \u043c\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">26.2 \u043c\u0441, 0.46\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\">15.9 \u043c\u0441, 0.76\u00d7<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>10.8 \u043c\u0441, 1.12\u00d7<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0430 \u0443\u0437\u043b\u0430\u0445 \u043f\u043e \u0442\u0440\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0434\u0432\u043e\u0435 \u0434\u0430\u0436\u0435 \u0432 \u043b\u0443\u0447\u0448\u0435\u0439 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442. \u0412\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u044c \u043e\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0433\u0434\u0435-\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c\u044e \u0438 \u0441\u043e\u0442\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442. \u041a\u044d\u0448 \u0432\u0438\u0442\u0440\u0438\u043d, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0432\u043e\u0440\u043a\u0448\u043e\u043f\u0435, \u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u043e \u0441\u0435\u043c\u044c \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0437\u0430 \u044d\u0442\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439.<\/p>\n<h4>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e<\/h4>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212; \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041f\u0443\u043b\u0430 \u0443 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043d\u0435\u0442: <code>PyThread_start_new_thread<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u0445\u043e\u0434\u0430, \u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435, \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043a\u0443\u0447\u0435 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u043c\u0435\u0440\u0430: \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 1.8 \u043c\u043a\u0441, \u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0442\u0440\u0430\u0442\u044f\u0442 409 \u043c\u043a\u0441 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u0442.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ecc\/ef2\/884\/eccef288451552de65c6763f095abeaa.png\" alt=\"\u041a\u0430\u0436\u0434\u043e\u0435 \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443\" width=\"1362\" height=\"810\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ecc\/ef2\/884\/eccef288451552de65c6763f095abeaa.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ecc\/ef2\/884\/eccef288451552de65c6763f095abeaa.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u0436\u0434\u043e\u0435 \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u0442\u0440\u043e\u0435 \u0445\u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438: \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0443\u0436\u0435 \u043e\u043f\u043b\u0430\u0447\u0435\u043d\u0430, \u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0435\u0451 \u043e\u043a\u0443\u043f\u0438\u043b, \u0435\u0449\u0451 \u043d\u0435\u0442. \u0414\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 &#8212; \u0432 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u0430 \u0445\u0443\u0436\u0435, \u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043c\u0435\u043b\u043a\u043e\u0439 \u043a\u0443\u0447\u0435 \u0432\u0434\u0432\u043e\u0435 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c. \u0427\u0435\u0442\u044b\u0440\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438. \u0412\u044b\u0438\u0433\u0440\u044b\u0448 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0438: \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 601 \u043c\u0441 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 328, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u043b\u043d\u043e\u0439 \u043f\u0430\u0443\u0437\u044b \u0441\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f 273 \u043c\u0441.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u0442\u043e\u0447\u0435\u043a \u043a\u0440\u0438\u0432\u0430\u044f \u0440\u0430\u0441\u0442\u0451\u0442 \u043f\u043e\u0447\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e: \u043a\u0430\u0436\u0434\u043e\u0435 \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u0430, \u0438 \u0432\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0443\u0447\u0438 \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e. \u042d\u0442\u043e\u0433\u043e \u043e\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0438 \u0436\u0434\u0443\u0442 &#8212; \u0440\u0430\u0431\u043e\u0442\u0430 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0430\u0439\u0441\u044b, \u0441\u043b\u0430\u0439\u0441\u044b \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e \u044f\u0434\u0440\u0430\u043c.<\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0443\u0447\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u0448\u0430\u0435\u0442, \u0441 \u043a\u0430\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0438\u0433\u0440\u044b\u0448. \u0427\u0435\u043c \u0442\u043e\u043b\u0449\u0435 \u0441\u043b\u0430\u0439\u0441 \u043d\u0430 \u0432\u043e\u0440\u043a\u0435\u0440, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0435\u0441\u0438\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0446\u0435\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430: \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432\u043e\u0441\u0435\u043c\u044c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u0430\u044e\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0432 1.83 \u0440\u0430\u0437\u0430, \u043d\u0430 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u0432 1.22.<\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u044f\u0434\u0435\u0440 \u043c\u0430\u0448\u0438\u043d\u044b. \u041d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u044f\u0434\u0440\u0430\u0445 \u044d\u0442\u043e \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430, \u043d\u0430 \u0434\u0432\u0443\u0445 &#8212; \u043e\u0434\u0438\u043d, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0435 \u0442\u043e\u0447\u043a\u0438 \u0438\u0437 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u0440\u0438\u0432\u043e\u0439. <code>num_threads<\/code> \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u044f\u0432\u043d\u043e.<\/p>\n<h4>\u041a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f<\/h4>\n<p>\u0421\u043e\u0432\u043f\u0430\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0435 \u0432\u0435\u0449\u0438: \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u0441\u043e\u0442\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043e\u043a \u043a\u0430\u0436\u0434\u044b\u0439 \u0438 \u0432\u043e\u0441\u0435\u043c\u044c \u044f\u0434\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0434\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u0431\u043e\u0440\u043a\u0443. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0443\u0436\u0435 \u043d\u0430 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u0442\u0430\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0438 \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u0443\u0447\u0430, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 &#8212; \u043f\u043e\u0447\u0442\u0438 \u043f\u044f\u0442\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u0443\u0437\u044b \u043d\u0430 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438 \u0442\u044b\u0441\u044f\u0447\u0430\u0445, \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435.<\/p>\n<p>\u0424\u043e\u0440\u043c\u0430 \u043a\u0443\u0447\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043b\u044e\u0431\u0430\u044f. \u041a\u044d\u0448 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0438\u043b\u0438 \u0438\u043d\u0434\u0435\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0430, \u0441\u0435\u0441\u0441\u0438\u044f ORM \u0441 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u043c\u0438 \u0442\u044b\u0441\u044f\u0447 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 &#8212; \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u0432\u0441\u0451.<\/p>\n<p><code>min_generation=2<\/code> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u0438\u0434\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445, \u0438 \u043d\u0430 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0435\u0451 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e &#8212; 0.493 \u043c\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 0.489. \u041e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0440\u043e\u0433 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442: \u043c\u043e\u043b\u043e\u0434\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0447\u0430\u0441\u0442\u044b\u0435, \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u043b\u0430\u0442\u0438\u0442 \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0446\u0438\u043a\u043b \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e 0.75-0.84 \u043c\u0441.<\/p>\n<h4>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435 \u0434\u043e \u0444\u043e\u0440\u043a\u0430<\/h4>\n<p>\u0412\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u0430\u0451\u0442 \u043e\u0434\u043d\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435 \u0434\u043e \u0444\u043e\u0440\u043a\u0430:<\/p>\n<pre><code class=\"python\">import cinderximport cinderx.jit as jitfrom cinderx.compiler.strict.loader import install as install_strict_loadercinderx.install_frame_evaluator()install_strict_loader()jit.enable()import appcinderx.enable_parallel_gc(min_generation=2, num_threads=N)jit.precompile_all(workers=N)cinderx.immortalize_heap()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435: 88 \u043c\u0441 \u043d\u0430 \u0434\u0432\u0435\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0443\u0442 \u0432\u0430\u0436\u0435\u043d: \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 JIT \u0443\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <code>jit.enable()<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0442\u043e\u044f\u0442\u044c \u0434\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f &#8212; \u0438\u043d\u0430\u0447\u0435 <code>precompile_all<\/code> \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0445\u043e\u043b\u043e\u0441\u0442\u0443\u044e. \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0444\u043e\u0440\u043a\u0430\u0435\u0442\u0441\u044f, \u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u043e\u0440\u043a\u0435\u0440\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0443\u043b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.<\/p>\n<h3>\u0412\u043e\u0440\u043a\u0448\u043e\u043f: \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0435<\/h3>\n<p>\u0421\u0435\u0440\u0432\u0438\u0441 \u0432\u044b\u0434\u0430\u0451\u0442 item-to-item \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u043c\u0443 \u0433\u0440\u0430\u0444\u0443 \u0441\u043e\u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c\u043e\u0441\u0442\u0438. \u0412 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441\u0442\u043e \u0442\u044b\u0441\u044f\u0447 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0438 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0442\u044b\u0441\u044f\u0447 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0433\u0440\u0430\u0444 &#8212; \u0434\u0432\u0430 \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0440\u0451\u0431\u0435\u0440. \u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0432\u043f\u044f\u0442\u0435\u0440\u043e \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0433\u0443\u0449\u0435 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u0438\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0442\u0440\u0438 \u0432\u043e\u0441\u044c\u043c\u044b\u0445 \u0432\u0441\u0435\u0445 \u0440\u0451\u0431\u0435\u0440, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0431\u0445\u043e\u0434 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u044d\u0442\u0443 \u0441\u0435\u0440\u0434\u0446\u0435\u0432\u0438\u043d\u0443. \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0442\u044b\u0441\u044f\u0447 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0438 \u0442\u0440\u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p>\u0422\u0440\u0438 \u0440\u0443\u0447\u043a\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043f\u043e \u0442\u0440\u0451\u043c \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0440\u0443\u0447\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0433\u0434\u0435 \u0432\u0440\u0435\u043c\u044f<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>POST \/v1\/recommendations<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437 \u0411\u0414, \u043e\u0431\u0445\u043e\u0434 \u0433\u0440\u0430\u0444\u0430 \u043d\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 2, \u0441\u043a\u043e\u0440\u0438\u043d\u0433, \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b\u0430, top-K<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>Python-\u0431\u0430\u0439\u0442\u043a\u043e\u0434<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>GET \/v1\/items\/{id}\/similar<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433 \u00d7 \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, top-K \u043f\u043e \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>C, \u0447\u0435\u0440\u0435\u0437 numpy<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>GET \/v1\/items\/{id}\/bundle<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0438\u0442\u0440\u0438\u043d\u0430 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0435\u0442\u043e\u0433\u043e \u043a\u044d\u0448\u0430, \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 \u0441\u043b\u043e\u0442\u043e\u0432, top-K<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043f\u0430\u0443\u0437\u044b \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 &#8212; k6 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0441\u0442\u0443\u043f\u0435\u043d\u044c 60 \u0441 \u043f\u043e\u0441\u043b\u0435 \u043c\u0438\u043d\u0443\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430 \u0432\u043d\u0435 \u0437\u0430\u0447\u0451\u0442\u0430, \u0444\u0438\u043a\u0441\u0442\u0443\u0440\u0430 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439. \u0421\u0442\u0443\u043f\u0435\u043d\u044c \u043f\u0440\u043e\u0432\u0430\u043b\u0435\u043d\u0430, \u0435\u0441\u043b\u0438 p99 \u0432\u044b\u0448\u0435 1000 \u043c\u0441, \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 1 % \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435 95 % \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e.<\/p>\n<h4>POST \/recommend: \u0433\u0434\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434<\/h4>\n<p>\u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u044d\u0442\u043e\u0439 \u0440\u0443\u0447\u043a\u0438 &#8212; \u043e\u0431\u0445\u043e\u0434 \u0433\u0440\u0430\u0444\u0430, \u0441\u043a\u043e\u0440\u0438\u043d\u0433 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b\u0430 &#8212; \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u044b\u0439 Python-\u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e, \u0447\u0442\u043e CinderX \u0443\u043c\u0435\u0435\u0442 \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/962\/3b5\/3c9\/9623b53c9f53de84fa4498bb3b76be79.png\" alt=\"POST \/recommend: \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445\" width=\"1591\" height=\"595\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/962\/3b5\/3c9\/9623b53c9f53de84fa4498bb3b76be79.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/962\/3b5\/3c9\/9623b53c9f53de84fa4498bb3b76be79.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>POST \/recommend: \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0442\u043e\u043a CPython 3.14 \u0434\u0435\u0440\u0436\u0438\u0442 140 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0421\u0442\u043e\u043a \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c JIT &#8212; \u0442\u0435 \u0436\u0435 140. CinderX \u0441\u043e \u0432\u0441\u0435\u043c, \u0447\u0442\u043e \u0432 \u043d\u0451\u043c \u0435\u0441\u0442\u044c: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0442\u0430\u0439\u043c, \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043e \u0444\u043e\u0440\u043a\u0430, \u0438\u043c\u043c\u043e\u0440\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0443\u0447\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a. \u0418 <strong>\u0442\u0435 \u0436\u0435 140<\/strong>.<\/p>\n<p>\u0422\u0438\u043f\u044b \u043d\u0430 \u044f\u0434\u0440\u0435 \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c JIT &#8212; <strong>250 rps<\/strong>, \u043f\u043e\u0447\u0442\u0438 \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0442\u043e\u043a\u0430, \u0438 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430 \u043f\u0440\u0430\u0432\u043e\u043a \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/655\/071\/500\/65507150025a865ac1ec7ac0045b686e.png\" alt=\"POST \/recommend: p99 \u043f\u043e\u0434 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439\" width=\"1332\" height=\"897\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/655\/071\/500\/65507150025a865ac1ec7ac0045b686e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/655\/071\/500\/65507150025a865ac1ec7ac0045b686e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>POST \/recommend: p99 \u043f\u043e\u0434 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0441\u0442\u043e\u043a\u0435 \u043f\u0440\u0438 140 rps p99 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 279 \u043c\u0441 &#8212; \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u0436\u0435 \u0443 \u043f\u0440\u0435\u0434\u0435\u043b\u0430. \u0421 \u0442\u0438\u043f\u0430\u043c\u0438 \u0438 JIT \u043f\u0440\u0438 \u0442\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0430\u0447\u0435 p99 \u0440\u0430\u0432\u0435\u043d <strong>13 \u043c\u0441<\/strong>: \u0432 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0440\u0430\u0437 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0438 \u0442\u043e\u0439 \u0436\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041a\u043e\u043b\u0435\u043d\u043e \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u0432\u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0441\u0442\u0443\u043f\u0435\u043d\u044c \u043f\u043e\u0434\u0430\u0447\u0438, \u0438 \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e 250 rps \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 18 \u043c\u0441.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0445\u0432\u043e\u0441\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044e\u0442. \u0423 \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u0434\u0430 p99 \u043d\u0430 140 rps \u043b\u0435\u0436\u0438\u0442 \u043c\u0435\u0436\u0434\u0443 220 \u0438 460 \u043c\u0441, \u0438 \u043a\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 \u043b\u0443\u0447\u0448\u0435 &#8212; \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043a \u043f\u0440\u043e\u0433\u043e\u043d\u0443. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0438\u0434\u043d\u0430 \u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0440\u0443\u0447\u043a\u0435: \u0436\u0438\u0432\u0430\u044f \u043a\u0443\u0447\u0430 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 &#8212; \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0434\u043e \u0444\u043e\u0440\u043a\u0430 \u0438 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c.<\/p>\n<h4>GET \/similar: \u0433\u0434\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 C<\/h4>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u0440\u0443\u0447\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043d\u0443\u044e \u0431\u043b\u0438\u0437\u043e\u0441\u0442\u044c \u0447\u0435\u0440\u0435\u0437 numpy. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0442\u0438\u043f\u044b \u043d\u0430 \u044f\u0434\u0440\u0435 \u0434\u0430\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0434\u0432\u043e\u0435, \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0445\u043e\u0434: \u0430 \u0435\u0441\u043b\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0435\u0451? \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e.<\/p>\n<p>\u0422\u0440\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b: <code>\/similar<\/code> \u0434\u0435\u0440\u0436\u0438\u0442 330 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u043d\u0430 \u0441\u0442\u043e\u043a\u0435, \u0438 \u043d\u0430 \u0441\u0442\u043e\u043a\u0435 \u0441 tier 2, \u0438 \u043d\u0430 CinderX \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438. \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u0430\u044f, \u0433\u0434\u0435 \u043d\u0430 Static Python \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d \u0443\u0436\u0435 \u0438 \u0441\u043a\u0430\u043d, \u0434\u0430\u0451\u0442 35, \u0438 p99 \u043d\u0430 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0430\u0447\u0435 \u0440\u0430\u0441\u0442\u0451\u0442 \u0441 12 \u043c\u0441 \u0434\u043e 246.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/976\/6f2\/868\/9766f2868bb6e4c8208f1da78c90b4ed.png\" alt=\"GET \/similar: \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445\" width=\"1615\" height=\"503\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/976\/6f2\/868\/9766f2868bb6e4c8208f1da78c90b4ed.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/976\/6f2\/868\/9766f2868bb6e4c8208f1da78c90b4ed.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>GET \/similar: \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0432\u044b\u0435 \u0442\u0440\u0438 \u043f\u043e\u043b\u043e\u0441\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e: CinderX \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u0430 \u0432 \u044d\u0442\u043e\u0439 \u0440\u0443\u0447\u043a\u0435 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e &#8212; \u0440\u0430\u0431\u043e\u0442\u0430 \u0448\u043b\u0430 \u0432 numpy. \u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u043c\u0435\u0440 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u043a\u0430\u043d\u0430 \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442: 7.72 \u043c\u0441 \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, 7.79 \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c, 8.35 \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c. \u0411\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0427\u0435\u0442\u0432\u0451\u0440\u0442\u0430\u044f &#8212; \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0431\u044b\u043b\u043e \u0447\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c. \u041e\u043d \u0435\u0451 \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u043b, \u0441\u0438\u043b\u044c\u043d\u043e: \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0430\u043d \u0431\u0435\u0437 JIT \u0438\u0434\u0451\u0442 6310 \u043c\u0441, \u0441 JIT &#8212; 109, \u0432 \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u0432\u043e\u0441\u0435\u043c\u044c \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041d\u043e \u0440\u0443\u0447\u043a\u0430 \u0432 \u0441\u0443\u043c\u043c\u0435 \u0441\u0442\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0434\u0435\u0432\u044f\u0442\u044c \u0440\u0430\u0437 \u0445\u0443\u0436\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0430 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0435 \u0441\u0442\u043e\u0438\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e.<\/p>\n<p>\u041d\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u0445 \u0432\u0438\u0434\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1d0\/2ef\/f40\/1d02eff403a7e92b9bc2eef2d0c5c954.png\" alt=\"GET \/similar: p99 \u043f\u043e\u0434 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439\" width=\"1344\" height=\"897\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1d0\/2ef\/f40\/1d02eff403a7e92b9bc2eef2d0c5c954.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1d0\/2ef\/f40\/1d02eff403a7e92b9bc2eef2d0c5c954.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>GET \/similar: p99 \u043f\u043e\u0434 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0440\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u043b\u0435\u0436\u0430\u0442 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0435 \u043d\u0430 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u0438-\u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0434\u043e 110-\u0439 \u043f\u043e\u0434\u0430\u0447\u0438, \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043e 14-22 \u043c\u0441 \u0438 \u043e\u0431\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 330-\u0439. \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u0430 182 \u043c\u0441 &#8212; \u0432 \u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0440\u0430\u0437 \u0432\u044b\u0448\u0435 &#8212; \u0438 \u0432\u044b\u043b\u0435\u0442\u0430\u0435\u0442 \u0437\u0430 \u0431\u044e\u0434\u0436\u0435\u0442 \u0443\u0436\u0435 \u043d\u0430 \u0448\u0435\u0441\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041a\u043e\u043b\u0435\u043d\u043e \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u0432\u043b\u0435\u0432\u043e \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0442\u0443\u043f\u0435\u043d\u0438 \u043f\u043e\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0421 \u0445\u0432\u043e\u0441\u0442\u043e\u043c \u0437\u0434\u0435\u0441\u044c \u0442\u0430 \u0436\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u0447\u0442\u043e \u0438 \u043d\u0430 <code>\/recommend<\/code>: \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441 \u043d\u0438\u043c \u043d\u0438\u0447\u0435\u0433\u043e. \u0414\u043e 110 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0432\u0441\u0435 \u0442\u0440\u0438 \u0434\u0430\u044e\u0442 \u043f\u043e 12-13 \u043c\u0441, \u043d\u0430 190-\u0439 &#8212; 14-15, \u043d\u0430 330-\u0439 \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043e 17-22, \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0430\u043c \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0421\u0447\u0438\u0442\u0430\u0435\u0442 \u044d\u0442\u0430 \u0440\u0443\u0447\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 numpy, \u043d\u0430\u0434 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0434\u043e \u0444\u043e\u0440\u043a\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u043c\u043c\u043e\u0440\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0431\u0440\u0430\u043b\u0430 \u0438\u0437 \u043e\u0431\u0445\u043e\u0434\u0430.<\/p>\n<p><code>\/recommend<\/code> \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043d\u0430 250 rps.<\/p>\n<p>\u0414\u043e\u043b\u044e \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c, \u043d\u043e \u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c: \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0437 numpy \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 Python \u043e\u0431\u043e\u0448\u0451\u043b\u0441\u044f \u0432 \u0434\u0435\u0432\u044f\u0442\u044c \u0440\u0430\u0437 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u0434\u0440\u0430 \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u0430 \u0432\u0434\u0432\u043e\u0435.<\/p>\n<h4>GET \/bundle: \u0433\u0434\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0430\u0443\u0437\u044b \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430<\/h4>\n<p>\u0422\u0440\u0435\u0442\u044c\u044f \u0440\u0443\u0447\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0440\u043e\u0433\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430, \u0430 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u043d\u0435\u0439. \u0412\u043e\u0440\u043a\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u0430\u0435\u0442 \u043a\u044d\u0448 \u0432\u0438\u0442\u0440\u0438\u043d: \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0441\u043e\u0440\u043e\u043a\u0430 \u0442\u044b\u0441\u044f\u0447 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 &#8212; \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0433\u0440\u0430\u0444\u0443 \u0441\u043e\u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c\u043e\u0441\u0442\u0438, \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u043f\u043e \u043f\u044f\u0442\u0438 \u0441\u043f\u0438\u0441\u043a\u0430\u043c \u0432 \u0441\u0442\u043e \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0432\u043e\u0441\u0435\u043c\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0430\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u0451\u0448\u0435\u0432: \u0432\u0437\u044f\u0442\u044c \u0432\u0438\u0442\u0440\u0438\u043d\u0443 \u0438\u0437 \u043a\u044d\u0448\u0430, \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u043e \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0432\u043e\u0441\u0435\u043c\u044c \u0441\u043b\u043e\u0442\u043e\u0432, \u043e\u0442\u0434\u0430\u0442\u044c \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435. \u041d\u0430 \u0434\u0432\u0443\u0445 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 &#8212; \u0441\u0442\u043e\u043a, \u0433\u0434\u0435 \u043e\u043d\u0430 \u043e\u0442 \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043a \u043f\u0440\u043e\u0433\u043e\u043d\u0443 \u0441\u043a\u0430\u0447\u0435\u0442 \u043c\u0435\u0436\u0434\u0443 1.9 \u0438 12.8 \u043c\u0441.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e\u0442 \u043a\u044d\u0448 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435: \u0434\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0440\u043e\u043a \u0442\u044b\u0441\u044f\u0447 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043f\u044f\u0442\u044c \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0432\u043e\u0441\u0435\u043c\u044c\u0441\u043e\u0442 \u0442\u044b\u0441\u044f\u0447 \u0441\u0441\u044b\u043b\u043e\u043a, \u0441\u0442\u043e \u0441\u0435\u043c\u044c \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442. \u0420\u043e\u0432\u043d\u043e \u0442\u0430 \u0444\u043e\u0440\u043c\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041d\u043e \u043f\u043e\u0434 \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0443 \u044d\u0442\u043e\u0442 \u043a\u044d\u0448 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442. <code>immortalize_heap()<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 gunicorn, \u0434\u043e \u0444\u043e\u0440\u043a\u0430, \u0438 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437 \u043e\u0431\u0445\u043e\u0434\u0430 \u0433\u0440\u0430\u0444, \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0438 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438. \u0412\u0438\u0442\u0440\u0438\u043d\u044b \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0432 \u0432\u043e\u0440\u043a\u0435\u0440\u0435, \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043a\u0430, \u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438.<\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u0437\u0434\u0435\u0441\u044c \u0438\u0434\u0451\u0442 \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443, \u0440\u0430\u0437 \u0432 \u0434\u0432\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u044d\u0442\u043e\u0439 \u0440\u0443\u0447\u043a\u0438 \u0435\u0441\u0442\u044c \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435\u0442 \u0443 \u0434\u0432\u0443\u0445 \u0434\u0440\u0443\u0433\u0438\u0445: \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u0443\u0437\u044b, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0451 \u0441\u043b\u0435\u0434 \u0432 \u0445\u0432\u043e\u0441\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ef\/4ae\/8f6\/1ef4ae8f6534d49ec1a30711c95aec55.png\" alt=\"\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439\" width=\"1317\" height=\"676\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1ef\/4ae\/8f6\/1ef4ae8f6534d49ec1a30711c95aec55.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ef\/4ae\/8f6\/1ef4ae8f6534d49ec1a30711c95aec55.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0430 \u0441\u043d\u0438\u043c\u0430\u0435\u0442 1.76 \u0440\u0430\u0437\u0430, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0441\u0432\u0435\u0440\u0445\u0443 &#8212; \u0435\u0449\u0451 1.48. \u0412\u043c\u0435\u0441\u0442\u0435 269 \u043c\u0441 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 103, \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 424 \u0434\u043e 221. \u041d\u0430 tier 2 \u043f\u0430\u0443\u0437\u0430 \u0442\u0430 \u0436\u0435, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u043e\u043a\u0435: 273 \u043c\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 269. JIT \u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0438\u0433\u0434\u0435.<\/p>\n<p>\u0401\u043c\u043a\u043e\u0441\u0442\u044c \u044d\u0442\u043e \u043d\u0435 \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0432\u043e\u0432\u0441\u0435: 4500 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432\u0438\u0434\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0445\u0432\u043e\u0441\u0442\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/00c\/a56\/e55\/00ca56e55cf565cfb137f7e2c47552be.png\" alt=\"GET \/bundle: p99 \u043f\u043e\u0434 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439\" width=\"1387\" height=\"910\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/00c\/a56\/e55\/00ca56e55cf565cfb137f7e2c47552be.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/00c\/a56\/e55\/00ca56e55cf565cfb137f7e2c47552be.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>GET \/bundle: p99 \u043f\u043e\u0434 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043e \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0442\u044b\u0441\u044f\u0447 \u043e\u0431\u0435 \u043b\u0438\u043d\u0438\u0438 CinderX \u0438\u0434\u0443\u0442 \u043d\u0438\u0436\u0435 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u043a\u043e\u0432\u044b\u0445, \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u043d\u0430 \u043f\u0430\u0443\u0437\u0430\u0445. \u041d\u0430 4500 \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0430 \u0431\u0435\u0437 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u0432\u044b\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0432\u0435\u0440\u0445, \u0430 \u043d\u0430 \u043f\u044f\u0442\u0438 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u0431\u044e\u0434\u0436\u0435\u0442 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435: \u0442\u0430\u043c \u0443\u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0430 \u043d\u0435 \u0441\u0431\u043e\u0440\u043a\u0430.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0440\u043e\u0441 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0445\u043e\u0434\u0430\u043c\u0438 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u0432\u0435\u043b\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u0430 \u0440\u0430\u0437\u043c\u0430\u0445 \u043e\u0442 \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u043a \u0445\u0443\u0434\u0448\u0435\u043c\u0443.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f72\/71a\/f04\/f7271af049f82174848412b558cbd198.png\" alt=\"GET \/bundle: p99 \u0438 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0445\u043e\u0434\u0430\u043c\u0438\" width=\"1317\" height=\"794\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f72\/71a\/f04\/f7271af049f82174848412b558cbd198.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f72\/71a\/f04\/f7271af049f82174848412b558cbd198.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>GET \/bundle: p99 \u0438 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0445\u043e\u0434\u0430\u043c\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u043e\u043a\u043e\u043c \u0438 \u043f\u043e\u043b\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0447\u0438\u0441\u0442\u0430\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 \u043f\u043e\u0434\u0430\u0447\u0430\u0445 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445: 346 \u043c\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 172 \u043d\u0430 \u0442\u0440\u0451\u0445 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u0438 323 \u043f\u0440\u043e\u0442\u0438\u0432 199 \u043d\u0430 3500 &#8212; \u0442\u0430\u043c \u0440\u0430\u0437\u043c\u0430\u0445\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 CinderX \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0443 \u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0440\u0451\u0445 \u0442\u044b\u0441\u044f\u0447\u0430\u0445, 249 \u043f\u0440\u043e\u0442\u0438\u0432 172. \u0414\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u044f\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e: \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u0440\u0430\u0437\u043c\u0430\u0445\u0438 \u043d\u0430\u0435\u0437\u0436\u0430\u044e\u0442 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430, \u0430 \u043d\u0430 4500 \u044d\u0442\u043e \u0443\u0436\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0451\u043c\u043a\u043e\u0441\u0442\u0438, \u0433\u0434\u0435 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 \u043d\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0442\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043c\u0435\u0440 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u0443\u0437\u044b \u0438 \u043d\u0443\u0436\u0435\u043d: \u0442\u0430\u043c \u044d\u0442\u0438 \u0434\u0432\u0430 \u0448\u0430\u0433\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435, \u0430 \u043d\u0435 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0434\u0430\u0447\u0435 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445.<\/p>\n<p>\u0426\u0438\u0444\u0440\u044b \u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441 \u043c\u0438\u043a\u0440\u043e\u0437\u0430\u043c\u0435\u0440\u043e\u043c. \u041f\u043e\u043b\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0443\u0447\u0435 \u0441\u0442\u043e\u0438\u0442 127 \u043c\u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 77 \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 1.66 \u0440\u0430\u0437\u0430. \u0412 \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u043f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0442\u043e\u0442 \u0436\u0435 \u0448\u0430\u0433 \u0434\u0430\u0451\u0442 1.48.<\/p>\n<h3>\u0427\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442<\/h3>\n<p>\u0401\u043c\u043a\u043e\u0441\u0442\u044c \u0441\u0434\u0432\u0438\u043d\u0443\u043b \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431: \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u043e\u0431\u0445\u043e\u0434\u0430 \u0433\u0440\u0430\u0444\u0430 \u043f\u043e\u0434 JIT, 250 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043f\u0440\u043e\u0442\u0438\u0432 140 \u0443 \u0441\u0442\u043e\u043a\u0430. \u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433\u0430\u043c\u0438, \u043d\u0435 \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u043e \u0435\u0451 \u043d\u0438 \u0440\u0430\u0437\u0443 &#8212; \u0441\u0442\u043e\u043a, \u0441\u0442\u043e\u043a \u0441 tier 2 \u0438 CinderX \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438 \u0434\u0430\u043b\u0438 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 140.<\/p>\n<p><strong>\u0422\u0438\u043f\u044b \u0438 JIT \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u0435.<\/strong> \u0422\u0438\u043f\u044b \u0431\u0435\u0437 JIT &#8212; \u0440\u0435\u0433\u0440\u0435\u0441\u0441 \u0432 3.4 \u0440\u0430\u0437\u0430: 172 \u043d\u0441 \u043d\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0442\u0438\u0432 50.9 \u0443 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <code>int<\/code>. JIT \u0431\u0435\u0437 \u0442\u0438\u043f\u043e\u0432 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u043d\u043e \u043d\u0430 \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0435 \u044d\u0442\u043e \u0434\u0430\u043b\u043e \u043d\u043e\u043b\u044c. \u0412\u043c\u0435\u0441\u0442\u0435 &#8212; 0.676 \u043d\u0441.<\/p>\n<p><strong>\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0437 C \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 Python \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0436\u0435, \u0447\u0435\u043c \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442.<\/strong> \u0422\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0430\u043d \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u043b\u0441\u044f \u0432 \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442 \u0432\u043e\u0441\u0435\u043c\u044c \u0440\u0430\u0437, \u0430 \u0440\u0443\u0447\u043a\u0430 \u0432 \u0441\u0443\u043c\u043c\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0430 \u0434\u0435\u0432\u044f\u0442\u044c \u0440\u0430\u0437 \u0451\u043c\u043a\u043e\u0441\u0442\u0438: \u0434\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0430 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u0448\u043b\u0430 \u0432 numpy \u0438 \u043d\u0435 \u0441\u0442\u043e\u0438\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e.<\/p>\n<p><strong>\u0424\u043b\u0430\u0433\u0438 \u043f\u0440\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u043d\u0435 \u0434\u0432\u0438\u0433\u0430\u044e\u0442, \u043e\u043d\u0438 \u0443\u043a\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u0430\u0443\u0437\u044b.<\/strong> \u041d\u0430 \u0434\u0432\u0443\u0445 \u0440\u0443\u0447\u043a\u0430\u0445 \u0438\u0437 \u0442\u0440\u0451\u0445 \u044d\u0442\u043e \u0434\u0430\u043b\u043e \u0440\u043e\u0432\u043d\u043e \u043d\u043e\u043b\u044c: \u0432\u0441\u0451, \u0447\u0442\u043e \u044d\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0447\u0438\u0442\u0430\u044e\u0442, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u0434\u043e \u0444\u043e\u0440\u043a\u0430. \u041d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u0438\u0442 \u0441\u0432\u043e\u0439 \u043a\u044d\u0448 \u0443\u0436\u0435 \u0432 \u0432\u043e\u0440\u043a\u0435\u0440\u0435, \u043f\u0430\u0443\u0437\u0430 \u0443\u043a\u043e\u0440\u043e\u0442\u0438\u043b\u0430\u0441\u044c \u0441 269 \u043c\u0441 \u0434\u043e 103.<\/p>\n<p><strong>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0443 \u043d\u0443\u0436\u043d\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u0441\u043e\u0442\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043e\u043a \u0438 \u043a\u0443\u0447\u0430, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435 \u0444\u043e\u0440\u043a\u0430.<\/strong> \u041d\u0430 \u0442\u0440\u0451\u0445 \u0441\u0441\u044b\u043b\u043a\u0430\u0445 \u043e\u043d \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<\/p>\n<p><strong>\u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u043e\u043b\u044e \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0430\u0447\u043d\u0451\u0442\u0435.<\/strong> \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 &#8212; \u044d\u0442\u043e \u043e\u0431\u0432\u044f\u0437\u043a\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 numpy, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0411\u0414 \u0438 pydantic, \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438 \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043e\u0431\u0445\u043e\u0434 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Python &#8212; \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0432\u0434\u0432\u043e\u0435. \u041f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u0440\u0430\u0437\u0443, \u0430 \u043f\u043e\u0440\u0442 \u043d\u0430 Static Python &#8212; \u044d\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c: \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430.<\/p>\n<p>\u0418 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e \u0441\u0430\u043c\u0438 \u0437\u0430\u043c\u0435\u0440\u044b. \u041b\u044e\u0431\u043e\u0439 \u0437\u0430\u043c\u0435\u0440 JIT \u0447\u0435\u0440\u0435\u0437 <code>force_compile<\/code> \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0443\u0448\u043b\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041f\u043e\u043a\u0430 \u0432\u044b \u0435\u0451 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438, <code>is_jit_compiled()<\/code> \u043e\u0442\u0432\u0435\u0442\u0438\u0442 <code>True<\/code> \u0438 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440.<\/p>\n<h3>\u0421\u0441\u044b\u043b\u043a\u0438<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/facebookincubator\/cinderx\" rel=\"noopener nofollow\">CinderX<\/a> &#8212; \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u0430\u0442\u044c\u044f<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/facebookincubator\/MetaPython\" rel=\"noopener nofollow\">MetaPython<\/a> &#8212; \u0444\u043e\u0440\u043a CPython \u043e\u0442 Meta, \u043f\u043e\u0432\u0435\u0440\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e CinderX \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f Cinder<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/deadlovelll\/cinder_cinderx_article\" rel=\"noopener nofollow\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u0437\u0430\u043c\u0435\u0440\u0430\u043c\u0438<\/a> &#8212; \u043a\u043e\u0434 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u0441\u044b\u0440\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 JSON \u0438 \u0441\u0430\u043c \u0441\u0435\u0440\u0432\u0438\u0441. \u041a\u0430\u0436\u0434\u0430\u044f \u0446\u0438\u0444\u0440\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\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\/1084420\/\">https:\/\/habr.com\/ru\/articles\/1084420\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0423 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u044f Python \u0435\u0441\u0442\u044c \u0447\u0438\u0441\u043b\u043e: \u0432\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043e\u043d \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041c\u0435\u0440\u044f\u044e\u0442 \u0435\u0433\u043e \u043d\u0430 \u044f\u0434\u0440\u0430\u0445 &#8212; \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430, \u043e\u0431\u0445\u043e\u0434 \u0434\u0435\u0440\u0435\u0432\u0430, \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u0432 \u0446\u0438\u043a\u043b\u0435. \u0421\u0435\u0440\u0432\u0438\u0441 \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0435 \u0442\u0430\u043a: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0430\u0437\u0443, \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432 numpy, \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442, \u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e, \u0432 \u043d\u0451\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f. CinderX \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043d\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. \u0414\u043e\u043b\u044f \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 &#8212; \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0438 \u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u043d\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u0430, \u00ab\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442\u00bb \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435\u043c.\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 CinderXCinderX &#8212; \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043a CPython: \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041e\u043d \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 frame evaluator (\u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e CPython \u0437\u043e\u0432\u0451\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430), \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e.\u0412\u043d\u0443\u0442\u0440\u0438:JIT &#8212; \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.Static Python &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 Python. \u041f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u043a\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 JIT \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430 &#8212; \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0435 \u0444\u0430\u0437\u044b \u0441\u0431\u043e\u0440\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u043c.\u041e\u0431\u043b\u0435\u0433\u0447\u0451\u043d\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u044b &#8212; \u0432 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u0430\u0434\u0440\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043a\u0430\u0434\u0440. \u0420\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 JIT.\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b &#8212; \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.JIT\u0412 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u043c CPython 3.14 JIT \u0443\u0436\u0435 \u0435\u0441\u0442\u044c: &#8212;enable-experimental-jit \u0438\u0437 PEP 744, \u043e\u043d \u0436\u0435 tier 2. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u0442\u043e\u0438\u0442 \u0438\u043d\u0430\u0447\u0435: \u0437\u0430\u0447\u0435\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d.\u042d\u0442\u043e \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430CinderXCPython 3.14, tier 2\u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438\u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c\u0442\u0440\u0430\u0441\u0441\u0430 \u0438\u0437 uop\u2019\u043e\u0432, \u0434\u043e 800 \u0448\u0442\u0443\u043a\u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e\u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: \u0441\u0447\u0451\u0442\u0447\u0438\u043a, jit-\u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043b\u0438 force_compile\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0441\u0447\u0451\u0442\u0430 \u0441 4095\u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435HIR, \u0437\u0430\u0442\u0435\u043c LIR, \u043e\u0431\u0430 \u0432 SSA, HIR \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0435\u0442 &#8212; \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0430 uop\u2019\u043e\u0432\u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0447\u0435\u0440\u0435\u0437 asmjitmemcpy \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u043e\u0432 \u043f\u043b\u044e\u0441 \u043f\u0430\u0442\u0447 \u0434\u044b\u0440\u043e\u043a\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432linear scan \u043f\u043e SSA \u0441 \u0440\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u0432\u043d\u0435\u0442\u0433\u0434\u0435 \u0436\u0438\u0432\u0443\u0442 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445\u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u043a\u0430\u0434\u0440\u0430, \u0432 \u043f\u0430\u043c\u044f\u0442\u0438\u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u0433\u043f\u043e HIR, \u0431\u044e\u0434\u0436\u0435\u0442 2000 \u043e\u043f\u043a\u043e\u0434\u043e\u0432\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u0442\u0440\u0430\u0441\u0441\u044b \u0441\u043a\u0432\u043e\u0437\u044c \u0434\u043e 5 \u043a\u0430\u0434\u0440\u043e\u0432\u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0441\u044b\u043b\u043e\u043a\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043a\u0430\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435\u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438\u043d\u0438\u0447\u0435\u0433\u043eLLVM 19, \u0442\u043e\u043b\u044c\u043a\u043e clangCPython: \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u043b\u0430\u0442\u043a\u0438\u0418\u0434\u0435\u044f copy-and-patch \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435.\u0412 \u0434\u0435\u0440\u0435\u0432\u0435 CPython \u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b Tools\/jit\/template.c. \u042d\u0442\u043e \u0442\u0435\u043b\u043e \u043e\u0434\u043d\u043e\u0433\u043e uop\u2019\u0430 (\u043c\u0438\u043a\u0440\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d \u0431\u0430\u0439\u0442\u043a\u043e\u0434), \u043e\u0431\u0451\u0440\u043d\u0443\u0442\u043e\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 (frame, stack_pointer, tstate). \u0412\u0441\u0451, \u0447\u0442\u043e \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u043c, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e \u0434\u044b\u0440\u043a\u0430\u043c\u0438 \u0441 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438: _JIT_OPARG, _JIT_OPERAND0, _JIT_TARGET, _JIT_CONTINUE.\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 CPython clang \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e \u0440\u0430\u0437\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 uop \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043a\u0443\u0441\u043a\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u043e\u0432. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 LLVM 19 \u0441 clang: \u0448\u0430\u0431\u043b\u043e\u043d \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 musttail &#8212; \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0443 GCC.\u0412 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 _PyJIT_Compile \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0440\u0430\u0441\u0441\u0443 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435: \u0438\u0434\u0451\u0442 \u043f\u043e \u043d\u0435\u0439, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u044b\u0440\u043a\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0430, \u043d\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043d\u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0438 \u0434\u0435\u0448\u0451\u0432\u0430\u044f.\u0421\u043a\u043b\u0435\u0439\u043a\u0430 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:#define PATCH_JUMP(ALIAS)                                                \\do {                                                                     \\    PATCH_VALUE(jit_func_preserve_none, jump, ALIAS);                    \\    __attribute__((musttail)) return jump(frame, stack_pointer, tstate); \\} while (0)\u0422\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0430 &#8212; \u044d\u0442\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u044b\u0433\u0430\u0435\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e, \u043d\u0435 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u044f \u0441\u0442\u0435\u043a. \u0421\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0432\u044b\u0437\u043e\u0432\u0430\u0445 preserve_none \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c frame, stack_pointer \u0438 tstate \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043f\u043e \u0432\u0441\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0435.\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e uop\u2019\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043c\u044f\u0442\u044c. \u0420\u0430\u0437 \u043a\u0430\u0436\u0434\u044b\u0439 uop &#8212; \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a, \u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e uop\u2019\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0451\u043b _LOAD_FAST, \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0435\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u0430\u0434\u0440\u0430 (\u0432 \u043f\u0430\u043c\u044f\u0442\u044c), \u043e\u0442\u043a\u0443\u0434\u0430 \u0435\u0433\u043e \u0438 \u0437\u0430\u0431\u0435\u0440\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 uop. \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e.\u0427\u0442\u043e copy-and-patch \u0434\u0430\u0451\u0442: \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442 \u0446\u0438\u043a\u043b \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c switch \u0438 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c. \u041f\u043b\u044e\u0441 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 Python\/optimizer_analysis.c \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u043f\u043e \u0442\u0440\u0430\u0441\u0441\u0435 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e &#8212; \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0435\u0440\u0441\u0438\u0439 \u0442\u0438\u043f\u043e\u0432.\u0427\u0435\u0433\u043e \u043e\u043d \u043d\u0435 \u0434\u0430\u0451\u0442: \u0443 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 uop\u2019\u043e\u0432 \u043d\u0435\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a \u043a\u0430\u0434\u0440\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u0436\u0438\u0432\u043e\u0441\u0442\u0438. \u0421\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435: \u0431\u0435\u0440\u0451\u0442 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0431\u0435\u0441\u0441\u043c\u0435\u0440\u0442\u043d\u0430.\u0422\u0440\u0430\u0441\u0441\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a. translate_bytecode_to_trace \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442 \u0435\u0451 \u0432\u0434\u043e\u043b\u044c \u0433\u043e\u0440\u044f\u0447\u0435\u0433\u043e \u043f\u0443\u0442\u0438 \u043e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430, \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0430\u0437\u0432\u0438\u043b\u043a\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f. \u0423\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0441 1000 \u0438 \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u043e\u043b\u044e \u0441\u043e\u0432\u043f\u0430\u0432\u0448\u0438\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0438\u0436\u0435 333 &#8212; \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0440\u0430\u0441\u0441\u0430 \u043d\u0435 \u0434\u043b\u0438\u043d\u043d\u0435\u0435 800 uop\u2019\u043e\u0432, \u0432\u0433\u043b\u0443\u0431\u044c &#8212; \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u044f\u0442\u0438 \u043a\u0430\u0434\u0440\u043e\u0432.\u0426\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0443\u0442\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a &#8212; \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0441\u0442\u0430\u0434\u0438\u0439, \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0438\u0434\u043d\u043e, \u0432\u043e \u0447\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0441\u0447\u0451\u0442\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0438\u0437 \u0441\u0435\u043c\u0438 \u0441\u0442\u0440\u043e\u043a:\u041f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 JIT \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e CPython 3.14\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0448\u0430\u0433\u0438. \u041f\u043e\u0441\u043b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0442\u0440\u0430\u0441\u0441\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f 47 \u043c\u0438\u043a\u0440\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u0437 78. \u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0441\u043d\u044f\u0442\u043e\u0433\u043e &#8212; _SET_IP \u0438 _CHECK_VALIDITY, \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0438 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0435, \u0430 \u043d\u0435 \u0441\u0430\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041d\u043e \u0437\u0430\u043e\u0434\u043d\u043e \u043e\u043d \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0438\u043f\u044b: \u043f\u0435\u0440\u0435\u0434 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0432\u0443\u0445, \u0430 \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c &#8212; \u043d\u0438 \u043e\u0434\u043d\u043e\u0439.CinderX: \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0415\u0434\u0438\u043d\u0438\u0446\u0430 &#8212; \u043a\u043e\u0434-\u043e\u0431\u044a\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c: \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043c\u0435\u0442\u043e\u0434, \u043b\u044f\u043c\u0431\u0434\u0430. \u041d\u0435 \u0442\u0440\u0430\u0441\u0441\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c: \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435.\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0451\u043d \u0438 \u0442\u0438\u043f\u043e\u0432 (Preloader). \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0430\u0437\u0430, \u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432\u043e \u0432\u0441\u0451\u043c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0435, \u0433\u0434\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c Python. \u041e\u043d\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u0434 LOAD_GLOBAL, \u0442\u0438\u043f\u044b \u0438 \u0446\u0435\u043b\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0434\u043b\u044f \u043e\u043f\u043a\u043e\u0434\u043e\u0432 Static Python. \u041b\u044e\u0431\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 Python \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0430 \u0444\u0430\u0437\u0430 \u0438\u0434\u0451\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434 GIL, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u043e\u0440\u043a\u0435\u0440\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.\u0411\u0430\u0439\u0442\u043a\u043e\u0434 \u0432 HIR. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 CPython \u0441\u0442\u0435\u043a\u043e\u0432\u0430\u044f, \u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043f\u043e\u0434 \u043d\u0435\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e: \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0431\u0435\u0440\u0451\u0442 \u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043b\u0430\u0434\u0451\u0442 \u0442\u0443\u0434\u0430 \u0436\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0435\u0442 \u0438\u043c\u0451\u043d. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u0434\u0430 \u043b\u0438\u0448\u043d\u044e\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043b\u0438\u0448\u043d\u044f\u044f, \u0430 \u043b\u044e\u0431\u043e\u0435 \u0442\u0430\u043a\u043e\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u043a\u0442\u043e \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\u00bb. \u041a \u0441\u0442\u0435\u043a\u0443 \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0432 \u0444\u043e\u0440\u043c\u0443, \u0433\u0434\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0438\u043c\u044f, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0432\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u0438 \u0432\u044b\u0445\u043e\u0434\u044b, \u0430 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0435\u0449\u0451 \u0438 \u0442\u0438\u043f. \u0422\u0438\u043f \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a \u0436\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043a\u0430\u043a \u0438\u043c\u044f: \u0440\u0430\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e JIT \u0443\u0431\u0438\u0440\u0430\u0435\u0442 (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430, \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0441\u0441\u044b\u043b\u043e\u043a), \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0442\u0438\u043f \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c HIR.\u0421\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043e\u043d \u043d\u0435 \u0438\u0437 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430, \u0430 \u0438\u0437 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0431\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 CPython. \u041a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e a + b \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043b\u044b\u0435, \u043e\u043d \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u043f\u043a\u043e\u0434 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 BINARY_OP_ADD_INT. \u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c HIR \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u043f\u043a\u043e\u0434, \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0442\u0438\u043f\u0430:case BINARY_OP_ADD_INT:case BINARY_OP_MULTIPLY_INT:case BINARY_OP_SUBTRACT_INT:  tc.emit&lt;GuardType&gt;(left, TLongExact, left, tc.frame);  tc.emit&lt;GuardType&gt;(right, TLongExact, right, tc.frame);  break;\u0422\u0430\u043a\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c HIR \u0443\u0437\u043d\u0430\u0451\u0442 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0434\u0432\u0435: \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u043d\u0430\u0434 int, float \u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439 \u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439, LOAD_ATTR_MODULE. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u043a\u043e\u0434\u044b \u043e\u043d \u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043e\u0431\u0449\u0438\u0435: \u0432 HIR \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432 \u043e\u0445\u0440\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 &#8212; GuardType \u0438\u0437 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0432\u044b\u0448\u0435.\u041e\u0442\u0441\u044e\u0434\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445: JIT \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0443\u0441\u043f\u0435\u043b \u0443\u0432\u0438\u0434\u0435\u0442\u044c. \u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043d\u0435 \u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: HIR \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e GuardType.\u041f\u0440\u043e\u0445\u043e\u0434\u044b \u043f\u043e HIR. \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f &#8212; \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0432 SSA \u0438 \u043f\u0440\u043e\u0442\u044f\u0436\u043a\u0430 \u0442\u0438\u043f\u043e\u0432. \u0412 SSA \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u043c\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u00ab\u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u043e\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb &#8212; \u043e\u0434\u0438\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435, \u0430 \u043d\u0435 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0433\u0440\u0430\u0444\u0443. \u041d\u0430 \u044d\u0442\u043e\u043c \u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044b \u043d\u0438\u0436\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439: \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439, \u0441\u043d\u044f\u0442\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0442\u0438\u043f\u0430, \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 phi-\u0443\u0437\u043b\u043e\u0432, \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u0433, \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0447\u0438\u0441\u0442\u043a\u0430 \u0433\u0440\u0430\u0444\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.\u0418\u043d\u043b\u0430\u0439\u043d\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0431\u044e\u0434\u0436\u0435\u0442\u0443: \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#8212; \u0447\u0438\u0441\u043b\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043e\u043f\u043a\u043e\u0434\u043e\u0432, \u043b\u0438\u043c\u0438\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 2000. \u041d\u0430\u0431\u0440\u0430\u043b\u0438 \u0431\u044e\u0434\u0436\u0435\u0442, \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435 \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043c.\u041f\u043e\u0447\u0442\u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0438\u0434\u0451\u0442 RefcountInsertion. \u0422\u0430\u043a \u043f\u043e\u0437\u0434\u043d\u043e &#8212; \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0438 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438: \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0445\u043e\u0434\u0430\u0445. \u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 CinderX \u043d\u0435 \u0437\u0430\u0448\u0438\u0442 \u0432 \u043e\u043f\u043a\u043e\u0434\u044b: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0441\u0430\u043c, \u043f\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u0430\u044f HIR-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0438 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0440\u0430\u0434\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438. \u0417\u0430\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442 incref\/decref \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0445 \u043f\u0430\u0440\u044b.HIR \u0432 LIR \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u041f\u043e HIR \u043d\u0435\u043b\u044c\u0437\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b: \u043e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u0440\u043e \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043b\u043e\u0436\u0438\u0442\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0438\u043f, \u043f\u043e\u0437\u0432\u0430\u0442\u044c), \u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u0443\u0436\u043d\u0430 \u0444\u043e\u0440\u043c\u0430, \u0433\u0434\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0443\u0436\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0435, \u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0435\u0449\u0451 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e: \u0442\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044e \u0435\u0441\u0442\u044c \u0447\u0442\u043e \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c. \u042d\u0442\u043e LIR &#8212; \u0442\u043e\u043d\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c, \u0442\u043e\u0436\u0435 \u0432 SSA. \u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0434\u0430\u0451\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u044f \u043f\u0440\u0438 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0436\u0438\u0437\u043d\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0447\u0430\u0441\u0442\u0438. \u0414\u0430\u043b\u044c\u0448\u0435 x64 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 asmjit.\u0414\u0435\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f. \u0420\u0430\u0437 \u043a\u043e\u0434 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0445\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043d\u0443\u0436\u0435\u043d \u0432\u044b\u0445\u043e\u0434. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 HIR \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 FrameState &#8212; \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u043f\u043a\u043e\u0434\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0435\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432, \u0441\u0442\u0435\u043a \u0431\u043b\u043e\u043a\u043e\u0432. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f Snapshot \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u0442\u043e\u0447\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. Guard \u0431\u0435\u0440\u0451\u0442 \u0431\u0443\u043b\u0435\u0432 \u043e\u043f\u0435\u0440\u0430\u043d\u0434 \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 FrameState \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043d\u0438\u043c\u043a\u0430.\u0412&#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-495363","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/495363","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=495363"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/495363\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=495363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=495363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=495363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}