下面列出了怎么用org.openjdk.jmh.annotations.CompilerControl的API类实例代码及写法,或者点击链接到github查看源代码。
@CompilerControl(CompilerControl.Mode.INLINE)
private static void serverHandler(Blackhole bh, Http2Headers headers) {
for (int i = 0; i < requestHeaders.length; i += 2) {
bh.consume(headers.add(requestHeaders[i], requestHeaders[i + 1]));
}
// Sequence of headers accessed in NettyServerHandler
bh.consume(headers.get(TE_TRAILERS));
bh.consume(headers.get(CONTENT_TYPE_HEADER));
bh.consume(headers.method());
bh.consume(headers.get(CONTENT_TYPE_HEADER));
bh.consume(headers.path());
bh.consume(Utils.convertHeaders(headers));
}
@CompilerControl(CompilerControl.Mode.INLINE)
private static void clientHandler(Blackhole bh, Http2Headers headers) {
// NettyClientHandler does not directly access headers, but convert to Metadata immediately.
bh.consume(headers.add(responseHeaders[0], responseHeaders[1]));
bh.consume(headers.add(responseHeaders[2], responseHeaders[3]));
bh.consume(Utils.convertHeaders(headers));
}
@CompilerControl(CompilerControl.Mode.DONT_INLINE)
public int measure(Counter c) {
int s = 0;
for (int i = 0; i < 10; i++) {
s += c.inc();
}
return s;
}
@CompilerControl(DONT_INLINE)
public boolean onError(
final ValidationError error,
final long messageType,
final int tagNumber,
final AsciiFieldFlyweight value)
{
return false;
}
@CompilerControl(DONT_INLINE)
public MessageControl onField(final int tag, final AsciiBuffer buffer, final int offset, final int length)
{
bh.consume(tag);
bh.consume(buffer);
bh.consume(offset);
bh.consume(length);
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onGroupHeader(final int tag, final int numInGroup)
{
bh.consume(tag);
bh.consume(numInGroup);
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onGroupBegin(final int tag, final int numInGroup, final int index)
{
bh.consume(tag);
bh.consume(numInGroup);
bh.consume(index);
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onGroupEnd(final int tag, final int numInGroup, final int index)
{
bh.consume(tag);
bh.consume(numInGroup);
bh.consume(index);
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public boolean onError(
final ValidationError error,
final long messageType,
final int tagNumber,
final AsciiFieldFlyweight value)
{
bh.consume(error);
bh.consume(messageType);
bh.consume(tagNumber);
bh.consume(value);
return false;
}
@CompilerControl(CompilerControl.Mode.INLINE)
private static void serverHandler(Blackhole bh, Http2Headers headers) {
for (int i = 0; i < requestHeaders.length; i += 2) {
bh.consume(headers.add(requestHeaders[i], requestHeaders[i + 1]));
}
// Sequence of headers accessed in NettyServerHandler
bh.consume(headers.get(TE_TRAILERS));
bh.consume(headers.get(CONTENT_TYPE_HEADER));
bh.consume(headers.method());
bh.consume(headers.get(CONTENT_TYPE_HEADER));
bh.consume(headers.path());
bh.consume(Utils.convertHeaders(headers));
}
@CompilerControl(CompilerControl.Mode.INLINE)
private static void clientHandler(Blackhole bh, Http2Headers headers) {
// NettyClientHandler does not directly access headers, but convert to Metadata immediately.
bh.consume(headers.add(responseHeaders[0], responseHeaders[1]));
bh.consume(headers.add(responseHeaders[2], responseHeaders[3]));
bh.consume(Utils.convertHeaders(headers));
}
@CompilerControl(CompilerControl.Mode.DONT_INLINE)
public static void sink(int v) {
// IT IS VERY IMPORTANT TO MATCH THE SIGNATURE TO AVOID AUTOBOXING.
// The method intentionally does nothing.
}
@CompilerControl(CompilerControl.Mode.DONT_INLINE)
public void target_dontInline() {
// this method was intentionally left blank
}
@CompilerControl(CompilerControl.Mode.INLINE)
public void target_inline() {
// this method was intentionally left blank
}
@CompilerControl(CompilerControl.Mode.EXCLUDE)
public void target_exclude() {
// this method was intentionally left blank
}
@CompilerControl(CompilerControl.Mode.EXCLUDE)
private int anotherMethod(int res, int n){
return res +=n;
}
@CompilerControl(DONT_INLINE)
public MessageControl onField(final int tag, final AsciiBuffer buffer, final int offset, final int length)
{
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onGroupHeader(final int tag, final int numInGroup)
{
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onGroupBegin(final int tag, final int numInGroup, final int index)
{
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onGroupEnd(final int tag, final int numInGroup, final int index)
{
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onComplete()
{
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onNext()
{
return MessageControl.CONTINUE;
}
@CompilerControl(DONT_INLINE)
public MessageControl onComplete()
{
return MessageControl.CONTINUE;
}
@CompilerControl(CompilerControl.Mode.DONT_INLINE)
protected void backoff() {
}