|
@@ -5,8 +5,7 @@
|
|
*/
|
|
*/
|
|
package org.redkalex.benchmark;
|
|
package org.redkalex.benchmark;
|
|
|
|
|
|
-import java.util.*;
|
|
|
|
-import java.util.concurrent.CompletableFuture;
|
|
|
|
|
|
+import java.util.concurrent.*;
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import org.redkale.net.ChannelContext;
|
|
import org.redkale.net.ChannelContext;
|
|
import org.redkale.net.http.*;
|
|
import org.redkale.net.http.*;
|
|
@@ -23,8 +22,6 @@ public class Service extends AbstractService {
|
|
|
|
|
|
private static final byte[] helloBytes = "Hello, world!".getBytes();
|
|
private static final byte[] helloBytes = "Hello, world!".getBytes();
|
|
|
|
|
|
- private final ThreadLocal<Random> localRandom = ThreadLocal.withInitial(Random::new);
|
|
|
|
-
|
|
|
|
@Resource
|
|
@Resource
|
|
private DataSource source;
|
|
private DataSource source;
|
|
|
|
|
|
@@ -42,14 +39,14 @@ public class Service extends AbstractService {
|
|
|
|
|
|
@RestMapping(name = "db")
|
|
@RestMapping(name = "db")
|
|
public CompletableFuture<World> findWorldAsync(ChannelContext context) {
|
|
public CompletableFuture<World> findWorldAsync(ChannelContext context) {
|
|
- return source.findAsync(World.class, context, 1 + localRandom.get().nextInt(10000));
|
|
|
|
|
|
+ return source.findAsync(World.class, context, 1 + ThreadLocalRandom.current().nextInt(10000));
|
|
}
|
|
}
|
|
|
|
|
|
@RestMapping(name = "queries")
|
|
@RestMapping(name = "queries")
|
|
public CompletableFuture<World[]> queryWorldAsync(ChannelContext context, int q) {
|
|
public CompletableFuture<World[]> queryWorldAsync(ChannelContext context, int q) {
|
|
final int size = Math.min(500, Math.max(1, q));
|
|
final int size = Math.min(500, Math.max(1, q));
|
|
final World[] worlds = new World[size];
|
|
final World[] worlds = new World[size];
|
|
- final Random random = localRandom.get();
|
|
|
|
|
|
+ final ThreadLocalRandom random = ThreadLocalRandom.current();
|
|
final CompletableFuture[] futures = new CompletableFuture[size];
|
|
final CompletableFuture[] futures = new CompletableFuture[size];
|
|
for (int i = 0; i < size; i++) {
|
|
for (int i = 0; i < size; i++) {
|
|
final int index = i;
|
|
final int index = i;
|
|
@@ -62,7 +59,7 @@ public class Service extends AbstractService {
|
|
public CompletableFuture<World[]> updateWorldAsync(ChannelContext context, int q) {
|
|
public CompletableFuture<World[]> updateWorldAsync(ChannelContext context, int q) {
|
|
final int size = Math.min(500, Math.max(1, q));
|
|
final int size = Math.min(500, Math.max(1, q));
|
|
final World[] worlds = new World[size];
|
|
final World[] worlds = new World[size];
|
|
- final Random random = localRandom.get();
|
|
|
|
|
|
+ final ThreadLocalRandom random = ThreadLocalRandom.current();
|
|
final CompletableFuture[] futures = new CompletableFuture[size];
|
|
final CompletableFuture[] futures = new CompletableFuture[size];
|
|
for (int i = 0; i < size; i++) {
|
|
for (int i = 0; i < size; i++) {
|
|
final int index = i;
|
|
final int index = i;
|
|
@@ -89,7 +86,7 @@ public class Service extends AbstractService {
|
|
}
|
|
}
|
|
final int size = Math.min(500, Math.max(1, q));
|
|
final int size = Math.min(500, Math.max(1, q));
|
|
final CachedWorld[] worlds = new CachedWorld[size];
|
|
final CachedWorld[] worlds = new CachedWorld[size];
|
|
- final Random random = localRandom.get();
|
|
|
|
|
|
+ final ThreadLocalRandom random = ThreadLocalRandom.current();
|
|
for (int i = 0; i < size; i++) {
|
|
for (int i = 0; i < size; i++) {
|
|
worlds[i] = cache.findAt(random.nextInt(10000));
|
|
worlds[i] = cache.findAt(random.nextInt(10000));
|
|
}
|
|
}
|