質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3640閲覧

JavaScriptの速度検証:もしよかったら検証してみてほしいです

Cf_cwd

総合スコア730

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2015/04/30 16:46

文字列の先頭だけ削除して残りを得るコードとして

lang

1var str="#AAAABBBB1234"; 2console.log(str.slice(1));//AAAABBBB1234

のようにslice()を使用する方法や

lang

1var str="#AAAABBBB1234"; 2console.log(str.substr(1));//AAAABBBB1234

substr()を使用する方法があると思います。
今回先頭にはアルファベットや数字以外の記号が入るという想定(HTMLのidやclassのパターン分け目的)で以下のような方法はどうなのだろうと思いました。

lang

1var str="#AAAABBBB1234"; 2console.log(str.replace(/^\W/,""));//AAAABBBB1234

当方で確認した限り以下のようになりました。

lang

1//検証用コード 2//Firefox 37.0.2 3var str="#ABCD1234ABCD"; 4var m1,m2,mI; 5console.time("Major1"); 6console.log(str.slice(1)); 7m1=console.timeEnd("Major1").toFixed(2); 8 9console.time("Major2"); 10console.log(str.substr(1)); 11m2=console.timeEnd("Major2").toFixed(2); 12 13console.time("My idea"); 14console.log(str.replace(/^\W/,"")); 15mI=console.timeEnd("My idea").toFixed(2); 16 17console.log("Major1 : "+m1+"ms // Major2 : "+m2+"ms // My Idea : "+mI+"ms") 18/* 19Major1 : 2.76ms // Major2 : 1.74ms // My Idea : 1.63ms 20Major1 : 2.71ms // Major2 : 2.32ms // My Idea : 2.27ms 21Major1 : 5.37ms // Major2 : 2.56ms // My Idea : 4.49ms 22Major1 : 1.94ms // Major2 : 1.29ms // My Idea : 1.51ms 23Major1 : 2.67ms // Major2 : 1.89ms // My Idea : 1.64ms 24Major1 : 2.49ms // Major2 : 2.14ms // My Idea : 1.36ms 25Major1 : 2.34ms // Major2 : 2.04ms // My Idea : 1.89ms 26Major1 : 2.26ms // Major2 : 2.05ms // My Idea : 1.87ms 27Major1 : 4.22ms // Major2 : 1.86ms // My Idea : 2.05ms 28Major1 : 2.98ms // Major2 : 2.32ms // My Idea : 2.55ms || 10 29Major1 : 2.79ms // Major2 : 2.18ms // My Idea : 1.89ms 30Major1 : 2.48ms // Major2 : 2.22ms // My Idea : 2.01ms 31Major1 : 2.96ms // Major2 : 2.35ms // My Idea : 2.29ms 32Major1 : 2.20ms // Major2 : 1.32ms // My Idea : 1.09ms 33Major1 : 2.38ms // Major2 : 2.38ms // My Idea : 1.52ms 34Major1 : 3.50ms // Major2 : 2.81ms // My Idea : 3.38ms 35Major1 : 3.81ms // Major2 : 3.39ms // My Idea : 1.47ms 36Major1 : 2.07ms // Major2 : 1.55ms // My Idea : 1.82ms 37Major1 : 3.02ms // Major2 : 2.19ms // My Idea : 1.84ms 38Major1 : 2.83ms // Major2 : 2.02ms // My Idea : 1.89ms || 20 39 40-- Avg ----------------------------------------------------- 41Major1 : 2.889ms // Major2 : 2.131ms // My Idea : 2.023ms 42*/

本題:
皆さんの環境で実行した際の結果を教えていただきたいです。(実行時間、平均、実行したブラウザなど)
またこの方法がいいと思うと何か挙げていただき、その理由(見た目なども可)を教えてください。
それに加えて「こんな方法もあるけどどう?」「この方法はこんなメリットがあるね」や
「この方法は●●な点がだめだ」などの意見がほしいと考えております。
(実行環境の幅(IEやOperaなど含む)>意見>感想などの順にベストアンサーの基準とします)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JSPerfというサイトがあって、いくつか書いたコードについてブラウザで開いて速度比較ができます。今回のコードも投稿してみました

Chrome、Firefox、IEと試してみましたが、圧倒的に正規表現が遅いという結果です(Firefoxでは100倍以上の差がついています)。

(所要時間はともかく、演算結果をconsole.logに投げてしまうと、console自体の負荷のほうが大きいので、なかなか正確な値は出ない気がします)

投稿2015/05/01 00:15

maisumakun

総合スコア145123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Cf_cwd

2015/05/01 15:01

そうですよねー。正規表現が早いとは思えないと思っていたので気になっていたんです。 JSPerfは知っているのですが使い方をよく知らないんですよね。 検証結果がまずかったですねー。いやはや質問してよかったです。
Cf_cwd

2015/05/01 15:02

そういえば他に方法とかあるのですかね? (forループで取り出すとか以外に)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問