国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

各種編程語言的能耗對比

中科院長春光機所 ? 來源:極市平臺 ? 作者:極市平臺 ? 2020-11-13 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

手機快沒電時,管理軟件往往會提醒我們關掉某些耗電量高的應用。可見,除了硬件廠商外,軟件廠商也應該重視能耗問題。在這篇文章中,研究者分析了一下各種編程語言的能耗對比。

當能耗也成為了一個重要指標,我們要怎么選擇編程語言?2017 年,由 6 名葡萄牙研究者組成的團隊決定對這一問題進行調查并發表了一篇名為《Energy Efficiency Across Programming Languages》的論文。他們用 27 種語言寫出了 10 個問題的解決方案(遵循同樣的算法),然后運行這些方案,記錄每種編程語言消耗的電量以及速度和內存使用情況,得到的排序結果如下圖所示:

通過這項研究,他們得出了一些有意思的結論,比如運行速度快的語言未必能耗小。 在論文中,作者還根據編程語言的執行類型(編譯、虛擬機或解釋)和編程范式(命令式、函數式、面向對象和腳本)對結果進行了分析。 具體而言,研究者使用了來自 Computer Language Benchmarks Game(一個用于比較性能的免費軟件項目,其中包含一組標準的算法問題和用于運行測試的框架)的 10 個問題,使得研究更有可比性和代表性。 運行各種基準測試非常重要,因為它們的結果會由于所執行的測試而有所不同。例如,總體而言,C語言被認為是最快的,也是最節能的。但是在涉及掃描 DNA 數據庫中特定基因序列的基準測試中,Rust 是最節能的,而 C 語言位居第三。 即使在同一測試中,「最佳」語言也取決于你的標準。比如在一個 C 排第二、Rust 排第一的測試中,如果按內存使用情況對結果進行排序,Rust 會跌掉 9 個位次。而在一個 Fortran 能效第二高的測試中,如果結果按照運行時間排序,它也下降了 6 個位次。 研究者指出,他們嚴格遵守 CLBG 項目關于編譯器版本和最佳優化標志的指導方針。功耗的測量使用一個來自英特爾的工具——Running Average Power Limit,每個程序運行 10 遍。作者表示,「這是為了減少冷啟動和緩存效應的影響,并能夠分析測量的一致性,避免異常值」。 為了增強一致性,所有測試都在一個運行 Linux Ubuntu Server 16.10(內核版本 4.8.0-22-generic)的臺式機上運行。

運行速度快的語言更節能嗎?

這篇論文認真地研究了一個普遍的假設:速度越快的程序消耗的能源就越少。研究者指出,其實,這并不像物理學定律 E(nergy) = T(ime) x P(ower) 那么簡單。這是因為電力并不按照一定的速率進行消耗。在其他研究者的一項研究中,一個 Chapel 程序的運行時間比另一個用 Pascal 寫的等價程序少 55%,但測量結果卻表明,那個 Pascal 程序所用的能量反而要少 10%。 因此,盡管普遍認為程序運行速度更快時能耗會下降,但研究者明確指出「速度更快的語言并不總是更節能。」 這可能是一個很難回答的問題,因為功耗受到許多因素的影響(包括編譯器的質量和使用的庫)。但最終,研究人員總結出,無論是編譯型語言、解釋型語言還是虛擬機,其實大部分能量(平均 88% 左右)是由 CPU 消耗的。 在對實驗結果分析研究之后,研究者還得出結論:DRAM 的峰值使用量與能耗之間「幾乎沒有關系」。該研究為一個長期存在的問題提供了答案:「速度更快就更環保嗎?」是的,的確是這樣,在按照執行時間進行排序時,前 5 種最節能的語言依然排在前 5 名,而且在能量和時間值方面的差距很小。 實際上,在 10 個基準問題測試中,有 9 個得分最高者(速度和能源效率兩方面)是速度最快和能源效率最高的三種語言之一,這并沒有讓研究者感到驚訝。眾所周知,就像研究中的數據所顯示的一樣,C、C++ 和 Rust 這三種排名最靠前的語言都經過了大量優化,在執行性能上都比較高效。 但是按照運行時間對其他 24 種語言進行排名時,情況就不一樣了。只有 4 種語言保持相同的能耗和時間排名(OCaml、Haskel、Racket 和 Python),而其余語言則徹底散開。 即使在單項基準測試中,也存在速度快但不節能的語言。

