色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

各種編程語言的能耗對比

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:老九學(xué)堂 ? 2020-12-30 10:27 ? 次閱讀

上次跟大家分享了即將淘汰的編程語言,看來大家對于編程語言的好壞,都很有自己的見解啊。

但我們一直都說哈,每個語言都有自己的優(yōu)勢。

那今天我們再引入一個比較的概念——耗電量。

手機(jī)快沒電時,管理軟件往往會提醒我們關(guān)掉某些耗電量高的應(yīng)用。

可見,除了硬件廠商外,軟件廠商也應(yīng)該重視能耗問題。(企業(yè)級需求!)

咱們今天就看一篇文章,在這篇文章中,研究者分析了一下各種編程語言的能耗對比。

ee3c74bc-49b8-11eb-8b86-12bb97331649.png

當(dāng)能耗也成為了一個重要指標(biāo),我們要怎么選擇編程語言?

2017 年,由 6 名葡萄牙研究者組成的團(tuán)隊決定對這一問題進(jìn)行調(diào)查并發(fā)表了一篇名為《Energy Efficiency Across Programming Languages》的論文。

他們用 27 種語言寫出了 10 個問題的解決方案(遵循同樣的算法),然后運(yùn)行這些方案,記錄每種編程語言消耗的電量以及速度和內(nèi)存使用情況,得到的排序結(jié)果如下圖所示:

eeae2cce-49b8-11eb-8b86-12bb97331649.png

通過這項研究,他們得出了一些有意思的結(jié)論,比如運(yùn)行速度快的語言未必能耗小。

在論文中,作者還根據(jù)編程語言的執(zhí)行類型(編譯、虛擬機(jī)或解釋)和編程范式(命令式、函數(shù)式、面向?qū)ο蠛湍_本)對結(jié)果進(jìn)行了分析。

具體而言,研究者使用了來自 Computer Language Benchmarks Game(一個用于比較性能的免費(fèi)軟件項目,其中包含一組標(biāo)準(zhǔn)的算法問題和用于運(yùn)行測試的框架)的 10 個問題,使得研究更有可比性和代表性。

運(yùn)行各種基準(zhǔn)測試非常重要,因為它們的結(jié)果會由于所執(zhí)行的測試而有所不同。

例如,總體而言,C 語言被認(rèn)為是最快的,也是最節(jié)能的。

大家把C語言牛皮,打在公(評)屏(論)上(區(qū))!

但是在涉及掃描 DNA 數(shù)據(jù)庫中特定基因序列的基準(zhǔn)測試中,Rust 是最節(jié)能的,而 C 語言位居第三。

所以即使在同一測試中,最佳語言依然取決于你的標(biāo)準(zhǔn)。

比如在一個 C 排第二、Rust 排第一的測試中,如果按內(nèi)存使用情況對結(jié)果進(jìn)行排序,Rust 會跌掉 9 個位次。

而在一個 Fortran 能效第二高的測試中,如果結(jié)果按照運(yùn)行時間排序,它也下降了 6 個位次。

研究者指出,他們嚴(yán)格遵守 CLBG 項目關(guān)于編譯器版本和最佳優(yōu)化標(biāo)志的指導(dǎo)方針。

功耗的測量使用一個來自英特爾的工具——Running Average Power Limit,每個程序運(yùn)行 10 遍。

作者表示:

這是為了減少冷啟動和緩存效應(yīng)的影響,并能夠分析測量的一致性,避免異常值。

為了增強(qiáng)一致性,所有測試都在一個運(yùn)行 Linux Ubuntu Server 16.10(內(nèi)核版本 4.8.0-22-generic)的臺式機(jī)上運(yùn)行。

運(yùn)行速度快的語言更節(jié)能嗎?

這篇論文認(rèn)真地研究了一個普遍的假設(shè):速度越快的程序消耗的能源就越少。

研究者指出,其實(shí),這并不像物理學(xué)定律 E(nergy) = T(ime) x P(ower) 那么簡單。

這是因為電力并不按照一定的速率進(jìn)行消耗。

在其他研究者的一項研究中,一個 Chapel 程序的運(yùn)行時間比另一個用 Pascal 寫的等價程序少 55%,但測量結(jié)果卻表明,那個 Pascal 程序所用的能量反而要少10%。

因此,盡管普遍認(rèn)為程序運(yùn)行速度更快時能耗會下降,但研究者明確指出:

速度更快的語言并不總是更節(jié)能。

這可能是一個很難回答的問題,因為功耗受到許多因素的影響(包括編譯器的質(zhì)量和使用的庫)。

但最終,研究人員總結(jié)出,無論是編譯型語言、解釋型語言還是虛擬機(jī),其實(shí)大部分能量(平均 88% 左右)是由 CPU 消耗的。

在對實(shí)驗結(jié)果分析研究之后,研究者還得出結(jié)論:

DRAM 的峰值使用量與能耗之間幾乎沒有關(guān)系。

該研究為一個長期存在的問題提供了答案:「速度更快就更環(huán)保嗎?」

在按照執(zhí)行時間進(jìn)行排序時,的確是這樣,前 5 種最節(jié)能的語言依然排在前 5 名,而且在能量和時間值方面的差距很小。

實(shí)際上,在 10 個基準(zhǔn)問題測試中,有 9 個得分最高者(速度和能源效率兩方面)是速度最快和能源效率最高的三種語言之一,這并沒有讓研究者感到驚訝。

眾所周知,就像研究中的數(shù)據(jù)所顯示的一樣,C、C++ 和 Rust 這三種排名最靠前的語言都經(jīng)過了大量優(yōu)化,在執(zhí)行性能上都比較高效。

但是按照運(yùn)行時間對其他 24 種語言進(jìn)行排名時,情況就不一樣了。

只有 4 種語言保持相同的能耗和時間排名(OCaml、Haskel、Racket 和 Python),而其余語言則徹底散開。

即使在單項基準(zhǔn)測試中,也存在速度快但不節(jié)能的語言。

編譯型語言的優(yōu)點(diǎn)

編譯型語言似乎是最節(jié)能和運(yùn)行最快的語言,作者甚至可以在論文中用數(shù)字量化這種差異。

平均而言,編譯語言需要花費(fèi) 120J 能量來運(yùn)行解決方案,而虛擬機(jī)和解釋型語言要分別花費(fèi) 576J 和 2365J。

在比較執(zhí)行時間時,研究者也采用了相同的精度,得出的結(jié)論是:

平均而言,編譯語言花費(fèi) 5103 毫秒,虛擬機(jī)語言花費(fèi) 20623 毫秒,解釋型語言花費(fèi) 87614 毫秒。

兩項排名中的前 4 名均為編譯型語言(有一個例外,Java 語言)。

f1ca458c-49b8-11eb-8b86-12bb97331649.png

5 種最慢的語言都是解釋型語言:

Lua、Python、Perl、Ruby 和 Typescript。

5 種能耗最多的語言也都是解釋型語言:

Perl、Python、Ruby、JRuby 和 Lua。

但同時,在使用正則表達(dá)式操作字符串時,5 種最節(jié)能的語言中有三種(TypeScript、JavaScript 和 PHP)是解釋型語言。

但是在其他情況下,它們往往不是很節(jié)能。

編譯型語言在占用內(nèi)存最少的排名中也占據(jù)了前 5 名。

f219709e-49b8-11eb-8b86-12bb97331649.png

研究者稱:

平均而言,編譯語言需要 125Mb,虛擬機(jī)語言需要 285Mb,而解釋語言則需要 426Mb。

具體來說,有 4 種解釋型語言在這項排名中墊底,這意味著它們消耗了最多的內(nèi)存空間。

如果按照它們的編程范式進(jìn)行排序,命令式語言需要 116Mb,面向?qū)ο笳Z言需要 249Mb,函數(shù)式編程語言是 251Mb,腳本需要 421Mb。

實(shí)際上,當(dāng)比較不同范式時,命令式編程通常排在首位。

