{"action":"opened","issue":{"url":"https://api.github.com/repos/blaze/blaze/issues/1245","labels_url":"https://api.github.com/repos/blaze/blaze/issues/1245/labels{/name}","comments_url":"https://api.github.com/repos/blaze/blaze/issues/1245/comments","events_url":"https://api.github.com/repos/blaze/blaze/issues/1245/events","html_url":"https://github.com/blaze/blaze/issues/1245","id":106234708,"number":1245,"title":"memoize dshape ","user":{"login":"llllllllll","id":3064397,"avatar_url":"https://avatars.githubusercontent.com/u/3064397?v=3","gravatar_id":"","url":"https://api.github.com/users/llllllllll","html_url":"https://github.com/llllllllll","followers_url":"https://api.github.com/users/llllllllll/followers","following_url":"https://api.github.com/users/llllllllll/following{/other_user}","gists_url":"https://api.github.com/users/llllllllll/gists{/gist_id}","starred_url":"https://api.github.com/users/llllllllll/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/llllllllll/subscriptions","organizations_url":"https://api.github.com/users/llllllllll/orgs","repos_url":"https://api.github.com/users/llllllllll/repos","events_url":"https://api.github.com/users/llllllllll/events{/privacy}","received_events_url":"https://api.github.com/users/llllllllll/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-09-13T19:17:27Z","updated_at":"2015-09-13T19:17:27Z","closed_at":null,"body":"I had a pretty large expression which I wanted to construct a predicate to select from.\r\nIt took 0.5 seconds to just construct the actual expression (without any computation), and running under cProfile showed that the time was dominated by access of the dshape/schema attributes. I think that we should memoize these properties because the expressions are immutable. If the expressions are weakreferencable, we could even slip an `@memoize(cache=WeakKeyDictionary())` between the getter and the property decorator"}}