我有一个maven项目,相关的html {
background-color: white;
}
body {
position: relative;
margin: 0;
padding: 0;
overflow: hidden;
background-color: silver;
}
.absolute {
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 50px;
background-color: darkblue;
}
.wrapper {
position: relative;
overflow:hidden;
width: 50%;
height: 200px;
overflow: hidden;
background-color: yellow;
}
.wrapper > .absolute {
background-color: darkcyan;
}
为
<div class="absolute"></div>
<h1>Some title</h1>
<div class="wrapper">
<div class="absolute"></div>
<h1>Some title</h1>
</div>
我按照官方示例here 。
我的pom.xml
课程如下:
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>0.1</version>
</dependency>
当我通过Eclipse运行时,我仍然收到以下错误。
App.java
答案 0 :(得分:4)
问题是JMH默认情况下会查找目录/META-INF/MicroBenchmarks
以查找要运行的基准测试,但Maven不会将类编译到此目录。要使其在Eclipse中运行,请参阅this answer。
但是,我建议您直接在命令行上运行基准测试(Eclipse可能会增加一些开销)。
我注意到您使用的是版本0.1,这是JMH的第一个版本。最好更新到上一个版本。开始使用JMH的最佳方法是使用原型jmh-java-benchmark-archetype
生成项目:
$ mvn archetype:generate \
-DinteractiveMode=false \
-DarchetypeGroupId=org.openjdk.jmh \
-DarchetypeArtifactId=jmh-java-benchmark-archetype \
-DgroupId=org.sample \
-DartifactId=jmh-test \
-Dversion=1.0
这将使用预先配置的最新JMH版本从头开始生成Maven项目,而无需担心打包。然后,您可以将此新项目作为现有Maven项目导入Eclipse,并开始编写基准编码。
之后,您只需要运行:
$ cd jmh-test/
$ mvn clean install
$ java -jar target/benchmarks.jar
为了让您快速入门,这是一个示例基准测试(无所事事......)。
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
@Warmup(iterations = 5, time = 1000, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 1000, timeUnit = TimeUnit.MILLISECONDS)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Fork(3)
@State(Scope.Benchmark)
public class StreamTest {
@Benchmark
public void benchmark() {
// code here
}
}