gpt4 book ai didi

java - JMH - 以编程方式设置 "lines"分析器的 "stack"参数

转载 作者:行者123 更新时间:2023-12-01 20:52:40 27 4
gpt4 key购买 nike

在 JMH StackProfiler.class 中接受多个参数:“lines”、“top”、“detailLine”等。

在命令行上可以这样定义参数值:

java -jar my-benchmarks.jar -prof stack -jvmArgsAppend -Djmh.stack.lines=3
  • 是否有一种编程方式来提供这些值?

看似显而易见

new OptionsBuilder().addProfiler("stack").jvmArgsAppend("-Djmh.stack.lines=3")

@Fork(jvmArgsAppend="-Djmh.stack.lines=3")

System.setProperty("jmh.stack.lines", "3");
...
new Runner(opt).run();

没有达到理想的效果。

最佳答案

您必须使用非常旧的 JMH,因为堆栈分析器已经接受选项:

$ java -jar jmh-samples/target/benchmarks.jar -prof stack:help
Usage: -prof <profiler-name>:opt1=value1,value2;opt2=value3

Options accepted by org.openjdk.jmh.profile.StackProfiler:

[...]

lines=<int> Number of stack lines to save in each stack trace.
Larger values provide more insight into who is
calling the top stack method, as the expense of more
stack trace shapes to collect. (default: [1])

[...]

无法从注释中访问此内容,但 Java API 接受探查器选项字符串:

/**
* Add the profiler in the run
* @param profiler profiler class
* @param initLine profiler options initialization line
* @return builder
*/
ChainedOptionsBuilder addProfiler(Class<? extends Profiler> profiler,
String initLine);

/**
* Add the profiler in the run
* @param profiler profiler class name, or profiler alias
* @param initLine profiler options initialization line
* @return builder
*/
ChainedOptionsBuilder addProfiler(String profiler, String initLine);

所以,像这样的东西应该有效:

.addProfiler("stack", "lines=3")

关于java - JMH - 以编程方式设置 "lines"分析器的 "stack"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com