Performance tweaks to FastStatementList and additional unit tests.

pull/84/head
Brett Wooldridge 11 years ago
parent 20db89b0df
commit 02f23eb90e

@ -55,17 +55,16 @@ public final class FastStatementList
*/
public void add(Statement element)
{
try
if (size < elementData.length)
{
elementData[size] = element;
size++;
elementData[size++] = element;
}
catch (ArrayIndexOutOfBoundsException oob)
else
{
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity << 1;
Statement[] newElementData = new Statement[newCapacity];
final int oldCapacity = elementData.length;
final int newCapacity = oldCapacity << 1;
final Statement[] newElementData = new Statement[newCapacity];
System.arraycopy(elementData, 0, newElementData, 0, oldCapacity);
newElementData[size++] = element;
elementData = (Statement[]) newElementData;
@ -96,7 +95,7 @@ public final class FastStatementList
{
if (element == elementData[index])
{
int numMoved = size - index - 1;
final int numMoved = size - index - 1;
if (numMoved > 0)
{
System.arraycopy(elementData, index + 1, elementData, index, numMoved);

@ -11,6 +11,50 @@ import com.zaxxer.hikari.util.FastStatementList;
public class TestFastStatementList
{
@Test
public void testAddRemove()
{
ArrayList<Statement> verifyList = new ArrayList<Statement>();
FastStatementList list = new FastStatementList();
for (int i = 0; i < 32; i++)
{
StubStatement statement = new StubStatement(null);
list.add(statement);
verifyList.add(statement);
}
for (int i = 0; i < 32; i++)
{
Assert.assertNotNull("Element " + i + " was null but should be " + verifyList.get(i), list.get(0));
int size = list.size();
list.remove(verifyList.get(i));
Assert.assertSame(size - 1, list.size());
}
}
@Test
public void testAddRemoveTail()
{
ArrayList<Statement> verifyList = new ArrayList<Statement>();
FastStatementList list = new FastStatementList();
for (int i = 0; i < 32; i++)
{
StubStatement statement = new StubStatement(null);
list.add(statement);
verifyList.add(statement);
}
for (int i = 31; i >= 0; i--)
{
Assert.assertNotNull("Element " + i, list.get(i));
int size = list.size();
list.remove(verifyList.get(i));
Assert.assertSame(size - 1, list.size());
}
}
@Test
public void testOverflow()
{

Loading…
Cancel
Save