テキスト行を結合する [ javascript ]

ふとテキスト中の改行を削除して一行に結合するコードを作りたい、と思ったのがきっかけ。
通常ならStringのreplaceを使うことしか思いつかないのに、たまたまどこかのサイトでsplitとjoinを使って文字列を置換する方法を見ていたのでどっちでやるのがいいのか気になって比べて見ることにした。

replaceを使う:

文字列.replace(/\n/g, "")

split & joinを使う:

文字列.split("\n").join("")

『正規表現って何か遅そうだからsplit&joinを使うほうがクールで速い』が一般論として成り立つんじゃないかと思って性能を測ってみたけど、ブラウザによってまちまちな模様。

手元のパソコンでのテキトーな測定結果(1秒間に何回変換出来たか):

Chrome15Opera11Firefox7IE10
split&join 436753 305781304930 146187
replace923907 341391271214 189233

どちらがいいとも言えない結果になってしまった。replace侮りがたし。Orz

一番いいところを取るならreplaceなんだろうな。split&joinが勝ってるケースでは差はあまり大きくないことだし。

それにしてもChrome他のブラウザをぶっちぎって速いな!これを基準にしてると他の環境で実行したときにハマりそうで怖いくらいだ。

あと…ええと…もちろん、一面を評価したに過ぎないですけど…もうちょっと頑張って欲しい>IE

実験

original
split & join
replace

show source

0 件のコメント:

コメントを投稿