Wow, That *may be* super useful in places where "persistent data structures would allocate too many objects, especially in applications such as games that are sensitive to garbage collection" (googled around, and ingested)
check this out http://theatticlight.net/posts/Conways-Game-of-Life-in-Clojurescript/ IN LOVE <3 On Tue, Feb 10, 2015 at 2:00 PM, Jamie Orchard-Hays <jamie...@gmail.com> wrote: > Dunno how CLJS compares with CLJ WRT to this, but reading about how > Clojure gains performance under the covers (and exposes these fns to use) > is illuminating: > > http://clojure.org/transients > > Jamie > > On Feb 10, 2015, at 12:49 PM, Gary Trakhman <gary.trakh...@gmail.com> > wrote: > > Yea, I think the general clojure advice has been to not early-optimize, > much work has been done to make the immutable data structures as fast as > possible, though I'm not sure where the CLJS ones are at perf-wise these > days. > > If you ever reach a bottleneck in your app, it should be relatively easier > and less of a maintenance headache to make a fast/mutable/isolated > implementation compared to the cost of having to decouple mutable code > after it's already been written. > > In terms of the performance of immutable data structures, you'll always be > creating more garbage than a mutable bash-in-place version, so that might > dominate your performance for different types of workloads. > > On Tue Feb 10 2015 at 11:34:06 AM Marc Fawzi <marc.fa...@gmail.com> wrote: > >> Answering my question with potential blind spots: >> >> The time it takes to populate data into an immutable tree (say an >> interval tree data structure or whatever kind) and the cost of updates to >> that immutable structure may be higher than the cost of copying. >> >> So I'm leaning toward the belief that immutable data structures help make >> concurrency simpler and easier to debug but they may actually be less >> performant than the mutable approach, and that's true either depending on >> the type of data structure or always... Have not done the detailed thinking >> or benchmarking... But I feel like I answered my own question in that >> immutability is simply a basic requirement for functional programming but >> while it makes concurrency easier even in single thread environments with >> async loops running concurrently the impact on performance is likely >> negative. >> >> If that's wrong or partly wrong conclusion I would love to hear it and >> have some examples. >> >> Thanks >> >> Marc >> >> >> Sent from my iPhone >> >> On Feb 9, 2015, at 1:29 PM, Marc Fawzi <marc.fa...@gmail.com> wrote: >> >> by processes in my previous reply, I mean async data processing loops >> running concurrently, i.e. a function called via setImmediate that keeps >> calling itself, and where you can have multiple of those running >> concurrently and operating on the same data structure.... In JS world, we'd >> make copies of the data structure. In CLJS, there are immutable types and >> immutability is achieved without cloning... so all I'm looking for is an >> example of using immutability in CLJS as a performance advantage in such a >> scenario... is there one? >> >> On Mon, Feb 9, 2015 at 12:23 PM, Marc Fawzi <marc.fa...@gmail.com> wrote: >> >>> right, concurrent, omitting the web worker stuff which relies on >>> messaging, >>> >>> I see improvements to code clarity and maintainability with core.async >>> but I'm trying to find if CLJS' immutable data structures give it a >>> performance advantage where normally expensive copying/cloning would be >>> required for isolating the working memory of two or more processes >>> >>> >>> On Mon, Feb 9, 2015 at 12:03 PM, Gary Trakhman <gary.trakh...@gmail.com> >>> wrote: >>> >>>> Core.async on clojurescript gives a huge advantage for concurrent data >>>> processing, maybe not parallel. >>>> >>>> On Mon Feb 09 2015 at 3:01:16 PM Marc Fawzi <marc.fa...@gmail.com> >>>> wrote: >>>> >>>>> >>>>> Potentially naive question, but I thought I should get it out of the >>>>> way :) >>>>> >>>>> Since in Javascript, there are no threads with shared memory, is there >>>>> any performance advantage to using CLJS (vs JS, or Immutable.js vs mutable >>>>> data structures) when it comes to parallel data processing? If so, are >>>>> there any example specific to CLJS? >>>>> >>>>> Curious. >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Note that posts from new members are moderated - please be patient >>>>> with your first post. >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "ClojureScript" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to clojurescript+unsubscr...@googlegroups.com. >>>>> To post to this group, send email to clojurescript@googlegroups.com. >>>>> Visit this group at http://groups.google.com/group/clojurescript. >>>>> >>>> >>>> -- >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "ClojureScript" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojurescript+unsubscr...@googlegroups.com. >>>> To post to this group, send email to clojurescript@googlegroups.com. >>>> Visit this group at http://groups.google.com/group/clojurescript. >>>> >>> >>> >> >> -- >> Note that posts from new members are moderated - please be patient with >> your first post. >> --- >> You received this message because you are subscribed to the Google Groups >> "ClojureScript" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojurescript+unsubscr...@googlegroups.com. >> To post to this group, send email to clojurescript@googlegroups.com. >> Visit this group at http://groups.google.com/group/clojurescript. >> > > -- > Note that posts from new members are moderated - please be patient with > your first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojurescript+unsubscr...@googlegroups.com. > To post to this group, send email to clojurescript@googlegroups.com. > Visit this group at http://groups.google.com/group/clojurescript. > > > -- > Note that posts from new members are moderated - please be patient with > your first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojurescript+unsubscr...@googlegroups.com. > To post to this group, send email to clojurescript@googlegroups.com. > Visit this group at http://groups.google.com/group/clojurescript. > -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript.