どのプログラミング言語が高速でエネルギー効率が良いですか?誰かが27の言語を比較しました

電話の電力が不足すると、管理ソフトウェアは、一部の高電力アプリケーションをオフにするように通知することがよくあります。ハードウェアメーカーに加えて、ソフトウェアメーカーもエネルギー消費に注意を払う必要があることがわかります。この記事では、研究者はさまざまなプログラミング言語のエネルギー消費の比較を分析しました。

どのプログラミング言語が高速でエネルギー効率が良いですか? 誰かが27の言語を比較しました

エネルギー消費が重要な指標になったとき、プログラミング言語をどのように選択しますか?2017年、6人のポルトガル人研究者のチームがこの問題を調査することを決定し、「プログラミング言語全体のエネルギー効率」というタイトルの論文を発表しました。彼らは27の言語で(同じアルゴリズムに従って)10の問題解決策を作成し、次にこれらの解決策を実行して、各プログラミング言語の電力消費、速度、およびメモリ使用量を記録し、得られたソート結果を次の図に示します。

どのプログラミング言語が高速でエネルギー効率が良いですか? 誰かが27の言語を比較しました

この調査を通じて、彼らはいくつかの興味深い結論に達しました。たとえば、高速で実行される言語は必ずしもエネルギー消費量が少ないとは限りません。

この論文では、著者はプログラミング言語の実行タイプ(コンパイル、仮想マシン、または解釈)とプログラミングパラダイム(必須、機能、オブジェクト指向、およびスクリプト)に従って結果を分析しました。

具体的には、研究者はComputer Language Benchmarks Game(一連の標準アルゴリズム問題とテストを実行するためのフレームワークを含むパフォーマンスを比較するための無料ソフトウェアプロジェクト)からの10の質問を使用して、研究をより比較可能にしましたセクシュアリティと代表性。

実行するテストによって結果が異なるため、さまざまなベンチマークテストを実行することは非常に重要です。たとえば、全体として、C言語は最も速く、最もエネルギー効率が高いと考えられています。しかし、DNAデータベース内の特定の遺伝子配列をスキャンするベンチマークテストでは、Rustが最もエネルギー効率が高く、C言語が3番目にランクされています。

同じテストでも、「最良の」言語は基準によって異なります。たとえば、Cが2番目にランク付けされ、Rustが1番目にランク付けされたテストで、結果をメモリ使用量で並べ替えると、Rustは9位低下します。2番目にエネルギー効率の高いFortranを使用したテストでは、結果を実行時間で並べ替えると、6桁も低下します。

研究者たちは、コンパイラのバージョンと最適化フラグに関するCLBGプロジェクトのガイドラインを厳密に遵守していると指摘しました。消費電力は、Intel-Running Average Power Limitのツールを使用して測定され、各プログラムは10回実行されます。著者は、「これは、コールドスタートとキャッシュ効果の影響を減らし、異常を回避するために測定の一貫性を分析できるようにするためです」と述べています。

一貫性を高めるために、すべてのテストはLinux Ubuntu Server 16.10(カーネルバージョン4.8.0-22-generic)を実行しているデスクトップコンピューターで実行されました。

高速言語はよりエネルギー効率が良いですか?

このペーパーでは、プログラムが消費するエネルギーが少ないほど、一般的な仮定を注意深く検討しました。研究者たちは、実際、これは物理法則E(nergy)= T(ime)x P(ower)ほど単純ではないと指摘しました。これは、電力が一定の割合で消費されていないためです。他の研究者による研究では、チャペルプログラムの実行時間はパスカルで書かれた他の同等のプログラムより55%短いが、測定結果はパスカルプログラムによって使用されるエネルギーが10%少ないことを示した。

したがって、プログラムの実行速度が上がるとエネルギー消費量が減少すると一般に考えられていますが、研究者は「言語が速いほどエネルギー効率が高いとは限らない」と明確に指摘しています。

消費電力は多くの要因(コンパイラの品質や使用するライブラリなど)の影響を受けるため、これは答えるのが難しい質問になる可能性があります。しかし、結局、研究者たちは、それがコンパイルされた言語、解釈された言語、または仮想マシンであるかどうかにかかわらず、エネルギーの大部分(平均で約88%)が実際にCPUによって消費されると結論付けました。

