2016-12-07 8 views
0

char-type keysのマップは、normal arraysより速いアクセス時間を持っていますか?通常の配列よりも高速にマップできますか?

普通の配列はinteger-type indexingなので、私の考えているマップはchar-type indexingです。

整数文字のみ1バイトている間、与えられた文字キーにマップアイテムにアクセスする指定された整数インデックスで正常配列項目にアクセスするより高速であることを信じて妥当と思われるので、4バイトあります。言い換えれば、CPUは、アレイ内のどの要素がメモリ内で参照されているかを調べるために検査するインデックス/キー値のバイト数が少なくなっています。

+0

a)いいえ、バイトでのインデックス付けがints(マイクロベンチマークの保留中)によるインデックス作成よりも速いと仮定するのは妥当ではありません。b)マップを最初にどのように実装しますか?配列の使用? – MrMobster

+0

a)あなたはあなたの用語を混乱させると思います。 b)私が知る限り、マップは基本的にはインデックスされたアイテムのリストなので配列です。索引タイプ以外に重要なのは、通常の配列とchar型キーマップが同じコンテンツタイプ(intの配列にコンテンツタイプとしてintを持つなど)を持つことだけです。私たちがC++を前提とするならば、私は順序付けられていないマップを使用します。使用しているプログラミング言語に応じて、最速のマップタイプを使用します。 –

+0

連想配列(マップ)と直接アドレス指定された配列の違いについてもう少し読んで、質問を言い換えることをお勧めします。 – MrMobster

答えて

0

マップは配列よりも低速です。 マップは実際には配列の実装であるためです。 しかし、大量のデータでは、(正しく使用されていれば)比較を取り除くので、HashMapを使うことができます。

+0

したがって、通常の配列は基本的に任意の高水準プログラミング言語? –

+1

@MånsNilsson私はあなたの言語が直接アドレス指定された配列を実装していれば、はいと答えることに非常に夢中ですが、現実はもっと複雑です。インデックスが連続した整数であるインデックスiを持つ要素を取得することについて話している場合、実際には直接アドレス指定された配列よりも高速になることはありません。削除/挿入/検索またはスパースコンテナをミックスに追加すると、その答えは異なります。連想配列やその他のデータ構造は、多くの使用シナリオで「通常の」配列の方が最適でないため、正確に存在します。 – MrMobster

+0

地図アイテムが検索するのが遅いということはありますか?例えば。キー値 'a'、 'f'、 'x'にそれぞれマップされた3つの整数を持つintマップ "tesst"と、3つの要素で初期化された通常のint配列 "default"があるとします。 tesst ['f']はデフォルト[1]より高速な操作/コマンドですか? –

関連する問題