track the total searches and display the avg took
This commit is contained in:
parent
dae949b8ce
commit
d9ce5da85f
|
|
@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.lionsoul.ip2region.xdb.InetAddressException;
|
import org.lionsoul.ip2region.xdb.InetAddressException;
|
||||||
|
|
@ -104,15 +105,16 @@ public class Ip2RegionTest {
|
||||||
|
|
||||||
byte[] v4Bytes = Util.parseIP("113.92.157.29");
|
byte[] v4Bytes = Util.parseIP("113.92.157.29");
|
||||||
byte[] v6Bytes = Util.parseIP("240e:3b7:3272:d8d0:db09:c067:8d59:539e");
|
byte[] v6Bytes = Util.parseIP("240e:3b7:3272:d8d0:db09:c067:8d59:539e");
|
||||||
final int threads = 50;
|
final int threads = 100;
|
||||||
final Ip2Region ip2Region = Ip2Region.create(v4Config, v6Config);
|
final Ip2Region ip2Region = Ip2Region.create(v4Config, v6Config);
|
||||||
final CountDownLatch latch = new CountDownLatch(threads);
|
final CountDownLatch latch = new CountDownLatch(threads);
|
||||||
final long startTime = System.currentTimeMillis();
|
final AtomicInteger count = new AtomicInteger(0);
|
||||||
|
final long tStart = System.nanoTime();
|
||||||
for (int i = 0; i < threads; i++) {
|
for (int i = 0; i < threads; i++) {
|
||||||
final Runnable t = new Runnable() {
|
final Runnable t = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
for (int i = 0; i < 2000; i++) {
|
for (int i = 0; i < 5000; i++) {
|
||||||
final byte[] ipBytes = i % 2 == 0 ? v4Bytes : v6Bytes;
|
final byte[] ipBytes = i % 2 == 0 ? v4Bytes : v6Bytes;
|
||||||
try {
|
try {
|
||||||
final String region = ip2Region.search(ipBytes);
|
final String region = ip2Region.search(ipBytes);
|
||||||
|
|
@ -124,6 +126,8 @@ public class Ip2RegionTest {
|
||||||
} catch (InetAddressException | IOException | InterruptedException e) {
|
} catch (InetAddressException | IOException | InterruptedException e) {
|
||||||
log.errorf("failed to search(%s): %s", Util.ipToString(ipBytes), e.getMessage());
|
log.errorf("failed to search(%s): %s", Util.ipToString(ipBytes), e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count.incrementAndGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
|
|
@ -133,8 +137,8 @@ public class Ip2RegionTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
latch.await();
|
latch.await();
|
||||||
final long costs = System.currentTimeMillis() - startTime;
|
final long costs = System.nanoTime() - tStart;
|
||||||
log.debugf("all search finished in %dms", costs);
|
log.debugf("%d searches finished in %dms, avg took: %dµs", count.get(), costs / 1000_000, costs / count.get() / 1000);
|
||||||
ip2Region.close();
|
ip2Region.close();
|
||||||
log.debugf("ip2region closed gracefully");
|
log.debugf("ip2region closed gracefully");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue