You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Peter_Lenahan@ibi.com (JIRA)" <ji...@apache.org> on 2009/01/24 06:27:59 UTC

[jira] Created: (PDFBOX-403) Findbugs reported a minor performance issue. Integer.valueOf(string);

Findbugs reported a minor performance issue. Integer.valueOf(string);
---------------------------------------------------------------------

                 Key: PDFBOX-403
                 URL: https://issues.apache.org/jira/browse/PDFBOX-403
             Project: PDFBox
          Issue Type: Improvement
          Components: PDModel
         Environment: all
            Reporter: Peter_Lenahan@ibi.com
            Priority: Trivial


Below are the comments from Findbugs, PMD also reported the same problem, but findbugs gives a better description of the issue.
-------------------------------------------------------------------
[M P Bx] Method invokes inefficient Number constructor; use static valueOf instead [DM_NUMBER_CTOR]

Using new Integer(int) is guaranteed to always result in a new object whereas Integer.valueOf(int) allows caching of values to be done by the compiler, class library, or JVM. Using of cached values avoids object allocation and the code will be faster. 

Values between -128 and 127 are guaranteed to have corresponding cached instances and using valueOf is approximately 3.5 times faster than using constructor. For values outside the constant range the performance of both styles is the same. 

Unless the class must be compatible with JVMs predating Java 1.5, use either autoboxing or the valueOf() method when creating instances of Long, Integer, Short, Character, and Byte.


    public Integer getRotation()
    {
        Integer retval = null;
        COSNumber value = (COSNumber)page.getDictionaryObject(
COSName.ROTATE );
        if( value != null )
        {
//Change this:
            retval = new Integer( value.intValue() ); // to this, so the first 127 rotation numbers will be cached Integer
values:
            retval = Integer.valueOf(value.intValue());
        }
        return retval;
    }



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (PDFBOX-403) Findbugs reported a minor performance issue. Integer.valueOf(string);

Posted by "Brian Carrier (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/PDFBOX-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brian Carrier resolved PDFBOX-403.
----------------------------------

    Resolution: Later

The proposed solution uses a method introduced in Java 1.5.  The current code base is 1.4-compliant, so it can't be used. Marking as "Later" in case PDFBox relaxes the 1.4 requirement.

> Findbugs reported a minor performance issue. Integer.valueOf(string);
> ---------------------------------------------------------------------
>
>                 Key: PDFBOX-403
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-403
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: PDModel
>    Affects Versions: 0.8.0-incubator
>         Environment: all
>            Reporter: Peter_Lenahan@ibi.com
>            Priority: Trivial
>
> Below are the comments from Findbugs, PMD also reported the same problem, but findbugs gives a better description of the issue.
> -------------------------------------------------------------------
> [M P Bx] Method invokes inefficient Number constructor; use static valueOf instead [DM_NUMBER_CTOR]
> Using new Integer(int) is guaranteed to always result in a new object whereas Integer.valueOf(int) allows caching of values to be done by the compiler, class library, or JVM. Using of cached values avoids object allocation and the code will be faster. 
> Values between -128 and 127 are guaranteed to have corresponding cached instances and using valueOf is approximately 3.5 times faster than using constructor. For values outside the constant range the performance of both styles is the same. 
> Unless the class must be compatible with JVMs predating Java 1.5, use either autoboxing or the valueOf() method when creating instances of Long, Integer, Short, Character, and Byte.
>     public Integer getRotation()
>     {
>         Integer retval = null;
>         COSNumber value = (COSNumber)page.getDictionaryObject(
> COSName.ROTATE );
>         if( value != null )
>         {
> //Change this:
>             retval = new Integer( value.intValue() ); // to this, so the first 127 rotation numbers will be cached Integer
> values:
>             retval = Integer.valueOf(value.intValue());
>         }
>         return retval;
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (PDFBOX-403) Findbugs reported a minor performance issue. Integer.valueOf(string);

Posted by "Peter_Lenahan@ibi.com (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/PDFBOX-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Peter_Lenahan@ibi.com updated PDFBOX-403:
-----------------------------------------

    Affects Version/s: 0.8.0-incubator

> Findbugs reported a minor performance issue. Integer.valueOf(string);
> ---------------------------------------------------------------------
>
>                 Key: PDFBOX-403
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-403
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: PDModel
>    Affects Versions: 0.8.0-incubator
>         Environment: all
>            Reporter: Peter_Lenahan@ibi.com
>            Priority: Trivial
>
> Below are the comments from Findbugs, PMD also reported the same problem, but findbugs gives a better description of the issue.
> -------------------------------------------------------------------
> [M P Bx] Method invokes inefficient Number constructor; use static valueOf instead [DM_NUMBER_CTOR]
> Using new Integer(int) is guaranteed to always result in a new object whereas Integer.valueOf(int) allows caching of values to be done by the compiler, class library, or JVM. Using of cached values avoids object allocation and the code will be faster. 
> Values between -128 and 127 are guaranteed to have corresponding cached instances and using valueOf is approximately 3.5 times faster than using constructor. For values outside the constant range the performance of both styles is the same. 
> Unless the class must be compatible with JVMs predating Java 1.5, use either autoboxing or the valueOf() method when creating instances of Long, Integer, Short, Character, and Byte.
>     public Integer getRotation()
>     {
>         Integer retval = null;
>         COSNumber value = (COSNumber)page.getDictionaryObject(
> COSName.ROTATE );
>         if( value != null )
>         {
> //Change this:
>             retval = new Integer( value.intValue() ); // to this, so the first 127 rotation numbers will be cached Integer
> values:
>             retval = Integer.valueOf(value.intValue());
>         }
>         return retval;
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.