定义gradle任务以运行caliper microbenchmark

时间:2012-04-11 04:28:03

标签: java gradle caliper microbenchmark

这可能更像是Gradle问题,而不是Caliper问题,但我仍然是Gradle的新手。我有兴趣在我的构建中提供一个可以使用Caliper运行一些基准测试的任务。我已经将Caliper添加到我的testCompile依赖项中,并且可以正常工作并将所有内容都删除。我想知道如何提供一个实际运行基准的任务。

是的,我已经知道了caliper-ci。我确实有一个Jenkins构建,但是它在云服务上还不允许我配置caliper-ci的使用,此外,我希望能够在提交对云的更改之前在本地运行。

1 个答案:

答案 0 :(得分:5)

事实证明这是一个使用JavaExec的简单案例(无论如何我都是新手):

task runBenchmark(type: JavaExec, dependsOn: test) {
    def vmVer = System.getProperty('java.version')
    def osName = System.getProperty('os.name').replaceAll('\\s','')
    def osArch = System.getProperty('os.arch')
    def fnameBase = "ver${version}_${osName}-${osArch}_jvm${vmVer}"
    def benchMarksDir = "${project.buildDir}/benchmarks"
    ant.mkdir(dir: benchMarksDir)
    def outStream = new FileOutputStream("${benchMarksDir}/${fnameBase}-out.txt")
    standardOutput = outStream
    main = 'org.funcito.benchmarks.MyBenchmark'
    classpath = sourceSets.test.runtimeClasspath
    args = ['--saveResults', "${benchMarksDir}/${fnameBase}.json", '-Jmode=-server,-client']
}