« 【JavaScript】オブジェクトをキーに出来るハッシュのようなもの……って、これじゃだめ? | トップページ | はてブコメントをニコニコ動画っぽく表示するブックマークレット/Greasemonkey/SeaHorse »

2008/02/15

【JavaScript】ベンチをとってみる<オブジェクトをキーに出来るハッシュのようなもの

ベンチマーク
var count=prompt('試行:キーの数は?',500);

(function(){

print('<a href="http://d.hatena.ne.jp/amachang/20080212/1202805356">すべてのオブジェクトをキーにできるハッシュの様なもの - IT戦記</a>の方法\n');

var dict = new Dictionary();

var keyno=0,keys=[],val;

print('SET '+count+' 回: '+bench(count,function(){
    keys[keyno]=new Function('print('+keyno+')');
    dict(keys[keyno],keyno++);
})+'ms<br />');

print('GET(0) '+count+' 回: '+bench(count,function(){
    val=dict(keys[0]);
})+'ms');
print('※dict('+keys[0].toString()+')='+val+'<br />');

var mid=~~(keyno/2)-1;
print('GET('+mid+') '+count+' 回: '+bench(count,function(){
    val=dict(keys[mid]);
})+'ms');
print('※dict('+keys[mid].toString()+')='+val+'<br />');

print('GET('+(keyno-1)+') '+count+' 回: '+bench(count,function(){
    val=dict(keys[keyno-1]);
})+'ms');
print('※dict('+keys[keyno-1].toString()+')='+val+'<br />');

})();

print('');

(function(){

print('<a href="http://furyu.tea-nifty.com/annex/2008/02/javascript_bc80.html">風柳亭 - 別館:書庫のある庵 -: 【JavaScript】オブジェクトをキーに出来るハッシュのようなもの……って、これじゃだめ?</a>の方法\n');

var assoca = new Object.associativeArray();

var keyno=0,keys=[],val;

print('SET '+count+' 回: '+bench(count,function(){
    keys[keyno]=new Function('print('+keyno+')');
    assoca.set(keys[keyno],keyno++);
})+'ms<br />');

print('GET(0) '+count+' 回: '+bench(count,function(){
    val=assoca.get(keys[0]);
})+'ms');
print('※assoca.get('+keys[0].toString()+')='+val+'<br />');

var mid=~~(keyno/2)-1;
print('GET('+mid+') '+count+' 回: '+bench(count,function(){
    val=assoca.get(keys[mid]);
})+'ms');
print('※assoca.get('+keys[mid].toString()+')='+val+'<br />');

print('GET('+(keyno-1)+') '+count+' 回: '+bench(count,function(){
    val=assoca.get(keys[keyno-1]);
})+'ms');
print('※assoca.get('+keys[keyno-1].toString()+')='+val+'<br />');

})();
■結果
すべてのオブジェクトをキーにできるハッシュの様なもの - IT戦記の方法
SET 500 回: 594ms

GET(0) 500 回: 1250ms
※dict(function anonymous() { print(0) })=0

GET(249) 500 回: 547ms
※dict(function anonymous() { print(249) })=249

GET(499) 500 回: 0ms
※dict(function anonymous() { print(499) })=499


風柳亭 - 別館:書庫のある庵 -: 【JavaScript】オブジェクトをキーに出来るハッシュのようなもの……って、これじゃだめ?の方法
SET 500 回: 47ms

GET(0) 500 回: 0ms
※assoca.get(function anonymous() { print(0) })=0

GET(249) 500 回: 16ms
※assoca.get(function anonymous() { print(249) })=249

GET(499) 500 回: 0ms
※assoca.get(function anonymous() { print(499) })=499

上記は、IE7での結果です。
ある意味、当たり前の結果に。
ちなみに amachang 氏の方だと、Firefox 2.0.0.12(+Firebug)で試行回数を1000にしたら"too much recursion"エラー発生。
999回だと発生しない……なに、この意図的な数字(苦笑)。

« 【JavaScript】オブジェクトをキーに出来るハッシュのようなもの……って、これじゃだめ? | トップページ | はてブコメントをニコニコ動画っぽく表示するブックマークレット/Greasemonkey/SeaHorse »

パソコン・インターネット」カテゴリの記事

おもいつき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

« 【JavaScript】オブジェクトをキーに出来るハッシュのようなもの……って、これじゃだめ? | トップページ | はてブコメントをニコニコ動画っぽく表示するブックマークレット/Greasemonkey/SeaHorse »

戻るリンク追加

カレンダー

2019年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

ココログカレンダーPlus

検索


    • Web全体 サイト内
    • 蔵書のISBNを入力して下さい
    • はじめる前
      初級者向け
      上級者向け
      ブログ紹介
      結果を表示

最近のトラックバック

コメントリストツリー化

無料ブログはココログ