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

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

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

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

哪種編程語言適合你?看完這27種語言對比再做選擇

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-10-30 09:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

當(dāng)能耗也成為了一個重要指標(biāo),我們要怎么選擇編程語言?2017 年,由 6 名葡萄牙研究者組成的團(tuán)隊(duì)決定對這一問題進(jìn)行調(diào)查并發(fā)表了一篇名為《Energy Efficiency Across Programming Languages》的論文。他們用 27 種語言寫出了 10 個問題的解決方案(遵循同樣的算法),然后運(yùn)行這些方案,記錄每種編程語言消耗的電量以及速度和內(nèi)存使用情況


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

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

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

運(yùn)行各種基準(zhǔn)測試非常重要,因?yàn)樗鼈兊慕Y(jié)果會由于所執(zhí)行的測試而有所不同。例如,總體而言,C 語言被認(rèn)為是最快的,也是最節(jié)能的。但是在涉及掃描 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 項(xiàng)目關(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) 那么簡單。這是因?yàn)殡娏Σ⒉话凑找欢ǖ乃俾蔬M(jìn)行消耗。在其他研究者的一項(xiàng)研究中,一個 Chapel 程序的運(yùn)行時間比另一個用 Pascal 寫的等價程序少 55%,但測量結(jié)果卻表明,那個 Pascal 程序所用的能量反而要少 10%。

因此,盡管普遍認(rèn)為程序運(yùn)行速度更快時能耗會下降,但研究者明確指出「速度更快的語言并不總是更節(jié)能。」

這可能是一個很難回答的問題,因?yàn)楣氖艿皆S多因素的影響(包括編譯器的質(zhì)量和使用的庫)。但最終,研究人員總結(jié)出,無論是編譯型語言、解釋型語言還是虛擬機(jī),其實(shí)大部分能量(平均 88% 左右)是由 CPU 消耗的。

在對實(shí)驗(yàn)結(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),而其余語言則徹底散開。

即使在單項(xiàng)基準(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 毫秒。

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

5 種最慢的語言都是解釋型語言:Lua、Python、Perl、Ruby 和 Typescript。5 種能耗最多的語言也都是解釋型語言:Perl、Python、Ruby、JRuby 和 Lua。

但同時,在使用正則表達(dá)式操作字符串時,5 種最節(jié)能的語言中有三種(TypeScript、JavaScript 和 PHP)是解釋型語言。盡管在其他情況下,它們往往不是很節(jié)能。

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

研究者稱:「平均而言,編譯語言需要 125Mb,虛擬機(jī)語言需要 285Mb,而解釋語言則需要 426Mb。」具體來說,有 4 種解釋型語言在這項(xiàng)排名中墊底,這意味著它們消耗了最多的內(nèi)存空間。

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

實(shí)際上,當(dāng)比較不同范式時,命令式編程通常排在首位。與面向?qū)ο蟆⒑瘮?shù)式以及腳本范式的基準(zhǔn)程序相比,命令式編程的基準(zhǔn)程序平均使用的能源少得多,運(yùn)行速度也更快。

但是有很多因素需要考慮。研究者稱「很顯然,不同的編程范式,甚至同一范式中的語言對能耗、時間、內(nèi)存的影響也完全不同」。但是,其中哪一個因素最重要取決于你自己的需求情況(例如,后臺任務(wù)并不總是需要最快的運(yùn)行時間)。

某些應(yīng)用程序需要同時考慮兩個因素,如能耗和執(zhí)行時間。研究者稱:「在這樣的情況下,C 語言是最佳的解決方案,因?yàn)樗谶@兩個方面都很有優(yōu)勢。」如果你想在節(jié)省內(nèi)存的同時節(jié)省時間,那么 C 語言、Pascal 和 Go 語言都可以。如果你正在觀察 3 個變量(時間、能耗和內(nèi)存使用情況),那么結(jié)論也是一樣的。但是,如果你只是想在使用更少內(nèi)存的同時節(jié)省能源,那么最好的選擇是 C 語言或 Pascal。

