diff --git a/benchmarks/results/runs/20110112125355 b/benchmarks/results/runs/20110112125355 deleted file mode 100644 index e69de29..0000000 diff --git a/benchmarks/results/runs/20110112162110 b/benchmarks/results/runs/20110112162110 deleted file mode 100644 index 5b8ce76..0000000 --- a/benchmarks/results/runs/20110112162110 +++ /dev/null @@ -1 +0,0 @@ -[{"benchmark":"benchmark_find","results":"ended $eq\n[{\"name\":\"populating keymap that has 2 attached indexes\",\"started\":1294849271571,\"count\":100000,\"mem_usage_before\":{\"rss\":13787136,\"vsize\":3117813760,\"heapTotal\":6433984,\"heapUsed\":4229984},\"ended\":1294851836641,\"ellapsed\":2565070,\"average\":25.6507,\"throughput\":38,\"memory_usage_after\":{\"rss\":249720832,\"vsize\":3326128128,\"heapTotal\":243245600,\"heapUsed\":200117376},\"rss_diff\":235933696},{\"name\":\"find $eq operator\",\"started\":1294851836641,\"count\":1000,\"mem_usage_before\":{\"rss\":249720832,\"vsize\":3326128128,\"heapTotal\":243245600,\"heapUsed\":200118816},\"ended\":1294851852879,\"ellapsed\":16238,\"average\":16.238,\"throughput\":61,\"memory_usage_after\":{\"rss\":249823232,\"vsize\":3326128128,\"heapTotal\":243245600,\"heapUsed\":205502072},\"rss_diff\":102400},{\"name\":\"find $range operator\",\"started\":1294851852879,\"count\":1000,\"mem_usage_before\":{\"rss\":249823232,\"vsize\":3326128128,\"heapTotal\":243245600,\"heapUsed\":205503344},\"ended\":1294851885392,\"ellapsed\":32513,\"average\":32.513,\"throughput\":30,\"memory_usage_after\":{\"rss\":249839616,\"vsize\":3326144512,\"heapTotal\":243261984,\"heapUsed\":207037624},\"rss_diff\":16384}]\n"},{"benchmark":"benchmark_collection","results":[{"name":"opening collection","started":1294851915119,"count":1,"mem_usage_before":{"rss":9371648,"vsize":3106881536,"heapTotal":4211808,"heapUsed":1942640},"ended":1294851915247,"ellapsed":128,"average":128,"throughput":7,"memory_usage_after":{"rss":11616256,"vsize":3117223936,"heapTotal":5331104,"heapUsed":2655208},"rss_diff":2244608},{"name":"prunning collection","started":1294851915248,"count":1,"mem_usage_before":{"rss":11620352,"vsize":3117223936,"heapTotal":5331104,"heapUsed":2657152},"ended":1294851915249,"ellapsed":1,"average":1,"throughput":1000,"memory_usage_after":{"rss":11677696,"vsize":3117301760,"heapTotal":5331104,"heapUsed":2707928},"rss_diff":57344},{"name":"populating collection","started":1294851915250,"count":100000,"mem_usage_before":{"rss":11677696,"vsize":3117301760,"heapTotal":5331104,"heapUsed":2709200},"ended":1294851918431,"ellapsed":3181,"average":0.03181,"throughput":31436,"memory_usage_after":{"rss":90443776,"vsize":3164385280,"heapTotal":83358080,"heapUsed":61069320},"rss_diff":78766080},{"name":"reading entire collection of 100000 records","started":1294851918431,"count":1,"mem_usage_before":{"rss":90443776,"vsize":3164385280,"heapTotal":83358080,"heapUsed":61070064},"ended":1294852336461,"ellapsed":418030,"average":418030,"throughput":0,"memory_usage_after":{"rss":59822080,"vsize":3165171712,"heapTotal":52659680,"heapUsed":49931480},"rss_diff":-30621696}]},{"benchmark":"benchmark_collection_filter","results":[{"name":"Collection filter of collection with 100000 records","started":1294852362681,"count":1,"mem_usage_before":{"rss":79134720,"vsize":3153207296,"heapTotal":72185280,"heapUsed":52777160},"ended":1294852764131,"ellapsed":401450,"average":401450,"throughput":0,"memory_usage_after":{"rss":80257024,"vsize":3154255872,"heapTotal":73197120,"heapUsed":42552664},"rss_diff":1122304}]},{"benchmark":"benchmark_key_map","results":[{"name":"Insert object into key map","started":1294852787276,"count":50000,"mem_usage_before":{"rss":12193792,"vsize":3117334528,"heapTotal":5633152,"heapUsed":3104344},"ended":1294852789297,"ellapsed":2021,"average":0.04042,"throughput":24740,"memory_usage_after":{"rss":72376320,"vsize":3146219520,"heapTotal":65438272,"heapUsed":35997752},"rss_diff":60182528},{"name":"Retrieve a random object by key from a 50000 hash map","started":1294852790297,"count":10,"mem_usage_before":{"rss":72380416,"vsize":3146219520,"heapTotal":65438272,"heapUsed":36020408},"ended":1294853736434,"ellapsed":946137,"average":94613.7,"throughput":0,"memory_usage_after":{"rss":47652864,"vsize":3135488000,"heapTotal":38093920,"heapUsed":11809480},"rss_diff":-24727552}]},{"benchmark":"benchmark_key_map_each_with_pos","results":[{"name":"key_map.each_with_pos for a key map with 100000 elements","started":1294853743180,"count":1,"mem_usage_before":{"rss":68460544,"vsize":3175165952,"heapTotal":61452192,"heapUsed":58807272},"ended":1294854186924,"ellapsed":443744,"average":443744,"throughput":0,"memory_usage_after":{"rss":82325504,"vsize":3148951552,"heapTotal":70906048,"heapUsed":32245736},"rss_diff":13864960}]},{"benchmark":"benchmark_indexed_key_map","results":[{"name":"open empty indexed key map","started":1294854188508,"count":1,"mem_usage_before":{"rss":12226560,"vsize":3107708928,"heapTotal":5592224,"heapUsed":3207544},"ended":1294854188511,"ellapsed":3,"average":3,"throughput":333,"memory_usage_after":{"rss":12357632,"vsize":3117223936,"heapTotal":5592224,"heapUsed":3297136},"rss_diff":131072},{"name":"clear empty indexed key map","started":1294854188511,"count":1,"mem_usage_before":{"rss":12357632,"vsize":3117223936,"heapTotal":5592224,"heapUsed":3299144},"ended":1294854188513,"ellapsed":2,"average":2,"throughput":500,"memory_usage_after":{"rss":12414976,"vsize":3117301760,"heapTotal":5592224,"heapUsed":3349512},"rss_diff":57344},{"name":"populate indexed key map","started":1294854188513,"count":100000,"mem_usage_before":{"rss":12414976,"vsize":3117301760,"heapTotal":5592224,"heapUsed":3350784},"ended":1294854194031,"ellapsed":5518,"average":0.05518,"throughput":18122,"memory_usage_after":{"rss":132206592,"vsize":3206852608,"heapTotal":124981344,"heapUsed":91874208},"rss_diff":119791616},{"name":"reopen indexed key map with 100000 elements","started":1294854217747,"count":1,"mem_usage_before":{"rss":93327360,"vsize":3159666688,"heapTotal":80329824,"heapUsed":44921560},"ended":1294854240120,"ellapsed":22373,"average":22373,"throughput":0,"memory_usage_after":{"rss":123543552,"vsize":3176452096,"heapTotal":110285408,"heapUsed":77085168},"rss_diff":30216192},{"name":"indexed_key_map.get","started":1294854240121,"count":300000,"mem_usage_before":{"rss":123543552,"vsize":3176452096,"heapTotal":110285408,"heapUsed":77090952},"ended":1294854292932,"ellapsed":52811,"average":0.17603666666666667,"throughput":5680,"memory_usage_after":{"rss":484990976,"vsize":3650637824,"heapTotal":433462208,"heapUsed":397339576},"rss_diff":361447424}]},{"benchmark":"benchmark_indexed_key_map_random","results":[{"name":"open empty indexed key map","started":1294854351443,"count":1,"mem_usage_before":{"rss":12197888,"vsize":3107708928,"heapTotal":5592224,"heapUsed":3207968},"ended":1294854351446,"ellapsed":3,"average":3,"throughput":333,"memory_usage_after":{"rss":12406784,"vsize":3117223936,"heapTotal":5592224,"heapUsed":3297616},"rss_diff":208896},{"name":"clear empty indexed key map","started":1294854351446,"count":1,"mem_usage_before":{"rss":12410880,"vsize":3117223936,"heapTotal":5592224,"heapUsed":3299624},"ended":1294854351450,"ellapsed":4,"average":4,"throughput":250,"memory_usage_after":{"rss":12460032,"vsize":3117301760,"heapTotal":5592224,"heapUsed":3350008},"rss_diff":49152},{"name":"populate indexed key map","started":1294854351450,"count":100000,"mem_usage_before":{"rss":12460032,"vsize":3117301760,"heapTotal":5592224,"heapUsed":3351280},"ended":1294854356973,"ellapsed":5523,"average":0.05523,"throughput":18106,"memory_usage_after":{"rss":131993600,"vsize":3206066176,"heapTotal":124687584,"heapUsed":98392600},"rss_diff":119533568},{"name":"reopen indexed key map with 100000 elements","started":1294854382508,"count":1,"mem_usage_before":{"rss":103534592,"vsize":3164647424,"heapTotal":87265824,"heapUsed":55571384},"ended":1294854405080,"ellapsed":22572,"average":22572,"throughput":0,"memory_usage_after":{"rss":117018624,"vsize":3176189952,"heapTotal":97767968,"heapUsed":64229136},"rss_diff":13484032},{"name":"cached_key_map.get","started":1294854405081,"count":300000,"mem_usage_before":{"rss":117018624,"vsize":3176189952,"heapTotal":97767968,"heapUsed":64234032},"ended":1294854469920,"ellapsed":64839,"average":0.21613,"throughput":4626,"memory_usage_after":{"rss":150188032,"vsize":3240382464,"heapTotal":82133024,"heapUsed":75925400},"rss_diff":33169408}]},{"benchmark":"benchmark_cached_key_map_random","results":[{"name":"open empty indexed key map","started":1294854471894,"count":1,"mem_usage_before":{"rss":12288000,"vsize":3107676160,"heapTotal":5559456,"heapUsed":3307376},"ended":1294854471897,"ellapsed":3,"average":3,"throughput":333,"memory_usage_after":{"rss":12414976,"vsize":3108802560,"heapTotal":5559456,"heapUsed":3402640},"rss_diff":126976},{"name":"clear empty indexed key map","started":1294854471898,"count":1,"mem_usage_before":{"rss":12414976,"vsize":3108802560,"heapTotal":5559456,"heapUsed":3404144},"ended":1294854471899,"ellapsed":1,"average":1,"throughput":1000,"memory_usage_after":{"rss":12480512,"vsize":3108880384,"heapTotal":5559456,"heapUsed":3455240},"rss_diff":65536},{"name":"populate indexed key map","started":1294854471899,"count":100000,"mem_usage_before":{"rss":12480512,"vsize":3108880384,"heapTotal":5559456,"heapUsed":3456512},"ended":1294854478265,"ellapsed":6366,"average":0.06366,"throughput":15708,"memory_usage_after":{"rss":192880640,"vsize":3267809280,"heapTotal":185459936,"heapUsed":151481368},"rss_diff":180400128},{"name":"reopen indexed key map with 100000 records","started":1294854506358,"count":1,"mem_usage_before":{"rss":108027904,"vsize":3201622016,"heapTotal":93185728,"heapUsed":89899872},"ended":1294854545488,"ellapsed":39130,"average":39130,"throughput":0,"memory_usage_after":{"rss":264355840,"vsize":3328552960,"heapTotal":217834048,"heapUsed":207489960},"rss_diff":156327936},{"name":"cached_key_map.get","started":1294854545488,"count":300000,"mem_usage_before":{"rss":264355840,"vsize":3328552960,"heapTotal":217834048,"heapUsed":207494856},"ended":1294854545797,"ellapsed":309,"average":0.00103,"throughput":970873,"memory_usage_after":{"rss":285532160,"vsize":3333009408,"heapTotal":238911584,"heapUsed":210823256},"rss_diff":21176320},{"name":"ending key_map","started":1294854545797,"count":1,"mem_usage_before":{"rss":285532160,"vsize":3333009408,"heapTotal":238911584,"heapUsed":210823984},"ended":1294854545798,"ellapsed":1,"average":1,"throughput":1000,"memory_usage_after":{"rss":285536256,"vsize":3333009408,"heapTotal":238911584,"heapUsed":210861400},"rss_diff":4096},{"name":"wait 10 seconds for gc to kick in","started":1294854545798,"count":1,"mem_usage_before":{"rss":285536256,"vsize":3333009408,"heapTotal":238911584,"heapUsed":210863952},"ended":1294854555798,"ellapsed":10000,"average":10000,"throughput":0,"memory_usage_after":{"rss":207138816,"vsize":3300495360,"heapTotal":161970368,"heapUsed":159469336},"rss_diff":-78397440}]},{"benchmark":"benchmark_unordered_index","results":[{"name":"open key map","started":1294854557063,"count":1,"mem_usage_before":{"rss":11866112,"vsize":3107741696,"heapTotal":5363872,"heapUsed":3010312},"ended":1294854557066,"ellapsed":3,"average":3,"throughput":333,"memory_usage_after":{"rss":12111872,"vsize":3108868096,"heapTotal":5624992,"heapUsed":3094800},"rss_diff":245760},{"name":"clear key map","started":1294854557066,"count":1,"mem_usage_before":{"rss":12115968,"vsize":3108868096,"heapTotal":5624992,"heapUsed":3096896},"ended":1294854557067,"ellapsed":1,"average":1,"throughput":1000,"memory_usage_after":{"rss":12193792,"vsize":3117334528,"heapTotal":5624992,"heapUsed":3147608},"rss_diff":77824},{"name":"populate key map","started":1294854557068,"count":90000,"mem_usage_before":{"rss":12218368,"vsize":3117334528,"heapTotal":5624992,"heapUsed":3175760},"ended":1294854560663,"ellapsed":3595,"average":0.03994444444444444,"throughput":25034,"memory_usage_after":{"rss":139321344,"vsize":3213438976,"heapTotal":132200128,"heapUsed":106645880},"rss_diff":127102976},{"name":"end key map","started":1294854560663,"count":1,"mem_usage_before":{"rss":139321344,"vsize":3213438976,"heapTotal":132200128,"heapUsed":106646512},"ended":1294854580921,"ellapsed":20258,"average":20258,"throughput":0,"memory_usage_after":{"rss":117354496,"vsize":3174633472,"heapTotal":101669408,"heapUsed":83198288},"rss_diff":-21966848},{"name":"reopen key map with 90000 elements","started":1294854580921,"count":1,"mem_usage_before":{"rss":117354496,"vsize":3174633472,"heapTotal":101669408,"heapUsed":83199032},"ended":1294854580923,"ellapsed":2,"average":2,"throughput":500,"memory_usage_after":{"rss":117383168,"vsize":3174633472,"heapTotal":101669408,"heapUsed":83234552},"rss_diff":28672},{"name":"add index to key map with 90000 elements","started":1294854580923,"count":1,"mem_usage_before":{"rss":117383168,"vsize":3174633472,"heapTotal":101669408,"heapUsed":83235936},"ended":1294854604240,"ellapsed":23317,"average":23317,"throughput":0,"memory_usage_after":{"rss":149331968,"vsize":3236937728,"heapTotal":135973536,"heapUsed":129363456},"rss_diff":31948800},{"name":"scan index of key map with 90000 elements","started":1294854604240,"count":1,"mem_usage_before":{"rss":149336064,"vsize":3236937728,"heapTotal":135973536,"heapUsed":129371960},"ended":1294854604247,"ellapsed":7,"average":7,"throughput":142,"memory_usage_after":{"rss":149336064,"vsize":3236937728,"heapTotal":135973536,"heapUsed":129377520},"rss_diff":0},{"name":"scan and get 30000elements from a key map with 90000elements","started":1294854604247,"count":30000,"mem_usage_before":{"rss":149344256,"vsize":3236937728,"heapTotal":135973536,"heapUsed":129381272},"ended":1294854607619,"ellapsed":3372,"average":0.1124,"throughput":8896,"memory_usage_after":{"rss":266190848,"vsize":3295485952,"heapTotal":240095520,"heapUsed":132202448},"rss_diff":116846592}]},{"benchmark":"benchmark_cached_unordered_index","results":[{"name":"open key map","started":1294854608789,"count":1,"mem_usage_before":{"rss":12320768,"vsize":3107676160,"heapTotal":5559456,"heapUsed":3312736},"ended":1294854608791,"ellapsed":2,"average":2,"throughput":500,"memory_usage_after":{"rss":12460032,"vsize":3117191168,"heapTotal":5559456,"heapUsed":3408184},"rss_diff":139264},{"name":"clearing key map","started":1294854608792,"count":1,"mem_usage_before":{"rss":12464128,"vsize":3117191168,"heapTotal":5559456,"heapUsed":3409728},"ended":1294854608794,"ellapsed":2,"average":2,"throughput":500,"memory_usage_after":{"rss":12533760,"vsize":3117268992,"heapTotal":5559456,"heapUsed":3460808},"rss_diff":69632},{"name":"populating key map","started":1294854608794,"count":90000,"mem_usage_before":{"rss":12562432,"vsize":3117268992,"heapTotal":5559456,"heapUsed":3495680},"ended":1294854613644,"ellapsed":4850,"average":0.05388888888888889,"throughput":18556,"memory_usage_after":{"rss":178438144,"vsize":3253518336,"heapTotal":170968256,"heapUsed":140412448},"rss_diff":165875712},{"name":"ending key map","started":1294854613644,"count":1,"mem_usage_before":{"rss":178438144,"vsize":3253518336,"heapTotal":170968256,"heapUsed":140413080},"ended":1294854634913,"ellapsed":21269,"average":21269,"throughput":0,"memory_usage_after":{"rss":132214784,"vsize":3207254016,"heapTotal":115300000,"heapUsed":84713376},"rss_diff":-46223360},{"name":"reopening key map with 90000 entries","started":1294854634913,"count":1,"mem_usage_before":{"rss":132214784,"vsize":3207254016,"heapTotal":115300000,"heapUsed":84714120},"ended":1294854671230,"ellapsed":36317,"average":36317,"throughput":0,"memory_usage_after":{"rss":327344128,"vsize":3375370240,"heapTotal":273043680,"heapUsed":230460752},"rss_diff":195129344},{"name":"adding index to key map with 90000 entries","started":1294854671230,"count":1,"mem_usage_before":{"rss":327344128,"vsize":3375370240,"heapTotal":273043680,"heapUsed":230461496},"ended":1294854687510,"ellapsed":16280,"average":16280,"throughput":0,"memory_usage_after":{"rss":397082624,"vsize":3426422784,"heapTotal":336695712,"heapUsed":313517184},"rss_diff":69738496},{"name":"scan index with 90000 entries","started":1294854687511,"count":1,"mem_usage_before":{"rss":397082624,"vsize":3426422784,"heapTotal":336695712,"heapUsed":313525688},"ended":1294854687515,"ellapsed":4,"average":4,"throughput":250,"memory_usage_after":{"rss":397082624,"vsize":3426422784,"heapTotal":336695712,"heapUsed":313531504},"rss_diff":0},{"name":"filter and get 30000 records from a key map with 90000 elements","started":1294854687515,"count":1,"mem_usage_before":{"rss":397086720,"vsize":3426422784,"heapTotal":336695712,"heapUsed":313536752},"ended":1294854687913,"ellapsed":398,"average":398,"throughput":2,"memory_usage_after":{"rss":394510336,"vsize":3423678464,"heapTotal":338125216,"heapUsed":223481752},"rss_diff":-2576384}]},{"benchmark":"benchmark_cached_ordered_index","results":[{"name":"open key map","started":1294854689120,"count":1,"mem_usage_before":{"rss":12320768,"vsize":3107676160,"heapTotal":5559456,"heapUsed":3312872},"ended":1294854723405,"ellapsed":34285,"average":34285,"throughput":0,"memory_usage_after":{"rss":174010368,"vsize":3236327424,"heapTotal":124476608,"heapUsed":93397976},"rss_diff":161689600},{"name":"clearing key map","started":1294854723405,"count":1,"mem_usage_before":{"rss":174010368,"vsize":3236327424,"heapTotal":124476608,"heapUsed":93399520},"ended":1294854723410,"ellapsed":5,"average":5,"throughput":200,"memory_usage_after":{"rss":174022656,"vsize":3236327424,"heapTotal":124476608,"heapUsed":93456352},"rss_diff":12288},{"name":"populating key map","started":1294854723410,"count":90000,"mem_usage_before":{"rss":174026752,"vsize":3236327424,"heapTotal":124476608,"heapUsed":93485040},"ended":1294854728342,"ellapsed":4932,"average":0.0548,"throughput":18248,"memory_usage_after":{"rss":221986816,"vsize":3285725184,"heapTotal":172183712,"heapUsed":149798328},"rss_diff":47960064},{"name":"ending key map","started":1294854728342,"count":1,"mem_usage_before":{"rss":221986816,"vsize":3285725184,"heapTotal":172183712,"heapUsed":149798960},"ended":1294854757437,"ellapsed":29095,"average":29095,"throughput":0,"memory_usage_after":{"rss":128917504,"vsize":3219501056,"heapTotal":78902624,"heapUsed":74780792},"rss_diff":-93069312},{"name":"reopening key map with 90000 entries","started":1294854757437,"count":1,"mem_usage_before":{"rss":128917504,"vsize":3219501056,"heapTotal":78902624,"heapUsed":74781536},"ended":1294854792501,"ellapsed":35064,"average":35064,"throughput":0,"memory_usage_after":{"rss":310108160,"vsize":3354664960,"heapTotal":249818400,"heapUsed":189834736},"rss_diff":181190656},{"name":"adding index to key map with 90000 entries","started":1294854792501,"count":1,"mem_usage_before":{"rss":310108160,"vsize":3354664960,"heapTotal":249818400,"heapUsed":189835480},"ended":1294854807458,"ellapsed":14957,"average":14957,"throughput":0,"memory_usage_after":{"rss":324698112,"vsize":3387613184,"heapTotal":266733696,"heapUsed":254027192},"rss_diff":14589952},{"name":"scan index with 90000 entries","started":1294854807458,"count":1,"mem_usage_before":{"rss":324698112,"vsize":3387613184,"heapTotal":266733696,"heapUsed":254035696},"ended":1294854807463,"ellapsed":5,"average":5,"throughput":200,"memory_usage_after":{"rss":324702208,"vsize":3387613184,"heapTotal":266733696,"heapUsed":254041512},"rss_diff":4096},{"name":"filter and get 30000 records from a key map with 90000 elements","started":1294854807463,"count":1,"mem_usage_before":{"rss":324702208,"vsize":3387613184,"heapTotal":266733696,"heapUsed":254046760},"ended":1294854807536,"ellapsed":73,"average":73,"throughput":13,"memory_usage_after":{"rss":335138816,"vsize":3397836800,"heapTotal":293694592,"heapUsed":263199208},"rss_diff":10436608}]}] diff --git a/benchmarks/results/summaries/20110112184747 b/benchmarks/results/summaries/20110112184747 deleted file mode 100644 index 1b943b5..0000000 --- a/benchmarks/results/summaries/20110112184747 +++ /dev/null @@ -1,17 +0,0 @@ -SyntaxErrorUnexpected end of inputSyntaxError: Unexpected end of input - at Object.parse (native) - at /Users/pedroteixeira/projects/alfred/tools/aggregate_benchmarks.js:64:29 - at [object Object]. (fs.js:86:5) - at [object Object].emit (events.js:28:17) - at afterRead (fs.js:746:12)TypeErrorObject ended $eq -[{"name":"populating keymap that has 2 attached indexes","started":1294849271571,"count":100000,"mem_usage_before":{"rss":13787136,"vsize":3117813760,"heapTotal":6433984,"heapUsed":4229984},"ended":1294851836641,"ellapsed":2565070,"average":25.6507,"throughput":38,"memory_usage_after":{"rss":249720832,"vsize":3326128128,"heapTotal":243245600,"heapUsed":200117376},"rss_diff":235933696},{"name":"find $eq operator","started":1294851836641,"count":1000,"mem_usage_before":{"rss":249720832,"vsize":3326128128,"heapTotal":243245600,"heapUsed":200118816},"ended":1294851852879,"ellapsed":16238,"average":16.238,"throughput":61,"memory_usage_after":{"rss":249823232,"vsize":3326128128,"heapTotal":243245600,"heapUsed":205502072},"rss_diff":102400},{"name":"find $range operator","started":1294851852879,"count":1000,"mem_usage_before":{"rss":249823232,"vsize":3326128128,"heapTotal":243245600,"heapUsed":205503344},"ended":1294851885392,"ellapsed":32513,"average":32.513,"throughput":30,"memory_usage_after":{"rss":249839616,"vsize":3326144512,"heapTotal":243261984,"heapUsed":207037624},"rss_diff":16384}] - has no method 'forEach'TypeError: Object ended $eq -[{"name":"populating keymap that has 2 attached indexes","started":1294849271571,"count":100000,"mem_usage_before":{"rss":13787136,"vsize":3117813760,"heapTotal":6433984,"heapUsed":4229984},"ended":1294851836641,"ellapsed":2565070,"average":25.6507,"throughput":38,"memory_usage_after":{"rss":249720832,"vsize":3326128128,"heapTotal":243245600,"heapUsed":200117376},"rss_diff":235933696},{"name":"find $eq operator","started":1294851836641,"count":1000,"mem_usage_before":{"rss":249720832,"vsize":3326128128,"heapTotal":243245600,"heapUsed":200118816},"ended":1294851852879,"ellapsed":16238,"average":16.238,"throughput":61,"memory_usage_after":{"rss":249823232,"vsize":3326128128,"heapTotal":243245600,"heapUsed":205502072},"rss_diff":102400},{"name":"find $range operator","started":1294851852879,"count":1000,"mem_usage_before":{"rss":249823232,"vsize":3326128128,"heapTotal":243245600,"heapUsed":205503344},"ended":1294851885392,"ellapsed":32513,"average":32.513,"throughput":30,"memory_usage_after":{"rss":249839616,"vsize":3326144512,"heapTotal":243261984,"heapUsed":207037624},"rss_diff":16384}] - has no method 'forEach' - at /Users/pedroteixeira/projects/alfred/tools/aggregate_benchmarks.js:47:21 - at /Users/pedroteixeira/projects/alfred/tools/aggregate_benchmarks.js:67:9 - at Array.forEach (native) - at /Users/pedroteixeira/projects/alfred/tools/aggregate_benchmarks.js:66:18 - at [object Object]. (fs.js:86:5) - at [object Object].emit (events.js:28:17) - at afterRead (fs.js:746:12) \ No newline at end of file diff --git a/benchmarks/results/summaries/latest b/benchmarks/results/summaries/latest index 3e6027b..0fff691 120000 --- a/benchmarks/results/summaries/latest +++ b/benchmarks/results/summaries/latest @@ -1 +1 @@ -20110112184747 \ No newline at end of file +20110112225927 \ No newline at end of file diff --git a/dist/bplustree/index.js b/dist/bplustree/index.js index 0189045..4e8ae2e 100644 --- a/dist/bplustree/index.js +++ b/dist/bplustree/index.js @@ -2,7 +2,7 @@ var LeafNode = require('./leaf_node'), InternalNode = require('./internal_node'); var default_options = { - order: 2 // Min 1 + order: 100 // Min 1 }; var BPlusTree = module.exports = function(options) { @@ -52,7 +52,7 @@ BPlusTree.prototype._search = function(key) { // Follow infinity pointer if(!found) current = current.data[len - 1]; } - + return current; }; diff --git a/dist/bplustree/internal_node.js b/dist/bplustree/internal_node.js index 30e4b7f..be96a70 100644 --- a/dist/bplustree/internal_node.js +++ b/dist/bplustree/internal_node.js @@ -9,6 +9,7 @@ var InternalNode = module.exports = function(order) { }; InternalNode.prototype.split = function() { + var time = Date.now(); var m = null; if(this.order % 2){ var m = (this.data.length-1)/2 - 1; diff --git a/docs/web/views/api/key_map.jade b/docs/web/views/api/key_map.jade index 95613b8..5f6af19 100644 --- a/docs/web/views/api/key_map.jade +++ b/docs/web/views/api/key_map.jade @@ -2,6 +2,26 @@ p.note Everything here is experimental, and the API is no exception, so expect t #api h4 Key Map + + ol + li + a(href='#index_manip') Index Manipulation + li + a(href='#store') Store + li + a(href='#streams') Streams + li + a(href='#traversing') Traversing + li + a(href='#filtering') Filtering + li + a(href='#atomic') Atomic + li + a(href='#compactation') Compactation + li + a(href='#events') Events + + a(id='index_manip') h1 Index manipulation h2 key_map.addIndex (name, [options, ] transform_function, callback) p Adds an index to key_map. @@ -32,7 +52,6 @@ p.note Everything here is experimental, and the API is no exception, so expect t | if (err) { throw err; } | // Now you can use the users.age index | }); - | | }) | }); @@ -47,6 +66,7 @@ p.note Everything here is experimental, and the API is no exception, so expect t li name: the name of the index li callback (error): called when there is an error or the index is removed. + a(id='store') h1 Store h2 key_map.put (key, value, callback) p Stores a value later retrievable by key_map.get (key, ...). @@ -72,6 +92,7 @@ p.note Everything here is experimental, and the API is no exception, so expect t ul li callback (err, count): Called when there is an error or counting is done + a(id='streams') h1 Streams h2 key_map.startStream (filter_function, callback) @@ -90,6 +111,7 @@ p.note Everything here is experimental, and the API is no exception, so expect t li stream_handle: A stream handle previously returned by key_map.startStream(). li callback (err, record): Called when there is an error or a record was selected. + a(id='traversing') h1 Traversing h2 key_map.scan (callback) @@ -98,6 +120,7 @@ p.note Everything here is experimental, and the API is no exception, so expect t ul li callback (err, key, value): Called when there is an error or a record is found. + a(id='filtering') h1 Filtering h2 key_map.range(index, start, end, callback) @@ -126,6 +149,7 @@ p.note Everything here is experimental, and the API is no exception, so expect t li value: the value the index will be matched against. li callback (err, key, valye): called when there is an error or there is a match. + a(id='atomic') h1 Atomic h2 key_map.atomic (key, callback, result_callback) @@ -150,11 +174,13 @@ p.note Everything here is experimental, and the API is no exception, so expect t | } | ); + a(id='compactation') h1 Compactation h2 key_map.compact (callback) p Compacts a key map, loosing all past history. + a(id='events') h1 Events p Regsiter ro receive events like this: diff --git a/docs/web/views/examples/index.jade b/docs/web/views/examples/index.jade index 0ad587a..016bd61 100644 --- a/docs/web/views/examples/index.jade +++ b/docs/web/views/examples/index.jade @@ -8,7 +8,7 @@ | var alfred = require('alfred'); | alfred.open('path/to/db/dir', function(err, db) { | if (err) { throw err; } - | db.ensureKeyMapAttached('users', function(err, users_key_map) { + | db.ensure('users', function(err, users_key_map) { | console.log('users key map attached'); | }); | }); diff --git a/lib/alfred/indexes/ordered_index.js b/lib/alfred/indexes/ordered_index.js index 099af14..e3b69f7 100644 --- a/lib/alfred/indexes/ordered_index.js +++ b/lib/alfred/indexes/ordered_index.js @@ -57,8 +57,6 @@ OrderedIndex.prototype.put = function(key, value, pos, length) { } else { delete this.key_to_transformed_map[key]; } - - this.bplustree.dump(); }; OrderedIndex.prototype.match = function(match, callback) { diff --git a/lib/alfred/key_map.js b/lib/alfred/key_map.js index 542d4eb..50767e9 100644 --- a/lib/alfred/key_map.js +++ b/lib/alfred/key_map.js @@ -76,16 +76,14 @@ KeyMap.prototype.put = function(key, value, callback, collection) { } else { for(var index_index in self.indexes) { if (self.indexes.hasOwnProperty(index_index)) { - var index = self.indexes[index_index]; - index.put(key, value, pos, length); + self.indexes[index_index].put(key, value, pos, length); } } if (self.indexes_temp) { for(var index_index in self.indexes_temp) { if (self.indexes.hasOwnProperty(index_index)) { - var index = self.indexes[index_index]; - index.put(key, value, pos, length); + self.indexes[index_index].put(key, value, pos, length); } } } diff --git a/package.json b/package.json index 4dca9e4..09dcd85 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name" : "alfred" , "description" : "In-process key-value store" -, "version" : "0.1.0beta7" +, "version" : "0.1.0beta8" , "homepage" : "http://pgte.github.com/alfred" , "author" : "Pedro Teixeira (http://metaduck.com)" , "contributors" :