{"id":13344174,"url":"https://github.com/tinyield/ts-sequences-benchmarks","last_synced_at":"2026-01-12T08:27:21.303Z","repository":{"id":42958937,"uuid":"229983808","full_name":"tinyield/ts-sequences-benchmarks","owner":"tinyield","description":"This project provides a way to benchmark various Sequence operations in Typescript and Javascript, such as find, every and zip.","archived":false,"fork":false,"pushed_at":"2022-12-06T12:58:13.000Z","size":2403,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-07-30T21:09:15.119Z","etag":null,"topics":["benchmark","every","javascript","lazyjs","lodash","nodejs","npm","operations","sequences","sequences-comparison","tinyield","typescript","underscore","zip"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tinyield.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-24T17:58:17.000Z","updated_at":"2021-05-15T16:52:33.000Z","dependencies_parsed_at":"2023-01-24T01:45:52.899Z","dependency_job_id":null,"html_url":"https://github.com/tinyield/ts-sequences-benchmarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyield%2Fts-sequences-benchmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyield%2Fts-sequences-benchmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyield%2Fts-sequences-benchmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyield%2Fts-sequences-benchmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinyield","download_url":"https://codeload.github.com/tinyield/ts-sequences-benchmarks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221279930,"owners_count":16790555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmark","every","javascript","lazyjs","lodash","nodejs","npm","operations","sequences","sequences-comparison","tinyield","typescript","underscore","zip"],"created_at":"2024-07-29T19:32:28.201Z","updated_at":"2026-01-12T08:27:21.242Z","avatar_url":"https://github.com/tinyield.png","language":"TypeScript","readme":"# Glossary\n1. [Overview](#overview)\n2. [Usage](#usage)\n3. [Benchmarks Overview](#benchmarks-overview)\n    1. [All Match](#all-match)\n    2. [Every](#every)\n    3. [Find](#find)\n    4. [First](#find-first)\n    5. [Zip](#zip)\n    6. [Distinct Top Artist and Top Track by Country Benchmark](#distinct-top-artist-and-top-track-by-country-benchmark)\n    7. [Artists who are in a Country's top ten who also have Tracks in the same Country's top ten Benchmark](#artists-who-are-in-a-countrys-top-ten-who-also-have-tracks-in-the-same-countrys-top-ten-benchmark)\n    8. [Flatmap and Reduce](#flatmap-and-reduce)\n    9. [Temperature Transitions](#temperature-transitions)\n4. [Performance Comparison](#performance-comparison)\n6. [More](#more)\n\n# Overview\nIn this document you'll find information on how to use the project \nin terms of how to run it in your local machine, a brief description\nof each benchmark's pipeline.\n\n# Usage\nTo run these benchmarks on you local machine just run:\n```\nnpm run build\n```\nAnd then:\n```\nnode ./build/lib/index.js\n```\n\nFor more information run:\n```ignorelang\nnode ./build/lib/index.js -h\n```\n# Benchmarks Overview\n### All Match - `allMatch(sequence, predicate)`\nBenchmarks the `allMatch()` operation in the different sequence types.\n\nCollection Sizes: [1000, 100 000]\n\nPipeline:\n```ignorelang\nsequenceOfEvenNumbers -\u003e allMatch(isEven)\n```\n### Every - `every(sequence1, sequence2, predicate)`\nEvery is an operation that, based on a user defined predicate, tests if all the\nelements of a sequence match between corresponding positions. So for instance, if we have:\n```javascript\nconst seq1 = [\"505\", \"Amsterdam\", \"Mural\"];\nconst seq2 = [\"505\", \"Amsterdam\", \"Mural\"];\nconst seq3 = [\"Mural\", \"Amsterdam\", \"505\"];\nconst pred = (s1, s2) =\u003e s1.equals(s2);\n```\nThen:\n```javascript\nevery(seq1, seq2, pred); // returns true\nevery(seq1, seq3, pred); // returns false\n```\nFor `every` to return true, every element of each sequence must match in the same index.\nThe `every` feature can be achieved through a pipeline of `zip`-`allMatch` operations,\nsuch as:\n```javascript\nseq1.zip(seq2, pred).allMatch(isTrue);\n```\n\nBenchmarked for: [Class, Number, String]  \nCollection Sizes: [1000, 100 000]\n\nPipeline:\n```ignorelang\nsourceSequence + copyOfSourceSequence -\u003e zip(equals) -\u003e allMatch(isTrue)\n```\n### Find - `find(sequence1, sequence2, predicate)`\nThe `find` between two sequences is an operation that, based on a user defined\npredicate, finds two elements that match, returning one of them in the process.\nSo if we have:\n```javascript\nconst seq1 = [\"505\", \"Amsterdam\", \"Mural\"];\nconst seq2 = [\"400\", \"Amsterdam\", \"Stricken\"];\nconst seq3 = [\"Amsterdam\", \"505\", \"Stricken\"];\nconst predicate = (s1, s2) =\u003e s1.equals(s2);\n```\nThen:\n```java\nfind(seq1, seq2, predicate); // returns \"Amsterdam\"\nfind(seq1, seq3, predicate); // returns null\nfind(seq2, seq3, predicate); // returns \"Stricken\"\n```\nFor `find` to return an element, two elements of each sequence must match in the\nsame index. Here's what an implementation of `find` would look like with the support \nof a `zip`:\n```javascript\nzip(seq1, seq2, (t1, t2) =\u003e predicate(t1, t2) ? t1 : null)\n    .filter(isNotNull)\n    .first();\n}\n```\n\nBenchmarked for: [Class, Number, String]  \nCollection Sizes: [1000, 100 000]  \nThis pipeline has two ways of determining which element will be the matching element:\n1. For String sequences, the matching element will be on a fixed index, using the \nfollowing criteria:\n    * For collections with more than 100 elements, the matching index will correspond\n     to COLLECTION_SIZE / 100.  \n      (e.g: for a COLLECTION_SIZE of 100K the pipeline will match with the 1000th element)\n      \n    * Otherwise, the matching index will correspond to COLLECTION_SIZE / 10.  \n    (e.g: for a COLLECTION_SIZE of 100 elements the pipeline will match with the 10th element)\n2. For all sequences (including String), the match index increments with each iteration\nto make sure there are matches in every index of the sequence.  \n(e.g: On the 1st iteration the match index will be 0, on the 2nd it will be 1, etc... )\n\nPipeline:\n```javascript\nsourceSequence1 + sourceSequence2 -\u003e \n-\u003e zip((e1, e2) =\u003e predicate(e1, e2) ? t1 : null) -\u003e \n-\u003e filter(isNotNull) -\u003e\n-\u003e first() \n```\n### First - `first(sequence, predicate)`\nBenchmarks the usage of the `findFirst()` operator. This benchmark was run \nwith three types of Sequences:\n1. One where the match would be found in the first element.\n1. One where the match would be found in the middle.\n1. One where the match would be found in the last element.\n\nCollection Sizes: [1000, 100 000]\n\nPipeline:\n```ignorelang\nsequenceOfAllButOneEvenNumbers -\u003e filter(isOdd) -\u003e findFirst()\n```\n### Zip Primes with Values - `zip(primes, values)`\nBenchmarks _zipping_ a sequence of prime Numbers with instances of the class Value.\n\nCollection Sizes: [1000, 100 000]\n\nPipeline:\n```ignorelang\n(sequenceOfNumbers -\u003e filter(isPrime)) + sequenceOfValues -\u003e zip(Pair.with) -\u003e forEach(blackhole)\n```\n### Distinct Top Artist and Top Track by Country Benchmark - `zip(artists, tracks)`\nBenchmarks creating two different sequences, one consisting of the top 50 Artists \n(provided by [Last.fm](https://www.last.fm/api/)) of each non english speaking \ncountry (provided by [REST Countries](https://restcountries.eu/)) and the other\nthe exact same thing but for the top 50 Tracks.\nThen _zipping_ both sequences into a Trio of Country, First Artist and First Track and\nretrieving the distinct elements by Artist.\n\nPipelines:\n* Sequence of Artists:\n```ignorelang\nsequenceOfCountries -\u003e filter(isNonEnglishSpeaking) -\u003e filter(hasArtists) -\u003e map(Pair.of(country, artists));\n```\n\n* Sequence of Tracks:\n```ignorelang\nsequenceOfCountries -\u003e filter(isNonEnglishSpeaking) -\u003e filter(hasTracks) -\u003e map(Pair.of(country, tracks));\n```\n* Pipeline\n```ignorelang\nsequenceOfArtists + sequenceOfTracks -\u003e \n-\u003e zip(Trio.of(country, topArtist, topTrack)) -\u003e \n-\u003e distinctBy(artist) -\u003e \n-\u003e forEach(blackhole)\n```\n### Artists who are in a Country's top ten who also have Tracks in the same Country's top ten Benchmark - `zip(artists, tracks)`\nBenchmarks creating two different sequences, one consisting of the top 50 Artists \n(provided by [Last.fm](https://www.last.fm/api/)) of each non english speaking \ncountry (provided by [REST Countries](https://restcountries.eu/)) and the other\nthe exact same thing but for the top 50 Tracks.\nThen, for each Country, we take the top ten Artists and top ten Track artist's \nnames and zip them into a Trio. After, the top ten artists are filtered by their \npresence in the top ten Track artist's name, returning a Pair with the Country \nand the resulting Sequence.\n\nPipelines:\n* Sequence of Artists:\n```ignorelang\nsequenceOfCountries -\u003e filter(isNonEnglishSpeaking) -\u003e filter(hasArtists) -\u003e map(Pair.of(country, artists));\n```\n\n* Sequence of Tracks:\n```ignorelang\nsequenceOfCountries -\u003e filter(isNonEnglishSpeaking) -\u003e filter(hasTracks) -\u003e map(Pair.of(country, tracks));\n```\n* Pipeline\n```ignorelang\nsequenceOfArtists + sequenceOfTracks -\u003e \n-\u003e zip(Trio.of(country, artists, tracks)) -\u003e \n-\u003e map(Pair.of(country, artists)) -\u003e \n-\u003e forEach(blackhole)\n```\n\n### Flatmap and Reduce - `flatmapAndReduce(nestedSequence)`\nBenchmarks the usage of the flatmap operation terminating with a reduce operation. In this case in\nparticular we use a nested sequence of numbers flatmap it to a regular sequence of numbers and then sum\nthem.\n\nPipeline:\n```ignorelang\nnestedSequence -\u003e flatmap() -\u003e reduce()\n```\n\n### Temperature Transitions - `collapse(sequence)`\nThis benchmarks the usage of a user defined operation, for this benchmark we used real data gathered from\nthe [World Weather Online API](https://developer.worldweatheronline.com/api/). The data is in .csv which\nmeans it needs to be prepared, in order to do so we have two user defined operations \"oddLines\" which\nfilters any line in an odd index, and \"collapse\" that filters equal elements in sequence to each other\n(e.g. input: 3, 5, 5, 3, 5 -\u003e output: 3,5,3,5 ) \n\nPipeline:\n```ignorelang\nlineSequence -\u003e \n-\u003e filter(\"#\") -\u003e\n-\u003e skip(No Data Lines) -\u003e \n-\u003e oddLines -\u003e \n-\u003e map(toTemperature) -\u003e \n-\u003e collapse() -\u003e \n-\u003e count()\n```\n\n# Performance Comparison\nThe results presented here were based on the results attained from Github Actions,\nthey are presented in relation to IxJs's IterableX performance, due to it being the closest\nto Javascript's out of the box lazy sequence which is the Iterable. For the actual results\ncheck the [Github Actions Section](https://github.com/tinyield/ts-sequences-benchmarks/actions).\n\n**Notes:**\n* IxJs's IterableX performance is equivalent to 1, all results are presented in relation to it\n* For Pipelines where collection sizes vary, only 1k results and 100k results will be\ndisplayed, separated in a pipe format, like so:\n  * 1K results\u0026nbsp;|\u0026nbsp;100K results\n\n### Benchmarks with one Sequence\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eBenchmark\u003c/th\u003e\n            \u003cth\u003eTime\u0026nbsp;Complexity\u003c/th\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003cth\u003eUnderscore\u003c/th\u003e\n            \u003cth\u003eTinyield\u003c/th\u003e\n            \u003cth\u003eSequency\u003c/th\u003e\n            \u003cth\u003eLodash\u003c/th\u003e\n            \u003cth\u003eLazy.js\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n         \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eAll\u0026nbsp;match\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e6.51\u0026nbsp;|\u0026nbsp;3.57\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e4.11\u0026nbsp;|\u0026nbsp;2.70\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e2.42\u0026nbsp;|\u0026nbsp;2.23\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e6.23\u0026nbsp;|\u0026nbsp;3.60\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e6.96\u0026nbsp;|\u0026nbsp;3.57\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eFirst\u0026nbsp;in\u0026nbsp;Beginning\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eConstant\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e0.41\u0026nbsp;|\u0026nbsp;1.51\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e1.71\u0026nbsp;|\u0026nbsp;1.98\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e1.43\u0026nbsp;|\u0026nbsp;1.98\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e0.31\u0026nbsp;|\u0026nbsp;1.36\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e1.54\u0026nbsp;|\u0026nbsp;1.96\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eFirst\u0026nbsp;in\u0026nbsp;Middle\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e2.19\u0026nbsp;|\u0026nbsp;2.40\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e4.41\u0026nbsp;|\u0026nbsp;2.43\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e2.98\u0026nbsp;|\u0026nbsp;2.25\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e1.51\u0026nbsp;|\u0026nbsp;2.11\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e6.95\u0026nbsp;|\u0026nbsp;3.05\u003c/td\u003e   \n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eFirst\u0026nbsp;in\u0026nbsp;End\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e3.39\u0026nbsp;|\u0026nbsp;2.93\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e4.42\u0026nbsp;|\u0026nbsp;2.72\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e2.55\u0026nbsp;|\u0026nbsp;2.27\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e2.54\u0026nbsp;|\u0026nbsp;2.60\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e8.35\u0026nbsp;|\u0026nbsp;3.40\u003c/td\u003e  \n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eFlatmap\u0026nbsp;and\u0026nbsp;Reduce\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e1.52\u0026nbsp;|\u0026nbsp;0.66\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e2.47\u0026nbsp;|\u0026nbsp;3.62\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e2.98\u0026nbsp;|\u0026nbsp;2.92\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e2.22\u0026nbsp;|\u0026nbsp;0.60\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e5.03\u0026nbsp;|\u0026nbsp;6.17\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eTemperature\u0026nbsp;Transitions\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e5.24\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e5.74\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e2.61\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e4.48\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e5.86\u003c/td\u003e\n            \u003ctd class=\"IxJs\"\u003e1.00\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Benchmarks with two Sequences\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eBenchmark\u003c/th\u003e\n            \u003cth\u003eTime\u0026nbsp;Complexity\u003c/th\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003cth\u003eUnderscore\u003c/th\u003e\n            \u003cth\u003eTinyield\u003c/th\u003e\n            \u003cth\u003eSequency\u003c/th\u003e\n            \u003cth\u003eLodash\u003c/th\u003e\n            \u003cth\u003eLazy.js\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eEvery\u0026nbsp;String\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e1.60\u0026nbsp;|\u0026nbsp;0.49\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e4.47\u0026nbsp;|\u0026nbsp;2.05\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e3.17\u0026nbsp;|\u0026nbsp;1.83\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e3.17\u0026nbsp;|\u0026nbsp;0.70\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e3.44\u0026nbsp;|\u0026nbsp;2.09\u003c/td\u003e        \n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eEvery\u0026nbsp;Number\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e1.48\u0026nbsp;|\u0026nbsp;0.40\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e4.40\u0026nbsp;|\u0026nbsp;3.24\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e3.21\u0026nbsp;|\u0026nbsp;2.64\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e3.53\u0026nbsp;|\u0026nbsp;0.67\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e3.87\u0026nbsp;|\u0026nbsp;3.17\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eEvery\u0026nbsp;Class\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e1.44\u0026nbsp;|\u0026nbsp;0.41\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e4.15\u0026nbsp;|\u0026nbsp;3.07\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e3.25\u0026nbsp;|\u0026nbsp;2.55\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e3.47\u0026nbsp;|\u0026nbsp;0.69\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e3.65\u0026nbsp;|\u0026nbsp;3.05\u003c/td\u003e    \n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eZip\u0026nbsp;Primes\u0026nbsp;with\u0026nbsp;Values\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e0.64\u0026nbsp;|\u0026nbsp;0.27\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e3.27\u0026nbsp;|\u0026nbsp;1.89\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e2.68\u0026nbsp;|\u0026nbsp;1.75\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e0.95\u0026nbsp;|\u0026nbsp;0.29\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e3.00\u0026nbsp;|\u0026nbsp;2.06\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eZip\u0026nbsp;Top\u0026nbsp;Artist\u0026nbsp;\u0026\u0026nbsp;Track(1)\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e0.69\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e1.59\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e2.13\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e0.42\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e2.13\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd class=\"Benchmark\"\u003eZip\u0026nbsp;Artists\u0026nbsp;in\u0026nbsp;Top10(2)\u003c/td\u003e\n            \u003ctd class=\"TimeComplexity\"\u003eLinear\u003c/td\u003e\n            \u003ccomment\u003e\u003c/comment\u003e\n            \u003ctd class=\"Underscore\"\u003e1.12\u003c/td\u003e\n            \u003ctd class=\"Tinyield\"\u003e1.90\u003c/td\u003e\n            \u003ctd class=\"Sequency\"\u003e1.55\u003c/td\u003e\n            \u003ctd class=\"Lodash\"\u003e0.67\u003c/td\u003e\n            \u003ctd class=\"Lazy.js\"\u003e2.70\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n(1) Corresponds to \"Distinct Top Artist and Top Track by Country Benchmark\"  \u003cbr\u003e\n(2) Corresponds to Artists who are in a Country's top ten who also have Tracks\" \nin the same Country's top ten Benchmark\n\n# More\nIf you're interested in a similar comparison but in the Java world head over to our other \n[Benchmarks Github Repository](https://github.com/tinyield/sequences-benchmarks). You can\nalso check a more in depth analysis in an [Article we wrote over at \nDZONE](https://dzone.com/articles/bridge-the-gap-of-zip-operation).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinyield%2Fts-sequences-benchmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinyield%2Fts-sequences-benchmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinyield%2Fts-sequences-benchmarks/lists"}