web-dev-qa-db-ja.com

ジェフ・ディーンの「すべてのプログラマーが知っておくべき待ち時間の数」は、さまざまなハードウェア実装のコンテキストでどのように正確であることができますか?

私が言及しているのは、GoogleのJeff Deanによる このレイテンシ数値のグラフ です。

私が理解していないことは、これらの数値はハードウェアのセットによって異なりませんか?これらは、RAM、CPU、マザーボード、ハードドライブなどのすべての異なるタイプでどのように正確ですか?

11

これらの数値(また Norvig's Teach your Programming in 10 years にリストされています)は概算であり、(桁)の大きさとしてのみ役立ちます。

実際、今日のハードウェア(少なくともデスクトップまたはラップトップの場合)は、安価な300ユーロのラップトップとハイエンドの1万ユーロのワークステーションの間でさえそれほど変わりません。速度は、最大で約2または4の係数で変化します。このようなワークステーションには、より大きなディスク、より多くのコア、キャッシュ、およびRAMを搭載できます。ただし、これは生のシングルスレッドパフォーマンスにはあまり影響しません。

http://openbenchmarking.org/ の数値またはいくつかのCPUコンパレータを見てください。

いわゆる ムーアの法則死ぬ です。自宅にある3年以上前のデスクトップ(i3770K)を(今日、2016年3月に) 20% だけ速いi6700に置き換えることができます。

14

数値は正確である必要はありません。 桁間の桁数tiers重要です。

ただし、破壊的なテクノロジー(クラウドコンピューティング、10 GB/100 GBイーサネット、新しいネットワーキングカーネルモジュール、SSDストレージネットワーク、仮想化とコンテナー化など)が出現した場合、これらの数値は、新しい階層の出現、非表示、シャッフルによって無効になる可能性があります。

非常に高いレベルでプログラミングする場合-すべての計算、ネットワーキング、解析などが、自分で作成したものではないライブラリを使用して実行される場合、低レベルの操作のパフォーマンスの数値を知ることは、それぞれを改善する機会があるため、あまり役に立たない場合があります。ライブラリのパフォーマンスはかなり制限されているか、まったく不可能です。

代わりに、各ライブラリのパフォーマンス関連のドキュメントを注意深くお読みください。ライブラリにこれらが付属していない場合は、ライブラリに質問してください。または、正しい方法でソフトウェアをベンチマークする方法を学びます。

設計および製造ソフトウェアコンポーネントを扱う企業に雇われている場合は、レイテンシ数の基本を理解することが重要です。自動車とそれに含まれるすべてのコンポーネントを設計および製造している会社と比較してください-ことわざ「ホイールの再発明」(ゴム、タイヤ空気圧、トレッドなど)

ほとんどのソフトウェア会社はコンポーネントレベルでは機能しません。コンポーネントを組み合わせることで、機能的なソフトウェアシステム全体を構築できます。これらのソフトウェア会社は、レイテンシの観点からコンポーネントを設計する方法に集中する必要はありません。代わりに、選択したコンポーネントの品質を評価する必要があります。

要約すると、(1)待ち時間の数値を知る必要がない可能性が非常に高くなります。 (2)ソフトウェアコンポーネント(ライブラリ)を製造する会社に雇われたい場合を除いて、販売用であろうと、(世界最大のソフトウェア会社のいくつかのように)内部で使用する場合であろうと、(3)それらの数が必要な場合は、科学的に正しい方法で自分でベンチマークを行うのはあなたの仕事です。さもなければ、ソフトウェアコンポーネントに取り組むべきではありません。

7
rwong

これらの数値がどのハードウェアに対しても正確であるとの主張は誰もしていません。

しかし、それらはブラインド推測よりもはるかに正確です。残念ながら、多くの人がコードのベースにしています。

3
gnasher729

それらは完全に正確ではなく、実際にそうすることを意図していません。

ただし、それらは(特に、小さい数の場合)単なる桁数より少し優れています。もう1つのポイントは、近づいているものを理解するのに役立ち、実際よりもはるかに離れていると誤解されることがあります。明白な例の1つとして、ブランチの予測ミスはしばしば大きな問題であるとかなりの人が考えています。 can何度も繰り返されれば大したことになりますが、どこでもどこでも大量のデータを犠牲にするだけの価値はありませんjustより良い分岐予測を得るには(たとえば、メインメモリまたはL2キャッシュから読み取り、分岐予測を改善します。これはおそらく正味の損失です)。

同時に、はい、桁違いのものが最も有用な部分かもしれません。たとえば、メインメモリからデータにアクセスするには、レジスタからアクセスするよりも約100倍時間がかかります。はい、あるマシンでは約97倍長く、別のマシンでは127倍近くなる可能性があります。ほぼ間違いなく、10か1000のどちらかよりも100に近いでしょう。

個人的には、これらのほとんどは、たとえば太平洋の島々に似ていると考えがちです。ハードドライブの速度は(例えば)ハワイの島々かもしれません。 SSDの速度はフィリピンの島々です。これは、それぞれが単一のポイントのように見えるように十分に小さな縮尺でマップを表示しています。ズームインした場合、それは明らかに真実ではありませんが、2つのチェーン間の距離は、どちらかのチェーンのアイランド間の距離よりもmany倍です。

2
Jerry Coffin

もちろん、数値はすべてのマシンで正確であるとは限りません。そして、私は彼らがそうであるべきではなかったと思います。しかし、それらはいくつかの種類の操作の間の大きさのオーダーの違いを示しています。

リンクされたデータのコメントには、さらに役立つリンクやデータが含まれている場合があります。

0
Eiko