2006/7/21, Paulex Yang <[EMAIL PROTECTED]>:
Alexey Petrenko wrote:
> My two cents... :)
>
> Put all the array size checking code in one place is a good idea. Code
> reuse is always good idea.
>
> But do not forget that Java has 2 problems here:
> 1. It can not inline methods or include code in java file
> 2. Method call is a long operation.
AFAIK, the final/static/private(i.e. non-overriddable) methods have
chance to be inlined by JIT or so? (waiting for JIT guys correct me)
As far as I know ALL the methods are have chance to inline. The
question is how fast it will be done.

> So huge number of additional method calls can significantly downgrade
> the performance...
Performance is a complex issue, my rule of thumb is that without
benchmarking and bottleneck identification, the performance optimization
probably misses the target. Further, codes with good structure are
easier to be optimized later, while duplicate codes are probably evil...
>
> Probably VM JIT guys will correct me.
>
> Anyway... I think that the best plays for such tool methods is a misc
> module, not util.
Why does it matters in which module? I mean, does this related to
performance?
I did not talk about performance here :)

>
> SY, Alexey
>
> 2006/7/21, Andrew Zhang <[EMAIL PROTECTED]>:
>> Hi Vladimir,
>>
>> I noticed the same problem is existing in many places of NIO module.
>>
>> How about writing a utility function for array index exception check?
>> like:
>>
>> void assertArrayIndex(Object[] array, int offset, int length){
>>  if(offset < 0 || length < 0 || (long)offset + (long)length >
>> array.length
>> ){
>>     throw new IndexOutOfBoundsException();
>>  }
>> }
>>
>> How do you think about it? Any suggestions?
>>
>> Thanks!
>> Best regards,
>>
>>
>> On 7/21/06, Paulex Yang (JIRA) <[EMAIL PROTECTED]> wrote:
>> >
>> >     [ http://issues.apache.org/jira/browse/HARMONY-932?page=all ]
>> >
>> > Paulex Yang closed HARMONY-932.
>> > -------------------------------
>> >
>> >    Estimated Complexity: Novice
>> >
>> > Verified by Vladimir.
>> >
>> > > [classlib][nio]java.nio.?hannel.DatagramChannel.read(ByteBuffer[]
>> , int,
>> > Integer.MAX_VALUE) throws NotYetConnectedException while RI throws
>> > IndexOutOfBoundsException
>> > >
>> >
>> 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> > >
>> > >                 Key: HARMONY-932
>> > >                 URL:
>> http://issues.apache.org/jira/browse/HARMONY-932
>> > >             Project: Harmony
>> > >          Issue Type: Bug
>> > >          Components: Classlib
>> > >            Reporter: Vladimir Ivanov
>> > >         Assigned To: Paulex Yang
>> > >         Attachments: DatagramChannelImpl.patch
>> > >
>> > >
>> > > The Harmony methods
>> java.nio.?hannel.DatagramChannel.read/write(ByteBuffer[]
>> > , int, Integer.MAX_VALUE) throws NotYetConnectedException while RI
>> throws
>> > IndexOutOfBoundsException.
>> > > ==================== test.java ======================
>> > > import java.nio.channels.*;
>> > > import java.nio.*;
>> > > public class test  {
>> > >     public static void main (String[] args) {
>> > >         try {
>> > >             DatagramChannel.open().read(new ByteBuffer[] {}, 2,
>> > Integer.MAX_VALUE);
>> > >         } catch (Exception e) {
>> > >             e.printStackTrace();
>> > >         }
>> > >         try {
>> > >             DatagramChannel.open().write(new ByteBuffer[] {}, 2,
>> > Integer.MAX_VALUE);
>> > >         } catch (Exception e) {
>> > >             e.printStackTrace();
>> > >         }
>> > >     }
>> > > }
>> > > =================================================
>> > > Output:
>> > > C:\tmp\tmp17>C:\jdk1.5.0_06\bin\java.exe -cp . -showversion test
>> > > java version "1.5.0_06"
>> > > Java(TM) 2 Runtime Environment, Standard Edition (build
>> 1.5.0_06-b05)
>> > > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
>> > > java.lang.IndexOutOfBoundsException
>> > >         at
>> sun.nio.ch.DatagramChannelImpl.read(DatagramChannelImpl.java
>> > :366)
>> > >         at test.main(test.java:8)
>> > > java.lang.IndexOutOfBoundsException
>> > >         at
>> sun.nio.ch.DatagramChannelImpl.write(DatagramChannelImpl.java
>> > :429)
>> > >         at test.main(test.java:13)
>> > > C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp .
>> > -showversion test
>> > > java version "1.5.0"
>> > > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
>> > > BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32,
>> > R25.0.0-75, GC: System optimized over throughput (initial strategy
>> > singleparpar))
>> > > OutOfMemoryError
>> > > -------end of stacktrace
>> > > C:\tmp\tmp17>C:\harmony\trunk_0427\deploy\jdk\jre\bin\java.exe -cp .
>> > -showversion test
>> > > java version 1.5 (subset)
>> > > (c) Copyright 1991, 2006 The Apache Software Foundation or its
>> > licensors, as applicable.
>> > > java.nio.channels.NotYetConnectedException
>> > >         at
>> >
>> org.apache.harmony.nio.internal.DatagramChannelImpl.checkOpenConnected(
>> > DatagramChannelImpl.java:567)
>> > >         at org.apache.harmony.nio.internal.DatagramChannelImpl.read(
>> > DatagramChannelImpl.java:387)
>> > >         at test.main(test.java:8)
>> > > java.nio.channels.NotYetConnectedException
>> > >         at
>> >
>> org.apache.harmony.nio.internal.DatagramChannelImpl.checkOpenConnected(
>> > DatagramChannelImpl.java:567)
>> > >         at
>> org.apache.harmony.nio.internal.DatagramChannelImpl.write(
>> > DatagramChannelImpl.java:477)
>> > >         at test.main(test.java:13)
>> > >
>> >
>> 
C:\tmp\tmp17>C:\harmony\drlvm\trunk\build\win_ia32_msvc_debug\deploy\jre\bin\ij
>>
>> > -Dvm.assert_dialog=false -cp . -showversion test
>> > > Apache Harmony DRLVM HEAD-4807 (2006-05-02), Windows/ia32/msvc 1310,
>> > debug
>> > > java.nio.channels.NotYetConnectedException
>> > >         at
>> >
>> org.apache.harmony.nio.internal.DatagramChannelImpl.checkOpenConnected(
>> > DatagramChannelImpl.java:567)
>> > >         at org.apache.harmony.nio.internal.DatagramChannelImpl.read(
>> > DatagramChannelImpl.java:387)
>> > >         at test.main(test.java:8)
>> > > java.nio.channels.NotYetConnectedException
>> > >         at
>> >
>> org.apache.harmony.nio.internal.DatagramChannelImpl.checkOpenConnected(
>> > DatagramChannelImpl.java:567)
>> > >         at
>> org.apache.harmony.nio.internal.DatagramChannelImpl.write(
>> > DatagramChannelImpl.java:477)
>> > >         at test.main(test.java:13)
>> >
>> > --
>> > This message is automatically generated by JIRA.
>> > -
>> > If you think it was sent incorrectly contact one of the
>> administrators:
>> > http://issues.apache.org/jira/secure/Administrators.jspa
>> > -
>> > For more information on JIRA, see:
>> http://www.atlassian.com/software/jira
>> >
>> >
>> >
>>
>>
>> --
>> Andrew Zhang
>> China Software Development Lab, IBM
>>
>>
>
>


--
Paulex Yang
China Software Development Lab
IBM



---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Alexey A. Petrenko
Intel Middleware Products Division

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to