文字列比較の速度テスト

by nbhd
indexOf はえー!
オシャぶってなんでもかんでも正規表現を使ってすいませんでした。
正規表現は↓のような前方一致には向いてないですね。
♥0 | Line 44 | Modified 2010-11-02 20:50:22 | MIT License
play

ActionScript3 source code

/**
 * Copyright nbhd ( http://wonderfl.net/user/nbhd )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/49Mc
 */

/**
 * indexOf はえー!
 * オシャぶってなんでもかんでも正規表現を使ってすいませんでした。
 * 正規表現は↓のような前方一致には向いてないですね。
 */
package {
    import flash.text.TextField;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
        public function FlashTest() {
            var textField:TextField = addChild(new TextField()) as TextField;
            var str:String = 'hoge_hoge';
            var reg:RegExp = /^hoge_/;
            var i:int = 0;
            var l:int = 100000;
            var startTime:Number;
            var endTime:Number;
            var cnt:int;

            startTime = new Date().getTime();
            for (i; i < l; i++)
            {
                if (reg.test(str)) cnt++;
            }
            endTime = new Date().getTime();
             
            trace(endTime - startTime);
            textField.appendText("RegExp.test : " + String(endTime - startTime) + "\n");
            
            cnt = 0;
            i = 0;
            startTime = new Date().getTime();
            for (i; i < l; i++)
            {
                if (str.match(reg)) cnt++;
            }
            endTime = new Date().getTime();
             
            trace(endTime - startTime);
            textField.appendText("String.match : " + String(endTime - startTime) + "\n");
            
            cnt = 0;
            i = 0;
            startTime = new Date().getTime();
            for (i; i < l; i++)
            {
                if (str.indexOf('hoge_') == 0) cnt++;
            }
            endTime = new Date().getTime();
             
            trace(endTime - startTime);
            textField.appendText("String.indexOf : " + String(endTime - startTime) + "\n");
        }
    }
}