{"action":"created","issue":{"url":"https://api.github.com/repos/rpominov/kefir/issues/198","repository_url":"https://api.github.com/repos/rpominov/kefir","labels_url":"https://api.github.com/repos/rpominov/kefir/issues/198/labels{/name}","comments_url":"https://api.github.com/repos/rpominov/kefir/issues/198/comments","events_url":"https://api.github.com/repos/rpominov/kefir/issues/198/events","html_url":"https://github.com/rpominov/kefir/issues/198","id":149912970,"number":198,"title":"Improving performance","user":{"login":"omarstreak","id":1332109,"avatar_url":"https://avatars.githubusercontent.com/u/1332109?v=3","gravatar_id":"","url":"https://api.github.com/users/omarstreak","html_url":"https://github.com/omarstreak","followers_url":"https://api.github.com/users/omarstreak/followers","following_url":"https://api.github.com/users/omarstreak/following{/other_user}","gists_url":"https://api.github.com/users/omarstreak/gists{/gist_id}","starred_url":"https://api.github.com/users/omarstreak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/omarstreak/subscriptions","organizations_url":"https://api.github.com/users/omarstreak/orgs","repos_url":"https://api.github.com/users/omarstreak/repos","events_url":"https://api.github.com/users/omarstreak/events{/privacy}","received_events_url":"https://api.github.com/users/omarstreak/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2016-04-20T23:20:59Z","updated_at":"2016-04-21T18:49:11Z","closed_at":null,"body":"I discovered Most (https://github.com/cujojs/most) a couple of days ago and the perf numbers look amazing. However, here at Streak we're all in on Kefir right now and don't want to migrate to a new stream library. My guess is that some of the techniques used in Most could be applied to Kefir.\r\n\r\nI thought about implementing the performance improvements ourselves but figured I'd reach out to you to see if you're interested in taking on the project since you know Kefir better than anybody. I also understand you're very busy, so we'd be willing to sponsor the development.\r\n\r\nLet me know what you think. If you want to take this conversation private you can reach me at omar@streak.com."},"comment":{"url":"https://api.github.com/repos/rpominov/kefir/issues/comments/213061653","html_url":"https://github.com/rpominov/kefir/issues/198#issuecomment-213061653","issue_url":"https://api.github.com/repos/rpominov/kefir/issues/198","id":213061653,"user":{"login":"rpominov","id":825702,"avatar_url":"https://avatars.githubusercontent.com/u/825702?v=3","gravatar_id":"","url":"https://api.github.com/users/rpominov","html_url":"https://github.com/rpominov","followers_url":"https://api.github.com/users/rpominov/followers","following_url":"https://api.github.com/users/rpominov/following{/other_user}","gists_url":"https://api.github.com/users/rpominov/gists{/gist_id}","starred_url":"https://api.github.com/users/rpominov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpominov/subscriptions","organizations_url":"https://api.github.com/users/rpominov/orgs","repos_url":"https://api.github.com/users/rpominov/repos","events_url":"https://api.github.com/users/rpominov/events{/privacy}","received_events_url":"https://api.github.com/users/rpominov/received_events","type":"User","site_admin":false},"created_at":"2016-04-21T18:49:11Z","updated_at":"2016-04-21T18:49:11Z","body":"> I prefer the developer productivity boost that default hot observables bring.\r\n\r\nI agree, I think this is the reason for libraries like Bacon or Kefir to exist. Cold vs Hot might be confusing.\r\n\r\n> If it becomes necessary from a performance standpoint I could see an explicit cold observable construction being added\r\n\r\nI'm not sure I like this idea, we'll end up with another library like Rx or Most with 2 types of streams, and we already have two great libs like that.\r\n\r\n> You said that you failed at bringing in some of the techniques, what did you try and why did it fail?\r\n\r\nI basically tried to analyze the call stack the engine dealing with when trying to deliver an event through chain of Observables, and find places where it can be optimized. Like make the engine inline a function, or don't deoptimize it. But I simply was't sure that I understood tools right etc. And I decided it's not for me. JS engines are complex and we have many of them and they evolve rapidly, so what was true today might became not true tomorrow. I decided it's better to just write sane code and hope for the best in that situation, at least for me."}}