[解決済み] Perl の配列を繰り返し処理する最良の方法
2022-12-11 05:19:27
質問
Perl の配列を反復処理するための最良の実装はどれでしょうか?(速度とメモリ使用量の観点から)。より良い方法はありますか?(
@Array
は保持する必要はありません)。
実装1
foreach (@Array)
{
SubRoutine($_);
}
実装2
while($Element=shift(@Array))
{
SubRoutine($Element);
}
実装3
while(scalar(@Array) !=0)
{
$Element=shift(@Array);
SubRoutine($Element);
}
実装4
for my $i (0 .. $#Array)
{
SubRoutine($Array[$i]);
}
実装 5
map { SubRoutine($_) } @Array ;
どのように解決するのですか?
-
速度の点では #1位と4位ですが、ほとんどの場合、それほど差はありません。
ベンチマークを書いて確認することもできますが、反復作業がPerlではなくCで行われ、配列要素の無駄なコピーが発生しないため、#1や#4の方が若干速いことが分かると思います。(
$_
は エイリアス の要素へのエイリアスですが、#2 と#3 は実際には をコピーする を実行します)。#5も似たようなものかもしれません。
-
メモリ使用量という点では 5番を除いてすべて同じです。
for (@a)
は配列を平坦化しないように特殊なケースを使用しています。ループは配列のインデックスを繰り返し処理します。 -
読みやすさの点では #1.
-
柔軟性という点では #1/#4と#5です。
#2は偽の要素をサポートしない。#2と#3は破壊的である。
関連
-
[解決済み] MIPSで宣言された配列からの印刷
-
[解決済み] 配列から要素を1つだけ値で削除する方法
-
[解決済み] Rubyでハッシュの配列をソートする方法
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MATLABで動的配列を作成する方法
-
[解決済み] glVertex3fvとglVertex3fの相違点
-
[解決済み] 配列をヒープ化するためのヒープにおけるsiftUp, siftDown操作
-
[解決済み] GCCです。配列型に不完全な要素型がある
-
[解決済み] TypeScriptの配列を文字列リテラルに変換するタイプ
-
[解決済み] Swiftの2次元配列
-
[解決済み] Postgres の配列の NOT
-
[解決済み] 並べ替えられた2つの配列の和で、k番目に小さい要素を見つけるにはどうすればよいですか?
-
[解決済み] 配列のインデックスやキーをチェックする最も簡単な方法とは?
-
[解決済み] bashでグローバルを使用せずに配列を返すには?