與面向?qū)ο蟆⒑瘮?shù)式以及腳本范式的基準(zhǔn)程序相比,命令式編程的基準(zhǔn)程序平均使用的能源少得多,運(yùn)行速度也更快。

f30405d2-49b8-11eb-8b86-12bb97331649.png

但是有很多因素需要考慮。

研究者稱

很顯然,不同的編程范式,甚至同一范式中的語言對能耗、時間、內(nèi)存的影響也完全不同。

但是,其中哪一個因素最重要取決于你自己的需求情況(例如,后臺任務(wù)并不總是需要最快的運(yùn)行時間)。

某些應(yīng)用程序需要同時考慮兩個因素,如能耗和執(zhí)行時間。

研究者稱:

在這樣的情況下,C 語言是最佳的解決方案,因為它在這兩個方面都很有優(yōu)勢。

如果你想在節(jié)省內(nèi)存的同時節(jié)省時間,那么 C 語言、Pascal 和 Go 語言都可以。

如果你正在觀察 3 個變量(時間、能耗和內(nèi)存使用情況),那么結(jié)論也是一樣的。

但是,如果你只是想在使用更少內(nèi)存的同時節(jié)省能源,那么最好的選擇是 C 語言或 Pascal。

f3ec874e-49b8-11eb-8b86-12bb97331649.png

總結(jié)一下:

不同的模式,考察角度不一樣,得出的結(jié)論也會有差距,一門語言好不好還是要根據(jù)自己的業(yè)務(wù)實(shí)際需求去判斷。

但是,C語言就是最厲害的!

責(zé)任編輯:xj

原文標(biāo)題:世界上最好的編程語言是哪個?

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7608

    瀏覽量

    137137
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3628

    瀏覽量

    93815

