You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2012/10/09 21:28:59 UTC
svn commit: r1396215 -
/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/HashSetvBitSetTest.java
Author: sebb
Date: Tue Oct 9 19:28:59 2012
New Revision: 1396215
URL: http://svn.apache.org/viewvc?rev=1396215&view=rev
Log:
Fail if BitSet not faster overall
Modified:
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/HashSetvBitSetTest.java
Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/HashSetvBitSetTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/HashSetvBitSetTest.java?rev=1396215&r1=1396214&r2=1396215&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/HashSetvBitSetTest.java (original)
+++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/HashSetvBitSetTest.java Tue Oct 9 19:28:59 2012
@@ -34,21 +34,26 @@ public class HashSetvBitSetTest {
public void testTimes() {
timeHashSet(10); // warmup
timeBitSet(10); // warmup
- printTimes(0);
- printTimes(5);
- printTimes(10);
- printTimes(200);
- printTimes(50);
- printTimes(100);
- printTimes(1000);
- printTimes(2000);
+ long timeDiff = printTimes(0);
+ timeDiff += printTimes(5);
+ timeDiff += printTimes(10);
+ timeDiff += printTimes(200);
+ timeDiff += printTimes(50);
+ timeDiff += printTimes(100);
+ timeDiff += printTimes(1000);
+ timeDiff += printTimes(2000);
+ Assert.assertTrue(timeDiff <= 0);
}
- private void printTimes(int count) {
+ /**
+ * @return bitSet - HashSet
+ */
+ private long printTimes(int count) {
long hashSet = timeHashSet(count);
long bitSet = timeBitSet(count);
// If percent is less than 100, then bitset is faster
System.out.println("Ratio="+(bitSet*100/hashSet)+"% count="+count+" hash="+hashSet+" bits="+bitSet);
+ return bitSet - hashSet;
}
private static long timeHashSet(int count) {
@@ -119,17 +124,18 @@ public class HashSetvBitSetTest {
toRemove.set(10, 20);
timeBitSetRemoveAll(array, toRemove); // warmup
timeExtractRemoveAll(array, toRemove); // warmup
- printTimes(100,1);
- printTimes(100,10);
- printTimes(100,50);
- printTimes(100,100);
- printTimes(1000,10);
- printTimes(1000,100);
- printTimes(1000,500);
- printTimes(1000,1000);
+ long timeDiff = printTimes(100,1);
+ timeDiff += printTimes(100,10);
+ timeDiff += printTimes(100,50);
+ timeDiff += printTimes(100,100);
+ timeDiff += printTimes(1000,10);
+ timeDiff += printTimes(1000,100);
+ timeDiff += printTimes(1000,500);
+ timeDiff += printTimes(1000,1000);
+ Assert.assertTrue(timeDiff <= 0);
}
- private void printTimes(int arraySize, int bitSetSize) {
+ private long printTimes(int arraySize, int bitSetSize) {
int[] array = new int[arraySize];
BitSet remove = new BitSet();
for (int i = 0; i < bitSetSize; i++) {
@@ -139,6 +145,7 @@ public class HashSetvBitSetTest {
long extract = timeExtractRemoveAll(array, remove);
// If percent is less than 100, then direct use of bitset is faster
System.out.println("Ratio="+(bitSet*100/extract)+"% array="+array.length+" count="+remove.cardinality()+" extract="+extract+" bitset="+bitSet);
+ return bitSet - extract;
}
private long timeBitSetRemoveAll(int[] array, BitSet toRemove) {