PLease dont forget that the way you implement the method will also
matter...rather than just Java and its functionality..

Regards,
jd


On 7/22/10, Reinier Zwitserloot <[email protected]> wrote:
>
> TL;DR: Your question cannot be answered. Those who are trying are
> giving you bad advice. The only way to solve your issue is to run a
> profiler on real world data.
>
> More extensive answer:
>
> Heh, nice. This is exactly why you shouldn't ask these questions.
> Alexey Zinger's comment that i++ is slower than ++i is exactly the
> kind of completely wrong micro optimization bullpuckey you get when
> you do.
>
> This is java, it's not C. The answer depends on use case, behaviour,
> java version, hot spot compiler, OS, environment, alternate load, and
> a few other things. Therefore, your original question: "What's the
> fastest way to do X in java" is simply impossible to answer.
>
> The right way to handle this situation is to measure a complete use
> case. Do NOT micro benchmark. Run a real profiler, on real-world
> representative data, in a real world situation (i.e. run a music
> player and a webserver that's being actively pinged if that's the
> situation that's likely when performance counts). As a practical
> matter, and going mostly by gut instinct, most of the things you said
> (such as, should I go by stream) don't really work; how do you think
> that stream class reads bytes from the array in a way that avoids a
> generated bounds check? It won't.
>
> Also, if this is for android, well, that's another beast altogether.
> There's no actual bounds check in class files, the JVM inserts it when
> running your class file. Android takes class files and rewrites it
> into dalvik opcodes. Who knows if dalvik optimizes array bounds
> checks? Also, when you say that some optimization such as bound check
> reduction wasn't added because it barely made a difference then..
> well, experts say it barely makes a difference. That's better advice
> any of us on this list could possibly give you!
>
>
> On Jul 21, 4:18 pm, Alan Kent <[email protected]> wrote:
> > I was wondering what the fastest way (most highly performant) was to
> > parse data structures serialized as an array of bytes.  In my case its
> > like a network packet (a true array of bytes where I need to peel of 1,
> > 2, 4, and 8 byte integers, or variable length ASCII (8-bit) strings,
> etc.)
> >
> > Note I am after the FASTEST way to do this in Java (and/or Scala).  Is
> > it better to use the stream based classes, or is it better to do direct
> > array accesses and do bit shift operations and masks with 0xff etc (to
> > strip sign extension Java will do otherwise)?  I suspect the stream
> > based approaches would be slower.  Sample code that sneaks in:
> >
> >      byte b1 = buf[i++];
> >      byte b2 = buf[i++];
> >      byte b3 = buf[i++];
> >      byte b4 = buf[i++];
> >      int n = (b1 << 24) | ((b2 & 0xff) << 16) | ((b3 & 0xff) << 8) | (b4
> > & 0xff); // Must mask with 0xff or else sign extension will mess up the
> > result. Java does not have unsigned bytes or ints!
> >
> > I was looking into array bounds checks, and what I found via Google
> > indicated that hotspot leaves in array bounds checks as there was only a
> > minor performance improvement found in practice.  This lead me to wonder
> > if there is a faster way to do the code since I would be doing lots of
> > array accesses, each with a bounds check.
> >
> > Just curious!
> >
> > Thanks!
> > Alan
>
> --
> You received this message because you are subscribed to the Google Groups
> "The Java Posse" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<javaposse%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/javaposse?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to