編譯型語言的優點

編譯型語言似乎是最節能和運行最快的語言,作者甚至可以在論文中用數字量化這種差異。 平均而言,編譯語言需要花費 120J 能量來運行解決方案,而虛擬機和解釋型語言要分別花費 576J 和 2365J。 在比較執行時間時,研究者也采用了相同的精度,得出的結論是:平均而言,編譯語言花費 5103 毫秒,虛擬機語言花費 20623 毫秒,解釋型語言花費 87614 毫秒。 兩項排名中的前 4 名均為編譯型語言(有一個例外,Java 語言)。

5 種最慢的語言都是解釋型語言:Lua、Python、Perl、Ruby 和 Typescript。5 種能耗最多的語言也都是解釋型語言:Perl、Python、Ruby、JRuby 和 Lua。 但同時,在使用正則表達式操作字符串時,5 種最節能的語言中有三種(TypeScript、JavaScript 和 PHP)是解釋型語言。盡管在其他情況下,它們往往不是很節能。 編譯型語言在占用內存最少的排名中也占據了前 5 名。

研究者稱:「平均而言,編譯語言需要 125Mb,虛擬機語言需要 285Mb,而解釋語言則需要 426Mb。」具體來說,有 4 種解釋型語言在這項排名中墊底,這意味著它們消耗了最多的內存空間。 「如果按照它們的編程范式進行排序,命令式語言需要 116Mb,面向對象語言需要 249Mb,函數式編程語言是 251Mb,腳本需要 421Mb。」 實際上,當比較不同范式時,命令式編程通常排在首位。與面向對象、函數式以及腳本范式的基準程序相比,命令式編程的基準程序平均使用的能源少得多,運行速度也更快。

但是有很多因素需要考慮。研究者稱「很顯然,不同的編程范式,甚至同一范式中的語言對能耗、時間、內存的影響也完全不同」。但是,其中哪一個因素最重要取決于你自己的需求情況(例如,后臺任務并不總是需要最快的運行時間)。 某些應用程序需要同時考慮兩個因素,如能耗和執行時間。研究者稱:「在這樣的情況下,C 語言是最佳的解決方案,因為它在這兩個方面都很有優勢。」如果你想在節省內存的同時節省時間,那么 C 語言、Pascal 和 Go 語言都可以。如果你正在觀察 3 個變量(時間、能耗和內存使用情況),那么結論也是一樣的。但是,如果你只是想在使用更少內存的同時節省能源,那么最好的選擇是 C 語言或 Pascal。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145600
  • 數據庫
    +關注

    關注

    7

    文章

    4020

    瀏覽量

    68353
  • 編程語言
    +關注

    關注

    10

    文章

    1964

    瀏覽量

    39573

原文標題:哪種編程語言又快又省電?有人對比了27種語言

