RE: writing/reading strings I wonder if this won't help
https://plus.google.com/+AddyOsmani/posts/4GgX9CD6c1X?

David

On Sun, Aug 3, 2014 at 9:51 AM, Peter Schuck <[email protected]> wrote:
> Fressian's caching strategy is very flexible and powerful but doesn't have a
> lot of documetnation.  I view Fressian's caching as similar to memory
> references for Clojure values.  You can cache any value no matter how large
> and once the value is cached referencing it again is only a few bytes.
> Fressian caches symbols, keywords, and tagged value tags by default.
>
> What I mean by "significant structural similarity" is a data structure or
> steam of data structures that have frequent repetitions of compound values.
> An AST would probably be a canonical example of this.
>
> Fressian is about five to ten times as slow as Transit and not really suited
> for the vast majority of applications where relatively small data structures
> need to be written and read as quickly as possible.  It took significant
> effort to get Fressian's speed to where it is now and I don't see a way
> forward to get it to match Transit's speed.  The main bottlenecks are
> reading and writing numbers and strings, hashing value, and determining an
> value's type.  Until those bottlenecks get resolved in future versions of
> JavaScript piggybacking of of JSON, like Transit, is the way to go for
> speed.
>
> I hope that answers most questions, feel free to ask for more clarification.
> I learned a lot about how to write fast ClojureScript / JavaScript and plan
> on writing a blog post about it in the near future.
>
> Peter Schuck
>
>
> On Sat, Aug 2, 2014 at 4:23 PM, Alex Miller <[email protected]> wrote:
>>
>> I took "significant structural similarity" to primarily mean at least maps
>> with similar keys, which Transit caching will cover.
>>
>>
>> On Sat, Aug 2, 2014 at 1:49 PM, David Nolen <[email protected]>
>> wrote:
>>>
>>> In Transit, maps keys, symbols, keywords, and tagged value tags are
>>> subject to caching.
>>>
>>> Fressian's caching strategy is far more flexible from what I
>>> understand. That said transit-cljs is 20-30X faster than
>>> cljs.reader/read-string on the benchmarks I've tried across various
>>> browser and command line JS environments.
>>>
>>> David
>>>
>>> On Sat, Aug 2, 2014 at 2:26 PM, Sean Grove <[email protected]> wrote:
>>> > I thought transit's caching only applied to map keys? Pretty unclear on
>>> > what
>>> > Fressian's can do
>>> >
>>> >
>>> > On Sat, Aug 2, 2014 at 8:23 AM, Alex Miller <[email protected]>
>>> > wrote:
>>> >>
>>> >> Cool stuff Peter. It would be interesting to compare performance with
>>> >> transit-cljs https://github.com/cognitect/transit-cljs. Transit has
>>> >> the same
>>> >> caching and extensibility benefits of Fressian but leverages the very
>>> >> fast
>>> >> JavaScript parser capabilities built into the browser, so is likely
>>> >> faster.
>>> >>
>>> >> Alex
>>> >>
>>> >> On Friday, August 1, 2014 3:33:58 PM UTC-5, [email protected]
>>> >> wrote:
>>> >> > I'm happy to announce a port of Fressian to ClojureScript.
>>> >> >
>>> >> > The public api mirrors data.fressian api with a few exceptions.
>>> >> > Records
>>> >> > don't have a generic writer but you can easily append the handlers
>>> >> > with the
>>> >> > write-record function.  There is no inheritance lookup for types so
>>> >> > every
>>> >> > different type will need it's own handler.  The tagged helper
>>> >> > functions
>>> >> > (tagged-object?, tag, tagged-value) are not included.
>>> >> >
>>> >> > I see the use case for Fressian in ClojureScript streaming large
>>> >> > amounts
>>> >> > of data that has significant structural similarity.  Fressian
>>> >> > caching
>>> >> > capabilities allow large values to be represented as a single
>>> >> > integer in the
>>> >> > bytestream.
>>> >> >
>>> >> > This is my first large ClojureScript library so any suggestions for
>>> >> > improvements are welcome.
>>> >> >
>>> >> > Thanks to Bendyworks for letting me develop this during my work
>>> >> > hours.
>>> >> >
>>> >> > Clojars Link: https://clojars.org/longshi
>>> >> > Repo: https://github.com/spinningtopsofdoom/longshi
>>> >> >
>>> >> > Peter Schuck
>>> >>
>>> >> --
>>> >> 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 [email protected].
>>> >> To post to this group, send email to [email protected].
>>> >> 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 [email protected].
>>> > To post to this group, send email to [email protected].
>>> > 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 a topic in the
>>> Google Groups "ClojureScript" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/clojurescript/xhdrGunEXPE/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To post to this group, send email to [email protected].
>>> 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 a topic in the
>> Google Groups "ClojureScript" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/clojurescript/xhdrGunEXPE/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> To post to this group, send email to [email protected].
>> 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 [email protected].
> To post to this group, send email to [email protected].
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to