Sorry, should have mentioned this, this is 2.2 running on a Galaxy Tab. Based on Mark and Kostya's suggestions, I might just try to trim the source and see what I can come up with - might be easier than managing a mapping structure and will surely be lighter memory wise.
Will post back here with results as I have them! Paul On Apr 14, 4:26 pm, Dianne Hackborn <hack...@android.com> wrote: > What version of the platform are you running on? It looks like in the > current source most of the function is written in native code, but there is > no native code in your profiling. I don't work on Dalvik, so I don't know > when the native impl appeared. > > If this is the original Harmony implementation, it is probably way > over-engineered and inefficient. :) If your numbers are normally of the > form "xxxxx.yyy" you could try writing your own parser that parses that form > as efficiently as possible, and bail to the generic impl if it finds > something it can't handle. > > You certainly should be able to write something that doesn't have a $#&^%!! > StringBuilder involved (good ghod!). > > > > On Thu, Apr 14, 2011 at 11:43 AM, Paul <pmmen...@gmail.com> wrote: > > Ah, I see, create a kind of mapping from String -> float, and first > > check the mapping before performing the conversion? > > > Here is what traceview is telling me for the calls to Float.valueOf(): > > > java/lang/Float.valueOf (Ljava/lang/String;)Ljava/lang/Float; > > * self = 1.9% > > * java/lang/Float.parseFloat (Ljava/lang/String;)F = 94.3% > > > ** self = 1.3% > > ** org/apache/harmony/luni/util/FloatingPointParser.parseFloat (Ljava/ > > lang/String;)F = 98.7% > > > *** self = 6.5% > > *** org/a.../h.../luni/util/FloatingPointParser.initialParse (Ljava/ > > lang/String;I)Lorg/a.../h.../luni/util/FloatingPointParser > > $StringExponentPair = 58.7% > > > **** self = 29.9% > > **** a bunch of StringBuilder calls ~= 60% > > > *** java/lang/String.toLowerCase ()Ljava/lang/String = 26.8% > > > * java/lang/Float.valueOf (F)Ljava/lang/Float; = 3.8% > > > ** self = 48.4% > > ** java/lang/Float.<init> (F)V = 51.2% > > > *** self = 69.7% > > *** java/lang/Number.<init> ()V = 30.3% > > > Paul > > > On Apr 14, 2:20 pm, Dianne Hackborn <hack...@android.com> wrote: > > > I think this may be what Marcin was suggesting -- if the same float value > > > tends to appear multiple times, then when you parse a new one put it into > > a > > > cache. When you read strings, first see if the string is already in the > > > cache to retrieve the previously parsed float value for it. > > > > Also can you get profiling data for where most of the time is spent > > inside > > > of Float.parseFloat()? In at least the current code base, the bulk of > > the > > > work for that is already done in native code. It would be interesting to > > > know if most of your time is spent in that native function or the glue > > > around it. > > > > It would also be useful to know what kind of CPU and what OS version you > > are > > > testing this on. For example, the JIT in newer platforms may > > significantly > > > improve performance here; CPUs that don't have hardware floating point > > > support may have significantly worse performance. > > > > On Thu, Apr 14, 2011 at 9:17 AM, Paul <pmmen...@gmail.com> wrote: > > > > The XML is the storage venue - Paths are drawn to the screen from the > > > > XML, and users can add new Paths (written back to the XML) or delete > > > > existing Paths (data is deleted from XML). > > > > > On Apr 14, 12:11 pm, Marcin Orlowski <webnet.andr...@gmail.com> wrote: > > > > > > Any suggestions welcome! > > > > > > How often the source data changes? Do you reuse it later? If so and > > > > source > > > > > data changes not too often, cache it (write down processed data for > > > > further > > > > > reuse). If changes more frequently does it change totally or just is > > > > small > > > > > portion? If the latter, process only what's new. And cache it again. > > > > > > Regards, > > > > > Marcin Orlowski > > > > > > *Tray Agenda <http://bit.ly/trayagenda>* - keep you daily schedule > > > > handy... > > > > > *Date In Tray* <http://bit.ly/dateintraypro> - current date at > > glance... > > > > > WebnetMobile on *Facebook <http://webnetmobile.com/fb/>* and > > > > > *Twitter<http://webnetmobile.com/twitter/> > > > > > * > > > > > -- > > > > You received this message because you are subscribed to the Google > > > > Groups "Android Developers" group. > > > > To post to this group, send email to > > android-developers@googlegroups.com > > > > To unsubscribe from this group, send email to > > > > android-developers+unsubscr...@googlegroups.com > > > > For more options, visit this group at > > > >http://groups.google.com/group/android-developers?hl=en > > > > -- > > > Dianne Hackborn > > > Android framework engineer > > > hack...@android.com > > > > Note: please don't send private questions to me, as I don't have time to > > > provide private support, and so won't reply to such e-mails. All such > > > questions should be posted on public forums, where I and others can see > > and > > > answer them. > > > -- > > You received this message because you are subscribed to the Google > > Groups "Android Developers" group. > > To post to this group, send email to android-developers@googlegroups.com > > To unsubscribe from this group, send email to > > android-developers+unsubscr...@googlegroups.com > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en > > -- > Dianne Hackborn > Android framework engineer > hack...@android.com > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. All such > questions should be posted on public forums, where I and others can see and > answer them. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en