{"id":112509,"date":"2023-12-26T15:10:22","date_gmt":"2023-12-26T13:10:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/dlya-python-predlozhen-jit-kompilyator-ispolzuyushhij-tehniku-copy-and-patch"},"modified":"2023-12-26T15:10:22","modified_gmt":"2023-12-26T13:10:22","slug":"dlya-python-predlozhen-jit-kompilyator-ispolzuyushhij-tehniku-copy-and-patch","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/dlya-python-predlozhen-jit-kompilyator-ispolzuyushhij-tehniku-copy-and-patch","title":{"rendered":"Der er blevet foresl\u00e5et en JIT-kompilator til Python, der bruger copy-and-patch teknikken","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Brandt Bucher fra Microsoft, en af kerneudviklerne af CPython og arbejder i et team, der fokuserer p\u00e5 at forbedre CPython-interpreterens ydeevne, har offentliggjort en implementering af en JIT-kompilator til Python, der bruger Copy-and-Patch teknikken. Udgivelsen af JIT er planlagt til jul, og annonceteksten er skrevet p\u00e5 vers.     <\/p>\n<p>Den foresl\u00e5ede JIT er bem\u00e6rkelsesv\u00e6rdig for sin meget h\u00f8je hastighed ved kodegenerering, sin enkelhed i vedligeholdelse og fuld integration med interpreterens funktioner. Den foresl\u00e5ede metode muligg\u00f8r automatisk konvertering af en interpreter skrevet i C til en JIT-kompilator, uden separat udarbejdelse af kodegenereringslogik og uden manuel oprettelse af assemblerrepr\u00e6sentationer. Med denne tilgang vil rettelse af en fejl i interpreter automatisk f\u00f8re til l\u00f8sning af det samme problem i JIT, da der anvendes en f\u00e6lles kodegenerator.    <\/p>\n<p>Copy-and-Patch-metoden er baseret p\u00e5, at relocation af kode i hukommelsen ved indl\u00e6sning af objektfiler og udskiftning af maskininstruktioner i stedet for bytekode i JIT er lignende opgaver. N\u00e5r JIT arbejder under programk\u00f8rslen, foretages der en gennemgang af de instruktioner i bytekode, som er genereret af interpreter, og for hver instruktion kopieres den forudkompilerede maskinkode til hukommelsesomr\u00e5det med eksekverbar kode, samt \u00e6ndres instruktionerne dynamisk for at inds\u00e6tte de behandlede data (JIT kopierer de f\u00e6rdige skabeloner af allerede komplierede funktioner og inds\u00e6tter de n\u00f8dvendige v\u00e6rdier, s\u00e5som argumenter og konstanter). Ved indl\u00e6sning af objektfiler kopieres ogs\u00e5 maskinkoden til hukommelsen og eksterne symboler udskiftes.    <\/p>\n<p>I Copy-and-Patch JIT samles et objektfil i ELF-format ved hj\u00e6lp af LLVM, som indeholder data om bytekode-instruktioner og information om n\u00f8dvendig datakompensering. JIT erstatter de instruktioner i bytekode, der er genereret under programinterpretation, med repr\u00e6sentationer i maskinkode, samtidig med at n\u00f8dvendige data til beregninger inds\u00e6ttes. Implementeringen af JIT kr\u00e6ver LLVM som afh\u00e6ngighed under opbygningen, men runtime-komponenterne er ikke knyttet til eksterne afh\u00e6ngigheder og kan reduceres til cirka 300 manuelt skrevne linjer i C og 3000 genererede linjer af C-kode.        <\/p>\n<p>Sammenlignet med traditionelle JIT-v\u00e6rkt\u00f8jer (LLVM -O0) tilbyder den foresl\u00e5ede JIT 100 gange hurtigere kodegenerering og 15% hurtigere resulterende kode. I forhold til kompilering til WebAssembly (Liftoff) genererer den nye JIT koden fem gange hurtigere, og den resulterende kode k\u00f8rer 50% hurtigere. Sammenlignet med den optimerende JIT (LuaJIT), der bruger h\u00e5ndskrevet assemblerkode, viste den foresl\u00e5ede version sig at v\u00e6re hurtigere i 13 af 44 tests, og i gennemsnit var den 35% langsommere, mens den samtidig betydeligt forenklede vedligeholdelsen og reducerede kompleksitetsniveauet i implementeringen.            <center>  <div class=\"youtube-placeholder\" data-id=\"HxSHIpEQRjs\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/HxSHIpEQRjs\/hqdefault.jpg\" alt=\"Afspil video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=60352\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0411\u0440\u0430\u043d\u0434\u0442 \u0411\u0443\u043a\u0435\u0440 (Brandt Bucher) \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Microsoft, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u0447\u0438\u0441\u043b\u043e core-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 CPython \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 CPython, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f Python, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0443\u044e \u0442\u0435\u0445\u043d\u0438\u043a\u0443 Copy-and-Patch. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f JIT \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0435\u043d\u0430 \u043a \u0420\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0443 \u0438 \u0430\u043d\u043e\u043d\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0441\u0442\u0438\u0445\u0430\u0445. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 JIT \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u0435\u043d \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u0441 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-112509","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0411\u0440\u0430\u043d\u0434\u0442 \u0411\u0443\u043a\u0435\u0440 (Brandt Bucher) \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Microsoft, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u0447\u0438\u0441\u043b\u043e core-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 CPython \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 CPython, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/news\/dlya-python-predlozhen-jit-kompilyator-ispolzuyushhij-tehniku-copy-and-patch\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u043b\u044f Python \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0443 copy-and-patch | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0411\u0440\u0430\u043d\u0434\u0442 \u0411\u0443\u043a\u0435\u0440 (Brandt Bucher) \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Microsoft, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u0447\u0438\u0441\u043b\u043e core-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 CPython \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 CPython, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/dlya-python-predlozhen-jit-kompilyator-ispolzuyushhij-tehniku-copy-and-patch\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-12-26T13:10:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-12-26T13:10:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Der er udviklet en JIT-kompilator til Python, der bruger metoden copy-and-patch | ProHoster","description":"Brandt Bucher fra Microsoft, der er en af hovedudviklerne af CPython og arbejder i teamet, som fokuserer p\u00e5 at forbedre ydeevnen af CPython-interpreteren, har offentliggjort en implementering.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/dlya-python-predlozhen-jit-kompilyator-ispolzuyushhij-tehniku-copy-and-patch","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u043b\u044f Python \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0443 copy-and-patch | ProHoster","og:description":"\u0411\u0440\u0430\u043d\u0434\u0442 \u0411\u0443\u043a\u0435\u0440 (Brandt Bucher) \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Microsoft, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u0447\u0438\u0441\u043b\u043e core-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 CPython \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 CPython, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/dlya-python-predlozhen-jit-kompilyator-ispolzuyushhij-tehniku-copy-and-patch","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2023-12-26T13:10:22+00:00","article:modified_time":"2023-12-26T13:10:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/112509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=112509"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/112509\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=112509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=112509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=112509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}