From aa42053c6eb8be85252f50b7d5ce9f239886d4a8 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Sun, 22 Feb 2015 23:19:12 -0800 Subject: [PATCH] Optimize perf. of crafting algo. (55% savings) --- src/scripts/models/mod_version.coffee | 2 +- src/scripts/models/recipe.coffee | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/scripts/models/mod_version.coffee b/src/scripts/models/mod_version.coffee index 2e575824c..e4acb95eb 100644 --- a/src/scripts/models/mod_version.coffee +++ b/src/scripts/models/mod_version.coffee @@ -134,7 +134,7 @@ module.exports = class ModVersion extends BaseModel findRecipes: (itemSlug, result=[], options={})-> options.onlyPrimary ?= false - for k, recipe of @_recipes + for recipe in _.values @_recipes if options.onlyPrimary if recipe.itemSlug.matches itemSlug result.push recipe diff --git a/src/scripts/models/recipe.coffee b/src/scripts/models/recipe.coffee index 919c1f279..b46a29b6b 100644 --- a/src/scripts/models/recipe.coffee +++ b/src/scripts/models/recipe.coffee @@ -100,11 +100,14 @@ module.exports = class Recipe extends BaseModel return 0 produces: (itemSlug)-> - for stack in @output - if stack.itemSlug.matches itemSlug - return true + if not @_produces? + @_produces = {} - return false + for stack in @output + @_produces[stack.itemSlug.qualified] = true + @_produces[stack.itemSlug.item] = true + + return @_produces[itemSlug.qualified] requires: (itemSlug)-> for stack in @input