|
|
@@ -0,0 +1,63 @@ |
|
|
|
package com.github.yitter.test; |
|
|
|
|
|
|
|
import com.github.yitter.contract.IdGeneratorOptions; |
|
|
|
import com.github.yitter.idgen.YitIdHelper; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
import org.openjdk.jmh.annotations.Benchmark; |
|
|
|
import org.openjdk.jmh.annotations.BenchmarkMode; |
|
|
|
import org.openjdk.jmh.annotations.Level; |
|
|
|
import org.openjdk.jmh.annotations.Mode; |
|
|
|
import org.openjdk.jmh.annotations.OutputTimeUnit; |
|
|
|
import org.openjdk.jmh.annotations.Scope; |
|
|
|
import org.openjdk.jmh.annotations.Setup; |
|
|
|
import org.openjdk.jmh.annotations.State; |
|
|
|
import org.openjdk.jmh.annotations.Threads; |
|
|
|
import org.openjdk.jmh.runner.Runner; |
|
|
|
import org.openjdk.jmh.runner.RunnerException; |
|
|
|
import org.openjdk.jmh.runner.options.Options; |
|
|
|
import org.openjdk.jmh.runner.options.OptionsBuilder; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author suzhenyu |
|
|
|
* @date 2021/9/27 |
|
|
|
*/ |
|
|
|
// 测试方法平均执行时间 |
|
|
|
@BenchmarkMode({Mode.All}) |
|
|
|
// 输出结果的时间粒度为微秒 |
|
|
|
@OutputTimeUnit(TimeUnit.MILLISECONDS) |
|
|
|
@State(Scope.Thread) |
|
|
|
//@Threads(2) |
|
|
|
public class StartUpJmh2 { |
|
|
|
|
|
|
|
//1-漂移算法,2-传统算法 |
|
|
|
final static short method = 2; |
|
|
|
|
|
|
|
public static void main(String[] args) throws RunnerException { |
|
|
|
Options options = new OptionsBuilder().include(StartUpJmh2.class.getName() + ".*") |
|
|
|
.warmupIterations(1).measurementIterations(5).forks(2).build(); |
|
|
|
new Runner(options).run(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* setup初始化容器的时候只执行一次 |
|
|
|
*/ |
|
|
|
@Setup(Level.Trial) |
|
|
|
public void init() { |
|
|
|
IdGeneratorOptions options = new IdGeneratorOptions(); |
|
|
|
options.WorkerIdBitLength = 6; |
|
|
|
options.SeqBitLength = 10; |
|
|
|
options.BaseTime = System.currentTimeMillis(); |
|
|
|
options.Method = method; |
|
|
|
options.WorkerId = 1; |
|
|
|
|
|
|
|
// 首先测试一下 IdHelper 方法,获取单个Id |
|
|
|
YitIdHelper.setIdGenerator(options); |
|
|
|
YitIdHelper.nextId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Benchmark |
|
|
|
public void testGetPojo() { |
|
|
|
|
|
|
|
YitIdHelper.nextId(); |
|
|
|
} |
|
|
|
} |