実験結果を分析および研究した後、研究者はまた、DRAMのピーク使用量とエネルギー消費量の間に「ほとんど関係がない」と結論付けました。この調査は、「より速い速度はより環境にやさしいですか?」という長年の質問に対する答えを提供します。はい、それは本当です。実行時間でソートすると、最もエネルギー効率の高い上位5言語は依然として上位5位にランクされています。 、そしてエネルギーと時間の値の違いは小さいです。

実際、10のベンチマーク質問テストでは、最高スコアの9つ(速度とエネルギー効率の両方)は、研究者を驚かせなかった、最速の速度と最高のエネルギー効率を持つ3つの言語の1つです。ご存知のとおり、調査結果のデータと同様に、上位3言語であるC、C ++、Rustは多くの最適化が行われ、実行パフォーマンスがより効率的になっています。

しかし、実行時間によって他の24言語をランク付けすると、状況は異なります。同じエネルギーと時間のランキングを維持しているのは4つの言語(OCaml、Haskel、Racket、Python)のみで、残りの言語は完全に分散しています。

単一のベンチマークテストでも、高速ですがエネルギー効率が良くない言語があります。

コンパイルされた言語の利点

コンパイルされた言語は、最もエネルギー効率が高く、最も高速に実行される言語のようです。作成者は、数値を使用して、論文のこの違いを定量化することもできます。

平均して、コンパイルされた言語はソリューションを実行するために120Jのエネルギーを必要としますが、仮想マシンと解釈された言語はそれぞれ576Jと2365Jの費用がかかります。

実行時間を比較すると、研究者も同じ精度を使用し、平均して、コンパイルされた言語は5103ミリ秒、仮想マシンの言語は20623ミリ秒、解釈された言語は87614ミリ秒を費やしたと結論付けました。

2つのランキングの上位4つはすべてコンパイルされた言語です(1つの例外を除いて、Java言語)。

どのプログラミング言語が高速でエネルギー効率が良いですか? 誰かが27の言語を比較しました

最も遅い5つの言語はすべて解釈された言語です:Lua、Python、Perl、Ruby、およびTypescript。最もエネルギーを消費する5つの言語(Perl、Python、Ruby、JRuby、Lua)も解釈されます。

しかし同時に、通常の式を使用して文字列を操作する場合、最もエネルギー効率の高い5つの言語(TypeScript、JavaScript、PHP)のうち3つが解釈された言語です。他の場合ではありますが、それらはしばしばあまりエネルギー効率が良くありません。

コンパイルされた言語も、メモリが最も少ない上位5位を占めています。

どのプログラミング言語が高速でエネルギー効率が良いですか? 誰かが27の言語を比較しました

研究者は次のように述べています。「平均して、コンパイルされた言語は125Mbを必要とし、仮想マシン言語は285Mbを必要とし、解釈された言語は426Mbを必要とします。」具体的には、4つの解釈された言語がこのランキングの最下位にあります。最もメモリスペースがあります。

「プログラミングパラダイムで並べ替えると、必須言語は116Mb、オブジェクト指向言語は249Mb、機能プログラミング言語は251Mb、スクリプトは421Mbが必要です。」

実際、さまざまなパラダイムを比較する場合、通常、必須のプログラミングが最初になります。オブジェクト指向、機能、およびスクリプトのパラダイムのベンチマークプログラムと比較して、必須プログラミングのベンチマークプログラムは、平均してはるかに少ないエネルギーを使用し、より高速に実行されます。

どのプログラミング言語が高速でエネルギー効率が良いですか? 誰かが27の言語を比較しました

しかし、考慮すべき多くの要因があります。研究者は、「異なるプログラミングパラダイム、そして同じパラダイム内の言語でさえ、エネルギー消費、時間、およびメモリに完全に異なる影響を与えることは明らかです」と述べました。ただし、これらの要素のどれが最も重要であるかは、ユーザー自身のニーズによって異なります(たとえば、バックグラウンドタスクは必ずしも最速の実行時間を必要としない)。

一部のアプリケーションでは、エネルギー消費と実行時間などの2つの要素を考慮する必要があります。研究者は、「この場合、C言語は両方の面で利点があるため、最良の解決策です。」メモリを節約しながら時間を節約したい場合は、C言語、Pascal、囲碁言語は大丈夫です。3つの変数(時間、エネルギー消費、メモリ使用量)を観察している場合、結論は同じです。ただし、使用するメモリを減らしながらエネルギーを節約したい場合は、CまたはPascalを選択するのが最適です。

どのプログラミング言語が高速でエネルギー効率が良いですか? 誰かが27の言語を比較しました

おすすめ

転載: blog.csdn.net/aizhushou/article/details/109326115