You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2012/07/25 10:58:34 UTC

[jira] [Commented] (DERBY-5873) Avoid unnecessary allocation of Number instances in client/server

    [ https://issues.apache.org/jira/browse/DERBY-5873?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13422092#comment-13422092 ] 

Knut Anders Hatlen commented on DERBY-5873:
-------------------------------------------

In the first patch, I forgot about the BigDecimal and BigInteger classes, which are also sub-classes of Number. I see that Java 5 introduced the following valueOf() factory methods for BigDecimal that we could use:

- valueOf(double) - replaces the "new BigDecimal(Double.toString(<double>))" idiom used to convert a double to BigDecimal without changing the precision

- valueOf(long, int) - could be used to create a BigDecimal value directly instead of going via a BigInteger and/or byte[], if the unscaled value is known to fit in a long

Will post a followup patch.
                
> Avoid unnecessary allocation of Number instances in client/server
> -----------------------------------------------------------------
>
>                 Key: DERBY-5873
>                 URL: https://issues.apache.org/jira/browse/DERBY-5873
>             Project: Derby
>          Issue Type: Improvement
>          Components: Network Client, Network Server
>    Affects Versions: 10.10.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: d5873-1a.diff
>
>
> Java 5 introduced some new static factory methods (called valueOf()) in the Number sub-classes, to be used in preference of the constructors unless a fresh instance is required. The valueOf() methods are allowed to cache and reuse objects, possibly reducing the allocation/gc cost and the memory footprint. For example, Integer.valueOf(int) uses a pre-allocated cache for values between -128 and +127 by default (the cache size can be tuned with JVM flags).
> Now that the server and client code is compiled against Java 5 libraries, we should use the valueOf() methods  to get those benefits. Note also that Java 5 auto-boxing of numbers uses these methods implicitly, so in many cases we can just remove the calls to the constructor and the compiler will automatically insert the calls for us.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira