千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 狂攬兩千星,速度百倍提升,高性能Python編譯器Codon火了!

狂攬兩千星,速度百倍提升,高性能Python編譯器Codon火了!

來源:千鋒教育
發(fā)布人:syq
時間: 2022-12-29 11:10:25 1672283425

  眾所周知,Python 是一門簡單易學(xué)、具有強(qiáng)大功能的編程語言,在各種用戶使用統(tǒng)計(jì)榜單中總是名列前茅。相應(yīng)地,圍繞 Python,研究者開發(fā)了各種便捷工具,以更好的服務(wù)于這門語言。

高性能Python編譯器Codon

  編譯器充當(dāng)著高級語言與機(jī)器之間的翻譯官,不同版本的 Python 編譯器已被開發(fā)出來,下面我們將為大家介紹一款新的高性能 Python 編譯器:Codon。該項(xiàng)目上線短短幾天,已收獲 2.2k 星。

眾所周知191

  作為高性能 Python 編譯器,Codon 可將 Python 代碼編譯為本機(jī)機(jī)器代碼,而無需任何運(yùn)行時開銷。在單線程上,Python 的典型加速大約為 10-100 倍或更多。Codon 的性能通常與 C/C++ 的性能相當(dāng)。與 Python 不同,Codon 支持本機(jī)多線程,這可以使速度提高很多倍。Codon 可通過插件基礎(chǔ)結(jié)構(gòu)進(jìn)行擴(kuò)展,它允許用戶合并新的庫、編譯器優(yōu)化甚至關(guān)鍵字。

  Codon 框架是完全模塊化和可擴(kuò)展的,允許無縫集成新模塊、編譯器優(yōu)化、領(lǐng)域特定語言等,并積極為生物信息學(xué)和量化金融等多個領(lǐng)域開發(fā)新的 Codon 擴(kuò)展。

眾所周知505

  這個一經(jīng)發(fā)布就瘋狂攬星的編譯器效果如何呢?下面我們來看看一些基準(zhǔn)測試結(jié)果。

  基準(zhǔn)測試

  以下是來自 Codon 基準(zhǔn)測試套件的結(jié)果,比較了 Python、PyPy、C++ 和 Codon 在一系列任務(wù)和應(yīng)用程序上的表現(xiàn)。

  基準(zhǔn)測試在以下設(shè)置上運(yùn)行:

眾所周知631

  Python、PyPy、Codon 的對比

眾所周知655

眾所周知657

眾所周知659

眾所周知661

  Python、PyPy、C++ 、Codon 的對比

  幾種語言的具體對比如下:

眾所周知703

