Série: Java Old
java
61 lignes
· Mis à jour 2026-02-04
JMH_OrderBookBenchmark.java
Java_Old/advanced/concurrency_course/module06/src/concurrency/module06/JMH_OrderBookBenchmark.java
package concurrency.module06;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.infra.Blackhole;
import java.util.concurrent.TimeUnit;
/**
* JMH (Java Microbenchmark Harness) benchmark for {@link OrderBook} operations.
* Measures throughput of add+cancel and bestBid/bestAsk. Requires JMH dependencies.
*
* <p><b>Maven dependencies (pom.xml):</b>
* <pre>
* <dependency>
* <groupId>org.openjdk.jmh</groupId>
* <artifactId>jmh-core</artifactId>
* <version>1.36</version>
* </dependency>
* <dependency>
* <groupId>org.openjdk.jmh</groupId>
* <artifactId>jmh-generator-annprocess</artifactId>
* <version>1.36</version>
* </dependency>
* </pre>
*
* <p><b>Run:</b> mvn clean install && java -jar target/benchmarks.jar (with jmh-maven-plugin),
* or use the IDE JMH plugin.
*/
@State(Scope.Thread)
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Fork(1)
@Warmup(iterations = 2)
@Measurement(iterations = 3)
public class JMH_OrderBookBenchmark {
private OrderBook book;
/** Runs once per thread before benchmarks; populates the book with 100 levels each side. */
@Setup
public void setup() {
book = new OrderBook("BTC-USD");
for (int i = 0; i < 100; i++) {
book.addOrder(true, 100 - i * 0.01, 10, "u" + i);
book.addOrder(false, 101 + i * 0.01, 10, "u" + i);
}
}
/** Benchmark: one addOrder followed by cancelOrder. Blackhole consumes return values so JIT doesn't optimize away. */
@Benchmark
public void addAndCancel(Blackhole bh) {
long id = book.addOrder(true, 99.5, 1, "bench");
bh.consume(book.cancelOrder(id));
}
/** Benchmark: bestBid and bestAsk. Measures read path throughput. */
@Benchmark
public void bestBidAsk(Blackhole bh) {
bh.consume(book.bestBid());
bh.consume(book.bestAsk());
}
}
Articles liés
Java Old
java
Mis à jour 2026-02-03
Main.java
Main.java — java source code from the Java Old learning materials (Java_Old/Main.java).
Lire l'article →
Java Old
java
Mis à jour 2026-02-03
Student.java
Student.java — java source code from the Java Old learning materials (Java_Old/Student.java).
Lire l'article →
Java Old
java
Mis à jour 2026-02-03
01_Generics.java
01_Generics.java — java source code from the Java Old learning materials (Java_Old/advanced/01_Generics.java).
Lire l'article →
Java Old
java
Mis à jour 2026-02-03
02_Collections.java
02_Collections.java — java source code from the Java Old learning materials (Java_Old/advanced/02_Collections.java).
Lire l'article →
Java Old
java
Mis à jour 2026-02-03
03_Streams.java
03_Streams.java — java source code from the Java Old learning materials (Java_Old/advanced/03_Streams.java).
Lire l'article →
Java Old
java
Mis à jour 2026-02-03
CollectionsExample.java
CollectionsExample.java — java source code from the Java Old learning materials (Java_Old/advanced/CollectionsExample.java).
Lire l'article →