What have you tried? And how are you getting that Java? I would prefer to 
look at bytecode (via javap) to verify what you're saying. 

Have you tried an explicit long cast?

(aget flat-dict (bit-and 0xff (long (aget arr j))))

Are you running this hot enough for the JIT to kick in? Usually this is the 
kind of thing it's good at, but it might take 10k invocations before it 
does.


On Wednesday, January 30, 2019 at 4:03:43 PM UTC-6, Brian Craft wrote:
>
> Profiling is showing a lot of time spent in RT.longCast, in places like 
> this:
>
> (aget flat-dict (bit-and 0xff (aget arr j)))
>
> arr is hinted as ^bytes, and flat-dict as ^objects.
>
> which compiles to this:
>
> Object code2 = RT.aget((Object[])flat_dict, RT.intCast(0xFFL & 
> RT.longCast((Object)RT.aget((byte[])arr2, RT.intCast(k)))))
>
> Is there any way to avoid that RT.longCast? There is an aget method in 
> RT.java that returns a byte, and a longCast for byte, but I suspect the 
> cast to Object is causing it to hit the longCast for Object, which does a 
> bunch of reflection.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to