眾所周知705

  幾種語言的具體對比如下:

  Codon 盡可能地遵循 CPython 語法、語義和 API,但在一些特殊情況下,考慮性能原因,Codon 與 CPython 會有些不同,例如 Codon 為 64 位 int,CPython 是任意寬度 int。在性能方面,CPython 的加速通常是 10-100 倍的加速。

  雖然 Codon 確實(shí)提供了一個類似于 Numba 的 JIT 裝飾器,但 Codon 通常是一個提前(ahead-of-time)編譯器,可以將端到端程序編譯為本機(jī)代碼。它還支持編譯更廣泛的 Python 構(gòu)造和庫集。

  PyPy 的目標(biāo)是成為 CPython 的簡易替代品,而 Codon 在一些地方有所不同,這些不同主要體現(xiàn)在消除動態(tài)運(yùn)行時或虛擬機(jī)上,從而獲得更好的性能。

  Codon 通常生成與等效的 C 或 C++ 程序相同的代碼,有時可以生成比 C/C++ 編譯器更好的代碼。原因有很多,例如更好的容器實(shí)現(xiàn),Codon 不使用目標(biāo)文件和內(nèi)聯(lián)所有庫代碼,或者不使用 C 執(zhí)行的特定于 Codon 的編譯器優(yōu)化或 C++。

  Codon 的編譯過程實(shí)際上更接近 C++ 而不是 Julia。Julia 是一種動態(tài)類型語言,它執(zhí)行類型推斷作為優(yōu)化,而 Codon 類型是提前檢查整個程序。Codon 還試圖通過采用 Python 的語法和語義來規(guī)避新語言的學(xué)習(xí)曲線。

  常見問題解答

  雖然 Codon 幾乎支持 Python 的所有語法,但它并不是一個簡單的替代品,大型代碼庫可能需要修改才能通過 Codon 編譯器運(yùn)行。例如,一些 Python 的模塊還沒有在 Codon 中實(shí)現(xiàn),一些 Python 的動態(tài)特性是不允許的。Codon 編譯器會生成詳細(xì)的錯誤消息,以幫助識別和解決任何不兼容問題。Codon 支持無縫的 Python 互操作性,以處理需要特定 Python 庫或動態(tài)性的情況。

  我想使用 Codon,但我有一個大型 Python 代碼庫且不想移植,怎么辦?

  你可以通過 @codon.jit 裝飾器來使用 Codon,這將只編譯帶注釋的函數(shù),并自動處理與 Codon 之間的數(shù)據(jù)轉(zhuǎn)換。它還允許使用任何特定于 Codon 的模塊或擴(kuò)展,例如多線程。

  與其他語言和框架的互通性如何?

  互通性是 Codon 的優(yōu)先事項(xiàng)。我們不希望使用 Codon 使用戶無法使用現(xiàn)有的其他優(yōu)秀框架和庫。Codon 支持與 Python 和 C/C++ 的完全互通。

  Codon 是否使用垃圾收集?

  是的,Codon 使用了 Boehm 垃圾收集器。

  Codon 不支持 Python 模塊 X 或函數(shù) Y?

  雖然 Codon 涵蓋了 Python 標(biāo)準(zhǔn)庫的一個相當(dāng)大的子集,但它還沒有涵蓋每個模塊的每個函數(shù)。請注意,仍然可以通過 Python 調(diào)用缺少的函數(shù) from python import。許多缺少 Codon 本地實(shí)現(xiàn)的函數(shù)(例如 I/O 或 OS 相關(guān)功能)通常不會實(shí)現(xiàn) Codon 的實(shí)質(zhì)性加速。

  對于我的應(yīng)用程序,Codon 并不比 Python 快?

  大部分時間用在 C 語言實(shí)現(xiàn)的庫代碼中的應(yīng)用程序通常不會在 Codon 中看到實(shí)質(zhì)性的性能提升。同樣地,受 I/O 或網(wǎng)絡(luò)限制的應(yīng)用程序在 Codon 中也會遇到相同的瓶頸。

  對于我的應(yīng)用程序,Codon 比 Python 慢?

  如果是這樣,請將 Codon 明顯比 Python 慢的情況報(bào)告給問題跟蹤器。

  Codon 是免費(fèi)的嗎?

  對于非生產(chǎn)用途,Codon 始終是免費(fèi)的。用戶可以免費(fèi)將 Codon 用于個人、學(xué)術(shù)或其他非商業(yè)應(yīng)用。

  Codon 是開源的嗎?

  Codon 是根據(jù)商業(yè)源代碼許可證 (BSL) 獲得許可的,它的源代碼是公開可用的,并且可以免費(fèi)用于非生產(chǎn)用途。BSL 在技術(shù)上不是「開源」許可證,盡管在許多情況下你仍然可以像對待任何其他開源項(xiàng)目一樣對待 Codon。重要的是,根據(jù) BSL,每個版本的 Codon 都會在 3 年后轉(zhuǎn)換到實(shí)際的開源許可證(特別是 Apache)。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
為什么SpringBoot的 jar 可以直接運(yùn)行?

一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項(xiàng)目的類文件、資源文件以及依賴庫等...詳情>>

2023-10-14 23:01:49
站群服務(wù)器是什么?

站群服務(wù)器的含義與用途站群服務(wù)器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

2023-10-14 22:46:12
自編碼器是什么?

一、自編碼器原理自編碼器的設(shè)計(jì)靈感源于神經(jīng)科學(xué)中關(guān)于感知系統(tǒng)的認(rèn)知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

2023-10-14 22:41:10
什么是云網(wǎng)融合?

一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計(jì)算與網(wǎng)絡(luò)技術(shù)相結(jié)合,實(shí)現(xiàn)資源的共享、業(yè)務(wù)的協(xié)同,將網(wǎng)絡(luò)與云端服務(wù)深度融合,提供更靈活、高效、安全的...詳情>>

2023-10-14 22:31:47
什么是setnx、Redlock、Redisson?

一、setnxsetnx是Redis中的一個命令,用于將鍵值對(key-value)設(shè)置到Redis數(shù)據(jù)庫中。其中,setnx表示”Set if Not Exists”,即當(dāng)...詳情>>

2023-10-14 22:22:53
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
中文字幕无碼在线 | 天干夜啦天干天干国产精品 | 精品国产一区二区三区在线 | 日本高清中文字幕免费一区二区 | 日本特级婬片免费 | 思思热在线视频在线 |