文章出處:【微信號:cas-ciomp,微信公眾號:中科院長春光機所】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C語言安全編碼指南:MISRA C、CERT C、CWE 與 C Secure 標準對比與Perforce QAC應用詳解

    如何編寫真正安全的C語言代碼?指南涵蓋MISRA C、CERT、CWE等國際安全編碼標準對比,以及如何借助Perforce QAC自動檢測漏洞。推薦給嵌入式/汽車/工業軟件的開發者!
    的頭像 發表于 01-26 17:38 ?816次閱讀
    C<b class='flag-5'>語言</b>安全編碼指南:MISRA C、CERT C、CWE 與 C Secure 標準<b class='flag-5'>對比</b>與Perforce QAC應用詳解

    汽車網絡安全開發語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網絡安全如何選編程語言?C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8種主流語言的優劣與適用場景,以及Perforce QAC/Klocwork對MISRA、CERT等規范的
    的頭像 發表于 12-26 11:13 ?430次閱讀
    汽車網絡安全開發<b class='flag-5'>語言</b>選型指南:C/C++/Rust/Java等主流<b class='flag-5'>語言對比</b>+Perforce QAC/Klocwork工具支持

    如何調試和編程CW32F030C8T7?支持哪些調試工具和編程語言

    了解如何調試和編程CW32F030C8T7是開發過程中的重要環節。它支持哪些調試工具(如JTAG、串口調試等)和編程語言(如C、C++等)?如何設置和使用這些工具來加速開發過程?
    發表于 12-05 06:48

    為什么單片機還在用C語言編程

    說起單片機我們就會想到C語言,單片機為什么還在用C語言編程?現在有很多很好用的高級語言,如VC、PYTHON、PHP等等,為什么這些語言不能
    發表于 11-28 07:37

    C語言編程技巧

    設計,分層開發代碼,便于理解和維護。 ?8、避免使用GOTO語句?:盡管GOTO語句在某些情況下仍然有用,但現代編程更傾向于使用函數和循環控制結構,以提高代碼的可讀性和維護性。 ?9、利用C語言的靈活性
    發表于 11-27 06:46

    2025年最佳的嵌入式編程語言有哪些呢?

    嵌入式系統是現代科技不可或缺的一部分。它們存在于家用電器、汽車、住宅、醫院、商店等各個領域。它們與我們的社會緊密相連。選擇合適的語言來構建嵌入式系統對于成功至關重要。那么,2025年最佳的嵌入式編程
    的頭像 發表于 11-14 10:27 ?1423次閱讀
    2025年最佳的嵌入式<b class='flag-5'>編程</b><b class='flag-5'>語言</b>有哪些呢?

    一文了解Mojo編程語言

    Mojo 是一種由 Modular AI 公司開發的編程語言,旨在將 Python 的易用性與 C 語言的高性能相結合,特別適合人工智能(AI)、高性能計算(HPC)和系統級編程場景。
    發表于 11-07 05:59

    Linux 編程語言盤點:從內核到AI的全棧選擇

    在工控圈和嵌入式圈里,有一個常年被討論的問題: ?“在 Linux 上,到底該用什么語言編程?” 有人堅信:C 才是真正的工業語言。有人反駁:Python 才是效率王者。還有人推崇 Go、Rust
    的頭像 發表于 11-06 17:05 ?601次閱讀

    梯形圖語言補充編程說明書

    電子發燒友網站提供《梯形圖語言補充編程說明書.pdf》資料免費下載
    發表于 07-09 14:14 ?3次下載

    明達技術MG-PNS-MR協議轉換器在行車能耗監控項目中的應用

    在工業自動化領域,能耗數據的精準采集與實時監控是企業實現綠色轉型、降本增效的關鍵一環。然而,傳統工業現場常面臨設備協議不兼容、多設備接入復雜、編程調試耗時等難題。 近期,明達技術自主研發的協議轉換器
    的頭像 發表于 07-02 15:36 ?573次閱讀
    明達技術MG-PNS-MR協議轉換器在行車<b class='flag-5'>能耗</b>監控項目中的應用

    芯原超低能耗NPU可為移動端大語言模型推理提供超40 TOPS算力

    芯原股份今日宣布其超低能耗且高性能的神經網絡處理器(NPU)IP現已支持在移動端進行大語言模型(LLM)推理,AI算力可擴展至40 TOPS以上。該高能效NPU架構專為滿足移動平臺日益增長的生成式
    的頭像 發表于 06-11 10:47 ?872次閱讀

    5CEBA4F23C8NQS現場可編程門陣列(FPGA)芯片

    5CEBA4F23C8NQS現場可編程門陣列(FPGA)芯片5CEBA4F23C8NQS是Intel-ALTERA(原 Altera)研發的Cyclone V系列性能卓越、低能耗的現場可編程門陣列
    發表于 06-11 09:01

    企業能耗管理漏洞百出,節能沒方向?安科瑞能耗管理系統幫您搞定數據、成本、效率!

    的道路上卻困難重重,各種痛點就像隱藏在暗處的 “能耗刺客”,悄無聲息地影響著企業的發展。 先來說說數據統計難這個問題。不同部門、不同設備在不同時間段的能耗數據那叫一個復雜,簡直就像一團理不清的亂麻。就拿一家中型制造企
    的頭像 發表于 05-12 10:13 ?553次閱讀
    企業<b class='flag-5'>能耗</b>管理漏洞百出,節能沒方向?安科瑞<b class='flag-5'>能耗</b>管理系統幫您搞定數據、成本、效率!

    單片機c語言編程實例大全

    單片機c語言編程實例大全_18
    發表于 04-30 16:11 ?7次下載

    深入理解C語言:C語言循環控制

    在C語言編程中,循環結構是至關重要的,它可以讓程序重復執行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環,C語言提供了多種循環控制語句,如break、continue和
    的頭像 發表于 04-29 18:49 ?2047次閱讀
    深入理解C<b class='flag-5'>語言</b>:C<b class='flag-5'>語言</b>循環控制