[解決済み] Perl の配列を繰り返し処理する最適な方法
2022-03-11 13:38:09
質問
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は破壊的である。
関連
-
[解決済み] セル配列の各要素を削除する
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み】KotlinのList型とArray型の違いについて
-
[解決済み】Scalaでリストの末尾に要素を追加する方法
最新
-
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 実装 サイバーパンク風ボタン