審核編輯 黃昊宇

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

    關(guān)注

    10

    文章

    1964

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    汽車網(wǎng)絡(luò)安全開發(fā)語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網(wǎng)絡(luò)安全如何選編程語言?C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8主流語言的優(yōu)劣
    的頭像 發(fā)表于 12-26 11:13 ?432次閱讀
    汽車網(wǎng)絡(luò)安全開發(fā)<b class='flag-5'>語言</b>選型指南:C/C++/Rust/Java等主流<b class='flag-5'>語言對比</b>+Perforce QAC/Klocwork工具支持

    為什么單片機(jī)還在用C語言編程

    適合單片機(jī)開發(fā)的編程語言實(shí)在太過晦澀難懂,學(xué)習(xí)起來非常的不方便,并且每一單片機(jī)的匯編指令有很大區(qū)別,所以想把一個程序從這種單片機(jī)移植到另一
    發(fā)表于 11-28 07:37

    C語言編程技巧

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

    C語言特性

    數(shù)據(jù),實(shí)現(xiàn)對設(shè)備的精準(zhǔn)控制,同時降低功耗,延長設(shè)備的使用壽命。 2、可移植性:跨平臺的通行證 C 語言具有良好的可移植性,意味著用 C 語言編寫的程序可以在多種不同的硬件平臺和操作系統(tǒng)上運(yùn)行,無需
    發(fā)表于 11-24 07:01

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

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

    C語言和單片機(jī)C語言有什么差異

    區(qū)別是由編譯器決的,只能參考對應(yīng)的編譯手冊,即使同種平臺不同的編譯器對C的擴(kuò)展也有不同。 3、單片機(jī)c語言編程是基于C語言的單片機(jī)編程。單片機(jī)的C
    發(fā)表于 11-14 07:55

    一文了解Mojo編程語言

    Mojo 是一由 Modular AI 公司開發(fā)的編程語言,旨在將 Python 的易用性與 C 語言的高性能相結(jié)合,特別適合人工智能(A
    發(fā)表于 11-07 05:59

    Linux 編程語言盤點(diǎn):從內(nèi)核到AI的全棧選擇

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

    C++ 與 Python:樹莓派上哪種語言更優(yōu)?

    Python是樹莓派上的首選編程語言,我們的大部分教程都使用它。然而,C++在物聯(lián)網(wǎng)項(xiàng)目中同樣廣受歡迎且功能強(qiáng)大。那么,在樹莓派項(xiàng)目中選擇哪種語言
    的頭像 發(fā)表于 07-24 15:32 ?950次閱讀
    C++ 與 Python:樹莓派上<b class='flag-5'>哪種</b><b class='flag-5'>語言</b>更優(yōu)?

    【選型】常見的遙控開關(guān)控制協(xié)議,看看哪種適合

    遙控開關(guān),是一通過無線信號非接觸式遠(yuǎn)程控制電路通斷的裝置,今天我們一起聊一聊常見的無線信號類別,看看哪種適合?1.紅外遙控紅外型遙控,本質(zhì)上就是通過紅外線來傳遞開關(guān)信息,其實(shí)此類
    的頭像 發(fā)表于 07-17 19:34 ?1707次閱讀
    【選型】常見的遙控開關(guān)控制協(xié)議,看看<b class='flag-5'>哪種</b><b class='flag-5'>適合</b><b class='flag-5'>你</b>?

    梯形圖語言補(bǔ)充編程說明書

    電子發(fā)燒友網(wǎng)站提供《梯形圖語言補(bǔ)充編程說明書.pdf》資料免費(fèi)下載
    發(fā)表于 07-09 14:14 ?3次下載

    C語言精彩編程百例-364頁

    內(nèi)容提要 C是一通用的程序設(shè)計語言,它包含了緊湊的表達(dá)式、豐富的運(yùn)算符集合、現(xiàn)代控制流以及數(shù)據(jù)結(jié)構(gòu)等四個部分。C語言功能豐富,衣達(dá)能力強(qiáng),使用起來靈活方便:它應(yīng)用面廣,可移植性強(qiáng),網(wǎng)時具有高級
    發(fā)表于 06-13 17:28

    單片機(jī)c語言編程實(shí)例大全

    單片機(jī)c語言編程實(shí)例大全_18
    發(fā)表于 04-30 16:11 ?7次下載

    深入理解C語言:C語言循環(huán)控制

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

    HAL庫和標(biāo)準(zhǔn)庫選擇哪種庫?

    HAL庫和標(biāo)準(zhǔn)庫選擇哪種
    發(fā)表于 03-10 06:25