原文標(biāo)題:世界上最好的編程語言是哪個?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    gitee 支持的編程語言有哪些

    Gitee(碼云)是一個基于 Git 的代碼托管和研發(fā)協(xié)作平臺,類似于 GitHub 和 GitLab。它支持多種編程語言,允許開發(fā)者托管和管理代碼,進(jìn)行版本控制,以及協(xié)作開發(fā)。以下是一些
    的頭像 發(fā)表于 01-06 09:50 ?78次閱讀

    Triton編譯器支持的編程語言

    Triton編譯器支持的編程語言主要包括以下幾種: 一、主要編程語言 Python :Triton編譯器通過Python接口提供了對Triton語言
    的頭像 發(fā)表于 12-24 17:33 ?384次閱讀

    編程語言的誤區(qū)與常見問題

    誤區(qū)一:編程語言的選擇 常見問題: 初學(xué)者在選擇編程語言時,往往會被市場上的熱門語言所吸引,而忽視了自己的實(shí)際需求和興趣。 一些開發(fā)者認(rèn)為某
    的頭像 發(fā)表于 11-15 09:35 ?328次閱讀

    對比Python與Java編程語言

    Python與Java都是目前非常流行的編程語言,它們各有其獨(dú)特的優(yōu)勢和適用場景。以下是對這兩種編程語言對比: 一、語法和易用性 Pyth
    的頭像 發(fā)表于 11-15 09:31 ?351次閱讀

    MCU編程語言和開發(fā)環(huán)境介紹

    微控制器單元(Microcontroller Unit,簡稱MCU)是嵌入式系統(tǒng)的核心,廣泛應(yīng)用于各種電子產(chǎn)品中。隨著技術(shù)的發(fā)展,MCU編程語言和開發(fā)環(huán)境也在不斷進(jìn)步,以適應(yīng)不同的應(yīng)用需求。 1.
    的頭像 發(fā)表于 11-01 11:51 ?883次閱讀

    C語言與Java語言對比

    C語言和Java語言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢和特點(diǎn),適用于不同的應(yīng)用場景。以下將從語法特性、內(nèi)存管理、跨平臺性、性能、應(yīng)用領(lǐng)域等多個方面對C語言和Java
    的頭像 發(fā)表于 10-29 17:31 ?375次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級編程的首選語言
    的頭像 發(fā)表于 10-29 17:30 ?309次閱讀

    plc編程語言編程相關(guān)技巧有哪些

    PLC(可編程邏輯控制器)編程語言及相關(guān)編程技巧是工業(yè)自動化領(lǐng)域中不可或缺的知識。 一、PLC編程語言
    的頭像 發(fā)表于 10-21 16:56 ?383次閱讀

    plc編程st語言怎么編

    PLC(可編程邏輯控制器)編程中的ST(Structured Text)語言是一種高級編程語言,它類似于Pascal或C
    的頭像 發(fā)表于 08-25 10:05 ?1310次閱讀

    PLC的編程方式及編程語言

    在工業(yè)自動化領(lǐng)域,PLC(Programmable Logic Controller,可編程邏輯控制器)因其強(qiáng)大的控制功能和靈活的編程方式而得到了廣泛應(yīng)用。PLC的編程方式和編程
    的頭像 發(fā)表于 06-27 14:08 ?808次閱讀

    abb工業(yè)機(jī)器人的編程語言是什么

    ABB工業(yè)機(jī)器人的編程語言主要是RAPID(Robot Application Programming Interface for Development),它是一種高級編程語言,專門
    的頭像 發(fā)表于 06-16 16:49 ?2654次閱讀

    PLC編程語言和C語言的區(qū)別

    在工業(yè)自動化和計算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是
    的頭像 發(fā)表于 06-14 17:11 ?3000次閱讀

    PLC常用編程語言有哪些

    在工業(yè)自動化領(lǐng)域,PLC(Programmable Logic Controller,可編程邏輯控制器)作為一種核心控制設(shè)備,其編程語言的選擇對于控制系統(tǒng)的設(shè)計、開發(fā)和維護(hù)具有重要影響。PLC的
    的頭像 發(fā)表于 06-14 16:58 ?1544次閱讀

    fpga用的是什么編程語言 fpga用什么語言開發(fā)

    fpga用的是什么編程語言 FPGA(現(xiàn)場可編程邏輯門陣列)主要使用的編程語言是硬件描述語言(H
    的頭像 發(fā)表于 03-14 17:09 ?3556次閱讀

    plc編程語言與c語言的聯(lián)系 c語言和PLC有什么區(qū)別

    PLC編程語言與C語言的聯(lián)系 PLC(可編程邏輯控制器)是一種針對自動化控制系統(tǒng)的特殊計算機(jī)。PLC編程
    的頭像 發(fā)表于 02-05 14:21 ?4225次閱讀
    主站蜘蛛池模板: 麻1豆传媒2021精品| 国产制服丝袜91在线| 亚洲成人精品久久| 日本妈妈JMZZZZZ| 欧美 亚洲 中文字幕 高清| 久久国产免费| 国内精品伊人久久久久| 国产高潮久久精品AV无码| 99热热在线精品久久| 91在线一区二区| 91涩涩视频| 97色伦图片97色伦图影院久久| 重口味av| 999精品在线| 99视频导航| 爱做久久久久久| 成年人国产视频| 古代荡乳尤物H妓女调教| 高清国语自产拍免费| 国产极品白嫩超清在线观看| 国产精品久久久久久久AV下载| 国产高清视频免费最新在线| 国产精品久AAAAA片| 国产亚洲欧洲日韩在线三区| 韩国g奶空姐| 久久国产欧美| 蜜桃99影院| 清晨紧湿爱运动h高h| 日韩一级精品久久久久| 天天综合网网欲色| 亚洲精品tv久久久久久久久久| 亚洲午夜久久久久中文字幕| 中文人妻熟妇精品乱又伧| 91精品乱码一区二区三区| silk118中文字幕无删减| 俄罗斯爱爱| 国内精品七七久久影院| 久青草国产在视频在线观看| 欧美gay69| 网红主播 国产精品 开放90后| 亚洲AV日韩AV欧美在线观看网 |