UNPKG

foop

Version:

interfaces that describe their intentions.

112 lines (91 loc) 11.3 kB
// fastest object OR typed array hash OR hashmap OR keyval js // // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections // // http://www.mojavelinux.com/articles/javascript_hashes.html // https://leftshift.io/4-javascript-optimisations-you-should-know // http://www.html5gamedevs.com/topic/1188-javascript-hashmap-with-fast-keyvalues-iteration/ // totally wrong // https://davidwalsh.name/object-array-index // // --- // http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array/ // test perf of wrapping methods instead and see gzip size with .call probably better // really good // http://jayconrod.com/posts/52/a-tour-of-v8-object-representation // aight // https://developer.mozilla.org/en-US/docs/Web/API/DOMString/Binary // https://stackoverflow.com/questions/26264956/convert-object-array-to-hash-map-indexed-by-an-attribute-value-of-the-object // https://stackoverflow.com/questions/13328658/are-the-advantages-of-typed-arrays-in-javascript-is-that-they-work-the-same-or-s // https://stackoverflow.com/questions/2002923/javascript-using-integer-as-key-in-associative-array // !!!! // https://developer.mozilla.org/en-US/Add-ons/Code_snippets/StringView // https://github.com/madmurphy/stringview.js // http://bajiecc.cc/questions/1511775/trying-to-get-asm-js-to-return-a-typed-array // http://oocms.org/question/1200278/are-the-advantages-of-typed-arrays-in-javascript-is-that-they-work-the-same-or-s // ----- SUPER LOTS OF CODE --- // https://github.com/WebKit/webkit/tree/master/JSTests/microbenchmarks // general perf // https://github.com/v8/v8/wiki/Design%20Elements // https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/ //-> REMOXING CLASSES http://jsperf.com/prototypal-performance/54 // gives me an idea to add `hasOwnProperty` method on chainable // so when it is called, then I can check the `store` // http://ryanmorr.com/true-hash-maps-in-javascript/ // Google SoundScript: faster OOP for JavaScript // http://2ality.com/2015/02/soundscript.html // https://v8project.blogspot.ca/ // https://github.com/rwaldron/tc39-notes/blob/master/es6/2015-01/JSExperimentalDirections.pdf // https://github.com/RefineryJS/SaneScript // https://www.reddit.com/r/javascript/comments/2uzueu/new_js_experiments_by_the_google_v8_team/ // https://github.com/rwaldron/tc39-notes/blob/master/es6/2015-01/JSExperimentalDirections.pdf // data structures! // interesting methods for chainable - best ones shit // http://www.timdown.co.uk/jshashtable/ // http://www.collectionsjs.com/fast-set // https://thestorefront.github.io/DataCollection.js/ // https://github.com/pluma0/ordered-hashmap // http://www.i-programmer.info/programming/javascript/1441-javascript-data-structures-the-associative-array.html // http://www.objis.com/formationextjs/lib/extjs-4.0.0/docs/api/Ext.util.HashMap.html // https://github.com/d3/d3-collection // https://mobx.js.org/refguide/map.html // holy moley // https://www.scala-js.org/doc/sjs-for-js/es6-to-scala-part2.html // https://ariya.io/2013/07/sequences-using-javascript-array // https://forums.anandtech.com/threads/constructors-controllers-instantiation-and-hashes-in-js-and-angularjs.2371137/ // http://cljs.info/cheatsheet/ // https://github.com/emberjs/ember.js/blob/v2.14.1/packages/ember-metal/lib/map.js#L219 // // kind of interesting, lame version, could be helpful with graphql? // http://www.samtobia.com/?tag=schematypes // https://github.com/balderdashy/waterline-schema/blob/master/lib/waterline-schema/schema.js // looks solid, but rather large // https://takuyaa.github.io/kuromoji.js/jsdoc/TokenInfoDictionary.js.html // v8 // https://chromium.googlesource.com/external/v8/+/master/src/ // // // name for map/set: collection // https://chromium.googlesource.com/external/v8/+/master/src/collection.js // trie // https://johnresig.com/blog/javascript-trie-performance-analysis/ // utils, IZZES // https://github.com/riot/riot/blob/master/riot%2Bcompiler.js#L52 // https://github.com/wycats/handlebars.js/blob/master/lib/handlebars/utils.js // https://github.com/emberjs/ember.js/tree/master/packages/ember-utils/lib // // // meh // https://github.com/krakenjs/kraken-js // https://github.com/wycats/handlebars.js/ // hash fns // http://algs4.cs.princeton.edu/34hash/ // http://robl.co/implement-your-own-hashmap/ // // info? // https://codereview.stackexchange.com/questions/57614/convert-object-array-to-hash-map-using-lodash // off-code-topic, google code interview // https://www.interviewcake.com/concept/java/hash-map // also off topic, java // https://haxe.org/manual/std-Map.html //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaE1hcC5qcyIsInNvdXJjZXMiOlsiSGFzaE1hcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmYXN0ZXN0IG9iamVjdCBPUiB0eXBlZCBhcnJheSBoYXNoIE9SIGhhc2htYXAgT1Iga2V5dmFsIGpzXG4vL1xuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9JbmRleGVkX2NvbGxlY3Rpb25zXG4vL1xuLy8gaHR0cDovL3d3dy5tb2phdmVsaW51eC5jb20vYXJ0aWNsZXMvamF2YXNjcmlwdF9oYXNoZXMuaHRtbFxuLy8gaHR0cHM6Ly9sZWZ0c2hpZnQuaW8vNC1qYXZhc2NyaXB0LW9wdGltaXNhdGlvbnMteW91LXNob3VsZC1rbm93XG4vLyBodHRwOi8vd3d3Lmh0bWw1Z2FtZWRldnMuY29tL3RvcGljLzExODgtamF2YXNjcmlwdC1oYXNobWFwLXdpdGgtZmFzdC1rZXl2YWx1ZXMtaXRlcmF0aW9uL1xuXG4vLyB0b3RhbGx5IHdyb25nXG4vLyBodHRwczovL2Rhdmlkd2Fsc2gubmFtZS9vYmplY3QtYXJyYXktaW5kZXhcbi8vXG4vLyAtLS1cbi8vIGh0dHA6Ly93d3cuc2hhbWFzaXMubmV0LzIwMDkvMDkvZmFzdC1hbGdvcml0aG0tdG8tZmluZC11bmlxdWUtaXRlbXMtaW4tamF2YXNjcmlwdC1hcnJheS9cblxuLy8gdGVzdCBwZXJmIG9mIHdyYXBwaW5nIG1ldGhvZHMgaW5zdGVhZCBhbmQgc2VlIGd6aXAgc2l6ZSB3aXRoIC5jYWxsIHByb2JhYmx5IGJldHRlclxuXG4vLyByZWFsbHkgZ29vZFxuLy8gaHR0cDovL2pheWNvbnJvZC5jb20vcG9zdHMvNTIvYS10b3VyLW9mLXY4LW9iamVjdC1yZXByZXNlbnRhdGlvblxuXG4vLyBhaWdodFxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVN0cmluZy9CaW5hcnlcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2MjY0OTU2L2NvbnZlcnQtb2JqZWN0LWFycmF5LXRvLWhhc2gtbWFwLWluZGV4ZWQtYnktYW4tYXR0cmlidXRlLXZhbHVlLW9mLXRoZS1vYmplY3Rcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEzMzI4NjU4L2FyZS10aGUtYWR2YW50YWdlcy1vZi10eXBlZC1hcnJheXMtaW4tamF2YXNjcmlwdC1pcy10aGF0LXRoZXktd29yay10aGUtc2FtZS1vci1zXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMDAyOTIzL2phdmFzY3JpcHQtdXNpbmctaW50ZWdlci1hcy1rZXktaW4tYXNzb2NpYXRpdmUtYXJyYXlcblxuLy8gISEhIVxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvQWRkLW9ucy9Db2RlX3NuaXBwZXRzL1N0cmluZ1ZpZXdcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYWRtdXJwaHkvc3RyaW5ndmlldy5qc1xuXG4vLyBodHRwOi8vYmFqaWVjYy5jYy9xdWVzdGlvbnMvMTUxMTc3NS90cnlpbmctdG8tZ2V0LWFzbS1qcy10by1yZXR1cm4tYS10eXBlZC1hcnJheVxuLy8gaHR0cDovL29vY21zLm9yZy9xdWVzdGlvbi8xMjAwMjc4L2FyZS10aGUtYWR2YW50YWdlcy1vZi10eXBlZC1hcnJheXMtaW4tamF2YXNjcmlwdC1pcy10aGF0LXRoZXktd29yay10aGUtc2FtZS1vci1zXG5cbi8vIC0tLS0tIFNVUEVSIExPVFMgT0YgQ09ERSAtLS1cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvd2Via2l0L3RyZWUvbWFzdGVyL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzXG5cbi8vIGdlbmVyYWwgcGVyZlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3Y4L3Y4L3dpa2kvRGVzaWduJTIwRWxlbWVudHNcbi8vIGh0dHBzOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMTIvMTEvd3JpdGluZy1mYXN0LW1lbW9yeS1lZmZpY2llbnQtamF2YXNjcmlwdC9cbi8vLT4gUkVNT1hJTkcgQ0xBU1NFUyBodHRwOi8vanNwZXJmLmNvbS9wcm90b3R5cGFsLXBlcmZvcm1hbmNlLzU0XG5cbi8vIGdpdmVzIG1lIGFuIGlkZWEgdG8gYWRkIGBoYXNPd25Qcm9wZXJ0eWAgbWV0aG9kIG9uIGNoYWluYWJsZVxuLy8gc28gd2hlbiBpdCBpcyBjYWxsZWQsIHRoZW4gSSBjYW4gY2hlY2sgdGhlIGBzdG9yZWBcbi8vIGh0dHA6Ly9yeWFubW9yci5jb20vdHJ1ZS1oYXNoLW1hcHMtaW4tamF2YXNjcmlwdC9cblxuLy8gR29vZ2xlIFNvdW5kU2NyaXB0OiBmYXN0ZXIgT09QIGZvciBKYXZhU2NyaXB0XG4vLyBodHRwOi8vMmFsaXR5LmNvbS8yMDE1LzAyL3NvdW5kc2NyaXB0Lmh0bWxcbi8vIGh0dHBzOi8vdjhwcm9qZWN0LmJsb2dzcG90LmNhL1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3J3YWxkcm9uL3RjMzktbm90ZXMvYmxvYi9tYXN0ZXIvZXM2LzIwMTUtMDEvSlNFeHBlcmltZW50YWxEaXJlY3Rpb25zLnBkZlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1JlZmluZXJ5SlMvU2FuZVNjcmlwdFxuLy8gaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL2phdmFzY3JpcHQvY29tbWVudHMvMnV6dWV1L25ld19qc19leHBlcmltZW50c19ieV90aGVfZ29vZ2xlX3Y4X3RlYW0vXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcndhbGRyb24vdGMzOS1ub3Rlcy9ibG9iL21hc3Rlci9lczYvMjAxNS0wMS9KU0V4cGVyaW1lbnRhbERpcmVjdGlvbnMucGRmXG5cbi8vIGRhdGEgc3RydWN0dXJlcyFcbi8vIGludGVyZXN0aW5nIG1ldGhvZHMgZm9yIGNoYWluYWJsZSAtIGJlc3Qgb25lcyBzaGl0XG4vLyBodHRwOi8vd3d3LnRpbWRvd24uY28udWsvanNoYXNodGFibGUvXG4vLyBodHRwOi8vd3d3LmNvbGxlY3Rpb25zanMuY29tL2Zhc3Qtc2V0XG4vLyBodHRwczovL3RoZXN0b3JlZnJvbnQuZ2l0aHViLmlvL0RhdGFDb2xsZWN0aW9uLmpzL1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3BsdW1hMC9vcmRlcmVkLWhhc2htYXBcbi8vIGh0dHA6Ly93d3cuaS1wcm9ncmFtbWVyLmluZm8vcHJvZ3JhbW1pbmcvamF2YXNjcmlwdC8xNDQxLWphdmFzY3JpcHQtZGF0YS1zdHJ1Y3R1cmVzLXRoZS1hc3NvY2lhdGl2ZS1hcnJheS5odG1sXG4vLyBodHRwOi8vd3d3Lm9iamlzLmNvbS9mb3JtYXRpb25leHRqcy9saWIvZXh0anMtNC4wLjAvZG9jcy9hcGkvRXh0LnV0aWwuSGFzaE1hcC5odG1sXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtY29sbGVjdGlvblxuLy8gaHR0cHM6Ly9tb2J4LmpzLm9yZy9yZWZndWlkZS9tYXAuaHRtbFxuXG4vLyBob2x5IG1vbGV5XG4vLyBodHRwczovL3d3dy5zY2FsYS1qcy5vcmcvZG9jL3Nqcy1mb3ItanMvZXM2LXRvLXNjYWxhLXBhcnQyLmh0bWxcblxuLy8gaHR0cHM6Ly9hcml5YS5pby8yMDEzLzA3L3NlcXVlbmNlcy11c2luZy1qYXZhc2NyaXB0LWFycmF5XG4vLyBodHRwczovL2ZvcnVtcy5hbmFuZHRlY2guY29tL3RocmVhZHMvY29uc3RydWN0b3JzLWNvbnRyb2xsZXJzLWluc3RhbnRpYXRpb24tYW5kLWhhc2hlcy1pbi1qcy1hbmQtYW5ndWxhcmpzLjIzNzExMzcvXG4vLyBodHRwOi8vY2xqcy5pbmZvL2NoZWF0c2hlZXQvXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZW1iZXJqcy9lbWJlci5qcy9ibG9iL3YyLjE0LjEvcGFja2FnZXMvZW1iZXItbWV0YWwvbGliL21hcC5qcyNMMjE5XG4vL1xuLy8ga2luZCBvZiBpbnRlcmVzdGluZywgbGFtZSB2ZXJzaW9uLCBjb3VsZCBiZSBoZWxwZnVsIHdpdGggZ3JhcGhxbD9cbi8vIGh0dHA6Ly93d3cuc2FtdG9iaWEuY29tLz90YWc9c2NoZW1hdHlwZXNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWxkZXJkYXNoeS93YXRlcmxpbmUtc2NoZW1hL2Jsb2IvbWFzdGVyL2xpYi93YXRlcmxpbmUtc2NoZW1hL3NjaGVtYS5qc1xuXG4vLyBsb29rcyBzb2xpZCwgYnV0IHJhdGhlciBsYXJnZVxuLy8gaHR0cHM6Ly90YWt1eWFhLmdpdGh1Yi5pby9rdXJvbW9qaS5qcy9qc2RvYy9Ub2tlbkluZm9EaWN0aW9uYXJ5LmpzLmh0bWxcblxuLy8gdjhcbi8vIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC92OC8rL21hc3Rlci9zcmMvXG4vL1xuLy9cbi8vIG5hbWUgZm9yIG1hcC9zZXQ6IGNvbGxlY3Rpb25cbi8vIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9leHRlcm5hbC92OC8rL21hc3Rlci9zcmMvY29sbGVjdGlvbi5qc1xuXG4vLyB0cmllXG4vLyBodHRwczovL2pvaG5yZXNpZy5jb20vYmxvZy9qYXZhc2NyaXB0LXRyaWUtcGVyZm9ybWFuY2UtYW5hbHlzaXMvXG5cbi8vIHV0aWxzLCBJWlpFU1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3Jpb3QvcmlvdC9ibG9iL21hc3Rlci9yaW90JTJCY29tcGlsZXIuanMjTDUyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd3ljYXRzL2hhbmRsZWJhcnMuanMvYmxvYi9tYXN0ZXIvbGliL2hhbmRsZWJhcnMvdXRpbHMuanNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9lbWJlcmpzL2VtYmVyLmpzL3RyZWUvbWFzdGVyL3BhY2thZ2VzL2VtYmVyLXV0aWxzL2xpYlxuLy9cbi8vXG4vLyBtZWhcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9rcmFrZW5qcy9rcmFrZW4tanNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9cblxuLy8gaGFzaCBmbnNcbi8vIGh0dHA6Ly9hbGdzNC5jcy5wcmluY2V0b24uZWR1LzM0aGFzaC9cbi8vIGh0dHA6Ly9yb2JsLmNvL2ltcGxlbWVudC15b3VyLW93bi1oYXNobWFwL1xuLy9cblxuLy8gaW5mbz9cbi8vIGh0dHBzOi8vY29kZXJldmlldy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNTc2MTQvY29udmVydC1vYmplY3QtYXJyYXktdG8taGFzaC1tYXAtdXNpbmctbG9kYXNoXG5cbi8vIG9mZi1jb2RlLXRvcGljLCBnb29nbGUgY29kZSBpbnRlcnZpZXdcbi8vIGh0dHBzOi8vd3d3LmludGVydmlld2Nha2UuY29tL2NvbmNlcHQvamF2YS9oYXNoLW1hcFxuLy8gYWxzbyBvZmYgdG9waWMsIGphdmFcbi8vIGh0dHBzOi8vaGF4ZS5vcmcvbWFudWFsL3N0ZC1NYXAuaHRtbFxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==