You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Tim Ellison (JIRA)" <ji...@apache.org> on 2010/09/22 00:21:34 UTC
[jira] Updated: (HARMONY-6635) FloatingPointParser uses toLowerCase
unnecessarily
[ https://issues.apache.org/jira/browse/HARMONY-6635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tim Ellison updated HARMONY-6635:
---------------------------------
Attachment: harmony-6635.patch
I agree -- and the use of "indexOf" to search the entire string looks strange too.
It's a bit more complex than you suggest (but not much more), since there is an optional sign indicator. Patch attached.
I wrote a simple benchmark with the toLowerCase/indexOf compared to a direct check, and there isn't too much in it..
--
Parse "0x1.P1" and "0x113D4cc.P22" about 40k times
Current code, runs (ms) = 2157, 2125, 2032, 2204, 2141
New code, runs (ms) = 1843, 1984, 2032, 1953
--
Do you have some benchmark or application you can try that might shows the difference more starkly?
> FloatingPointParser uses toLowerCase unnecessarily
> --------------------------------------------------
>
> Key: HARMONY-6635
> URL: https://issues.apache.org/jira/browse/HARMONY-6635
> Project: Harmony
> Issue Type: Improvement
> Environment: Android 2.2
> Reporter: Gaz Davidson
> Attachments: harmony-6635.patch
>
>
> A lot of time is being eaten inside FloatingPointParser.java calling String.toLowerCase when testing for "hex float" types.
> > if (s.toLowerCase().indexOf("0x") != -1)
> I imagine that such hex float numbers are very rare, so this is a huge waste of time in the general case.
> I haven't tested this, but it looks to me like the string is already trimmed and so checking at a specific location should speed this up considerably:
> > if (s.size() > 2 && s.charAt(0) =='0' && (s.charAt(1) == 'x' || s.charAt(1) == 'X'))
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.