Mark, I had not heard about Java changing the substring operation from O(1) to O(n). Do you have a link to any further info about this change?
I'm guessing that the implementation is changing from the O(1) "create a new String object that is a reference to a portion of the original String object" to O(n) "create a new String object that is a copy of a portion of the original String object"? If so, note that it is undesirable in some cases that the O(1) substring operation works as it does, because it prevents the longer string from being GC'ed if it would become garbage, except for the fact that one has created and keeps substrings of it around. One can explicitly call the String constructor to copy the substrings if you want to avoid that behavior, of course, so the O(1) with the O(n) fallback is more flexible in that it lets the developer aware of this behavior choose between them. I haven't done anything but think about it during commute time yet, but I had been wondering in how many situations it might be useful to have a string type that was something like Relaxed Radix Binary trees, in that they can be concatenated and substring'd in O(log n) worst case time, and yet substrings would only hold onto references of the parts that they explicitly refer to, and perhaps a little bit more (but not the entire original string). Andy On Tue, Jun 11, 2013 at 3:09 PM, Mark Engelberg <mark.engelb...@gmail.com>wrote: > Honestly I hadn't yet given it any thought. Thanks for the interest in > having it on Clojurescript. Here are a few issues that come to mind: > > 1. To achieve performance, I've spent time coding custom data structures > that implement various Clojure and Java interfaces. I haven't done much > with Clojurescript, but my impression is that the ecosystem of protocols is > completely different, so I imagine that could be a pain to transfer over. > > 2. I don't know much about the performance of Javascript/Clojurescript's > underlying data structures. For example, in Java, the substring operation > used to be O(1), but recently, much to my dismay, they changed it to O(n). > That change was annoying, and it means I'm going to have to rework some > code to deal with that, but at least I heard about it and can take it into > account. But in Javascript I don't even *know* the performance > characteristics of its strings and substring operation. What other > Javascript performance gotchas don't I know about? > > 3. I'm assuming that due to the above, it won't be as simple as just > recompiling the code for Clojurescript. I have no idea what's involved > with maintaining a code base for the two target languages simultaneously. > Sounds non-trivial, although maybe it won't seem so intimidating once > things have settled down and I'm not making quite so many performance > tweaks and feature enhancements to the code. > > In any case, please add your request as a github issue, so I don't forget > about it. > > > On Tue, Jun 11, 2013 at 8:06 AM, JeremyS <jschoffen....@gmail.com> wrote: > >> Hi Puzzler, >> >> I was wondering if you planned to port Instaparse to ClojureScript. I >> know it's asking a lot, but I am one of those who would love >> to be able to run it in a browser or in node.js... >> >> Cheers, >> >> Jeremys. >> > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.