From b8695263ee05a29dbdeabdba244432d9b6397a3b Mon Sep 17 00:00:00 2001 From: Talasan Nicholson Date: Wed, 30 May 2018 11:07:10 -0500 Subject: [PATCH 1/4] ELO snippet formatting + performance Not assigning `arr.length` to a variable in a for loop means that the read is done on every iteration. --- snippets/elo.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/snippets/elo.md b/snippets/elo.md index 622cdc981..6e36ad874 100644 --- a/snippets/elo.md +++ b/snippets/elo.md @@ -15,17 +15,20 @@ const elo = ([...ratings], kFactor = 32, selfRating) => { const expectedScore = (self, opponent) => 1 / (1 + 10 ** ((opponent - self) / 400)); const newRating = (rating, i) => (selfRating || rating) + kFactor * (i - expectedScore(i ? a : b, i ? b : a)); + if (ratings.length === 2) { return [newRating(a, 1), newRating(b, 0)]; - } else { - for (let i = 0; i < ratings.length; i++) { - let j = i; - while (j < ratings.length - 1) { - [ratings[i], ratings[j + 1]] = elo([ratings[i], ratings[j + 1]], kFactor); - j++; - } + } + + for (let i = 0, l = ratings.length; i < l; i++) { + let j = i; + + while (j < l - 1) { + [ratings[i], ratings[j + 1]] = elo([ratings[i], ratings[j + 1]], kFactor); + j++; } } + return ratings; }; ``` From e4eebca5632227d7912c9fb89846aa3a71503521 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 23 Jun 2018 10:17:42 +0300 Subject: [PATCH 2/4] Update elo.md --- snippets/elo.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/snippets/elo.md b/snippets/elo.md index 6e36ad874..ad011907d 100644 --- a/snippets/elo.md +++ b/snippets/elo.md @@ -15,17 +15,14 @@ const elo = ([...ratings], kFactor = 32, selfRating) => { const expectedScore = (self, opponent) => 1 / (1 + 10 ** ((opponent - self) / 400)); const newRating = (rating, i) => (selfRating || rating) + kFactor * (i - expectedScore(i ? a : b, i ? b : a)); - if (ratings.length === 2) { return [newRating(a, 1), newRating(b, 0)]; - } - - for (let i = 0, l = ratings.length; i < l; i++) { + } + for (let i = 0, len = ratings.length; i < len; i++) { let j = i; - - while (j < l - 1) { - [ratings[i], ratings[j + 1]] = elo([ratings[i], ratings[j + 1]], kFactor); + while (j < len - 1) { j++; + [ratings[i], ratings[j + 1]] = elo([ratings[i], ratings[j + 1]], kFactor); } } From 5044fc1227315a662637c000c55789489e6d1e0c Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 23 Jun 2018 10:19:59 +0300 Subject: [PATCH 3/4] Update elo.md --- snippets/elo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/elo.md b/snippets/elo.md index ad011907d..6cf448595 100644 --- a/snippets/elo.md +++ b/snippets/elo.md @@ -22,7 +22,7 @@ const elo = ([...ratings], kFactor = 32, selfRating) => { let j = i; while (j < len - 1) { j++; - [ratings[i], ratings[j + 1]] = elo([ratings[i], ratings[j + 1]], kFactor); + [ratings[i], ratings[j]] = elo([ratings[i], ratings[j]], kFactor); } } From cfda1b7841d08f32c181ff7d94b633b7b4af54a7 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Sat, 23 Jun 2018 10:20:37 +0300 Subject: [PATCH 4/4] Update elo.md --- snippets/elo.md | 1 - 1 file changed, 1 deletion(-) diff --git a/snippets/elo.md b/snippets/elo.md index 6cf448595..1f4207996 100644 --- a/snippets/elo.md +++ b/snippets/elo.md @@ -25,7 +25,6 @@ const elo = ([...ratings], kFactor = 32, selfRating) => { [ratings[i], ratings[j]] = elo([ratings[i], ratings[j]], kFactor); } } - return ratings; }; ```