# HG changeset patch # User Drew Perttula # Date 1527577237 0 # Node ID 72380e12d86c88429cb1c87faf2f8d54a3240672 # Parent 887eb43b389a6838ecaddac4a406193b94aa8db0 performance: add @cachedUriValues Ignore-this: f3a707bc25acc028dedd2f115a5d17e5 diff -r 887eb43b389a -r 72380e12d86c light9/web/graph.coffee --- a/light9/web/graph.coffee Mon May 28 00:25:46 2018 +0000 +++ b/light9/web/graph.coffee Tue May 29 07:00:37 2018 +0000 @@ -153,7 +153,8 @@ # if we had a Store already, this lets N3.Store free all its indices/etc @graph = N3.Store() @_addPrefixes(@prefixes) - @cachedFloatValues = new Map() + @cachedFloatValues = new Map() # s + '|' + p -> number + @cachedUriValues = new Map() # s + '|' + p -> Uri _clearGraphOnNewConnection: -> # must not send a patch to the server! log('graph: clearGraphOnNewConnection') @@ -228,6 +229,7 @@ # # This is the only method that writes to @graph! @cachedFloatValues.clear() + @cachedUriValues.clear() for quad in patch.delQuads #log("remove #{JSON.stringify(quad)}") did = @graph.removeQuad(quad) @@ -291,7 +293,13 @@ @_singleValue(s, p).value uriValue: (s, p) -> - @_singleValue(s, p) + key = s.value + '|' + p.value + hit = @cachedUriValues.get(key) + return hit if hit != undefined + + ret = @_singleValue(s, p) + @cachedUriValues.set(key, ret) + return ret labelOrTail: (uri) -> try