Question: I moved from using the Flex Builder 3 IDE to Flash Builder a couple weeks ago and have noticed a ridiculous jump in compile times with the same project. It almost seems like every time I build it does a clean build. The project I am working with is pretty big, but when it takes more than 4 mins to build, something is wrong. I tried adding more memory to eclipse and all the tricks I could find on the web but the compile time never really changed.

I am running under Windows 7 32bit, and I get the same performance from the plugin and stand alone version of the IDE.

Anyone know why and how I can speed things up?

Answer: 
A common way of doing that is with a `long` type's binary representation for each player.  

(since there are 64 squares on the board).. As **Charlie** already said..  

Here's a very good (but reather general) [wiki article](http://en.wikipedia.org/wiki/Bitboard).

The usage is simple - for example, if you want to check if all pieces can move say up and right, shift the player's pieces represntation 7 bits to the left, and check if there are opponent pieces there, then shift them 7 bits left again, and check if those squares are clear...  

I used it in a Reversi competition once, and can say the implementation wasn't too hard.  

HTH.
It depends on what your AI algorithms are going to be doing. Most AI algorithms would be doing some kind of search over the possible moves at least several steps ahead. In that case you will be making lots of copies of your board representation and it makes sense to try and keep it small as the time to copy your data structure will dominate the time to get a list of possible moves as well as limiting the depth to which you can search. 

However, if you are not searching I would create a class Piece and store the color, location, and whether the piece is a king. I would then have a 2 dimensional 8 by 8 array of references to Pieces and a linked-list of black pieces and a linked-list of red pieces. Each element of the array would point to either a piece from the red or black list or to an "Empty" piece (null would work for this). When you move a piece you simply update the Piece object in the list and move the reference from its current location to the new location, setting the old location to the empty piece. For a slight increase in the cost of an update you get an efficient way to iterate over either sides pieces and a constant time lookup of the state of any particular spot on the board. 

You would have to iterate over the full list to remove a dead piece, however this can also be made efficient with a slight change to piece. You can store a bool "dead" in the Piece object. When a piece is killed, set dead to true and remove it from the board by replacing the reference to it with the empty piece. When you iterate through either list of pieces simply remove any piece marked as dead from the list.