How did this affect performance in your Go AI?

On Tuesday, July 9, 2013 10:56:03 PM UTC-5, Zach Tellman wrote:
>
> Last year, I gave a talk at the Conj on my attempt to write an AI for the 
> board game Go.  Two things I discovered is that it was hard to get 
> predictable performance, but even once I made sure I had all the right type 
> hints, there was still a lot of room at the bottom for performance 
> improvements.  Towards the end [1], I mentioned a few ideas for 
> improvements, one of which was simply using ByteBuffers rather than objects 
> to host the data.  This would remove all the levels of indirection, giving 
> much better cache coherency, and also allow for fast unsynchronized 
> mutability when the situation called for it.
>
> So, ten months and several supporting libraries [2] [3] later, here it is: 
> https://github.com/ztellman/vertigo
>
> At a high level, this library is useful whenever your datatype has a fixed 
> layout and is used more than once.  Depending on your type, it will give 
> you moderate to large memory savings, and if you're willing to forgo some 
> of core library in favor of Vertigo's operators, you can get significant 
> performance gains on batch operations.  And, in the cases where performance 
> doesn't matter, it will behave exactly like any other Clojure data 
> structure.
>
> I want to point out that something like this would be more or less 
> impossible in Java; reading from an offset in a ByteBuffer without the 
> compile-time inference and validation provided by this library would be 
> pointlessly risky.  There's not a lot of low-level Clojure libraries, but 
> there's an increasing amount of production usage where people are using 
> Clojure for performance-sensitive work.  I'm looking forward to seeing what 
> people do with Vertigo and libraries like it.
>
> Zach
>
> [1] 
> http://www.youtube.com/watch?feature=player_detailpage&v=v5dYE0CMmHQ#t=1828s
> [2] https://github.com/ztellman/primitive-math
> [3] https://github.com/ztellman/byte-streams
>

-- 
-- 
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/groups/opt_out.


Reply via email to