NM, huge difference in performance even with the cast. Old version:
(time (dotimes [_ 1000] (byte-array-contains? header 0xFE))) "Elapsed time: 337.312 msecs" New version: (time (dotimes [_ 1000] (byte-array-contains? header 0xFE))) "Elapsed time: 4.278 msecs" On that note, is there a native way to check whether a byte array contains a given value? The contains? function seems to indicate whether a given index exists in the array rather than inspecting the actual value? My best stab at the moment is as follows: (defn byte-array-contains? [coll key] "scans a byte array for a given value" (loop [i 0] (if (< i (count coll)) (if (== (int (byte key)) (int (byte (aget coll i)))) true (recur (inc i)))))) Travis On May 14, 11:40 am, tmountain <tinymount...@gmail.com> wrote: > If that's the case, would I even get a performance increase, or would > the cast overhead cost more than the implicit reflection? > > On May 14, 11:32 am, David Nolen <dnolen.li...@gmail.com> wrote: > > > This baffled me as well. You need to cast to int. > > > On Thu, May 14, 2009 at 11:22 AM, tmountain <tinymount...@gmail.com> wrote: > > > > I'm trying to optimize some code I've written, and I have set warn on > > > reflection as advised. I'm having a hard time getting a simple > > > statement to avoid reflection. > > > > user=> (== (byte 0x1) (byte 0x1)) > > > Reflection warning, line: 33 - call to equiv can't be resolved. > > > > Can you use type hints on primitive types? I've tried obvious stuff > > > like: > > > > user=> (== #^byte (byte 0x1) #^byte (byte 0x1)) > > > Reflection warning, line: 4 - call to equiv can't be resolved. > > > > and other variations without success. > > > > Thanks, > > > Travis --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---