问题标签 [caliper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1373 浏览

java - 在 Maven 的测试范围内从 Eclipse 运行 caliper

我在 Eclipse 中有一个 Java 项目,我的src/test目录中有 JUnit 测试。我还使用 Caliper 微基准向我的测试添加了一个类,我希望能够在 Eclipse 中运行这些测试。

由于 Caliper 代码是测试代码,我已将 Caliper 添加为 Maventest范围内的依赖项。这使得它在我运行 JUnit 测试时出现在类路径中,但是我看不到在类路径中运行具有测试依赖项的任意类的方法。我尝试做的是为 Java 应用程序添加一个新的运行配置,以为我可以CaliperMain使用正确的类作为参数启动,但是 Caliper jar 不在类路径上,我看不到如何添加它。

我不想将我的基准代码和依赖项移动到main范围内,因为它是测试代码!将它移到一个完全独立的项目中似乎严重过度。

0 投票
1 回答
993 浏览

java - 是否可以在 main 内部使用 IntelliJ 'run' 命令运行 caliper?

我是 caliper 的新手,我想知道我是否可以创建一个主要方法,然后右键单击并选择使用 IntelliJ 的“运行”?

当我尝试运行上述内容时,出现此错误:

另外,由于我使用的是 IntelliJ,并且我的卡尺是在 maven 中定义的(即测试范围):

我将如何从命令行运行 caliper?

0 投票
2 回答
1201 浏览

java - ByteBuffer.putLong 使用非本地 ByteOrder 快 2 倍

尽管广泛阅读了 JDK 源代码并检查了内在例程,但我还是无法一概而论。

我正在测试清除 a ByteBuffer,分配给allocateDirectusing ByteBuffer.putLong(int index, long value)。根据 JDK 代码,如果缓冲区是“本机字节顺序”,则这会导致单个 8 字节写入,或者字节交换,如果不是,则随后是相同的。

所以我希望本机字节顺序(对我来说是小端)至少与非本机一样快。然而,事实证明,非本机的速度要快约 2 倍。

这是我在 Caliper 0.5x 中的基准:

结果是:

这是一致的。如果我换成putLongputFloat本地订单的速度大约快 4 倍。如果你看看它是如何putLong工作的,它在非本地情况下做了更多的工作:

请注意,unaligned在任何一种情况下都是如此。本机和非本机字节顺序之间的唯一区别是Bits.swap有利于本机情况(小端)。

0 投票
1 回答
301 浏览

java - 如何在 Java1.6 中安装证书以便从 Caliper 工具上传工作

我正在使用 Caliper 运行一些基准测试并将结果上传到https://microbenchmarks.appspot.com/

但是,由于 SSL 的证书问题,上传失败(请参阅底部的堆栈跟踪)。

我该如何解决这个问题?

操作系统:Mac OS X Mavericks 10.9 JDK:1.6.0_27-b07-395.jdk

在尝试了其他一些 SO 解决方案后,我在我的 JDK 目录中看到:/Library/Java/JavaVirtualMachines/1.6.0_27-b07-395.jdk/Contents/Home/lib/security

有一个文件 cacerts 实际上是该文件的链接:

/System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts

但是那个文件不存在。

我尝试删除链接并使用假证书创建存储文件,如另一个响应中所述。现在它失败了:

严重:无法上传试用版 c8e684d4-ee41-4366-8334-ae65a9d0626f。考虑手动上传。com.sun.jersey.api.client.ClientHandlerException:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:找不到有效的证书路径请求的目标


0 投票
0 回答
180 浏览

java - google caliper 尝试将基准测试结果上传到 microbenchmarks.appspot.com 时出现多个 500 错误

尝试为正在运行的基准测试上传 JSON 结果文件时,我看到了多个HTTP 500错误。Caliper日志中充满了与以下类似的异常:

但是,我的帐户下的页面上确实显示了一份报告/runs,因此它似乎至少可以上传其中的一些。对指定的 URL执行curl POST任何失败的试验都会导致相同的错误。

有没有其他人遇到过这些错误?我的配置中是否缺少某些内容?

卡尺config.properties

卡尺版本:

系统属性:

此外,错误日志建议手动上传失败的结果。但是,我在Microbenchmarks Appspot 页面上看不到任何上传结果的选项。

编辑 1:基准启动命令:

0 投票
1 回答
221 浏览

java - caliper 基准测试中的非确定性分配行为

当通过 slf4j 使用时,我正在尝试对两种不同的 log4j 模式布局的性能进行基准测试。我正在使用卡尺(当前 HEAD 版本)。

这是我的基准课程:

当我运行它时,我得到这个错误:

我需要在基准测试中添加一些配置吗?或者我该如何解决这个问题?

0 投票
1 回答
200 浏览

java - Google Caliper:无法完成基准测试(工作人员在未生成数据的情况下退出)

当我尝试使用Caliper运行基准方法时,它会在完成任何测量之前退出。我在调试器中确认 Caliper 正在执行基准测试方法两次,当时它正在经历其试运行阶段。但是当它试图运行实验时,它在完成任何事情之前就退出了。

基准测试方法非常简单(虽然它调用了很多其他应用程序代码):

运行 with--verbose不会产生我可以看到的任何不同的输出。整个输出是:

我在 Windows 7 上运行,使用 JDK 1.7.0_40(以防万一)。我通过调试器运行 Caliper 代码,我看到它在这里退出:

pipeReaderFuture.isDone()返回假。我不确定为什么。没有写入 stderr 的错误。

0 投票
1 回答
2754 浏览

java - Caliper test using exec-maven-plugin is saying main method signature isn't valid

I'm trying to get Caliper working with maven, I haven't successfully ran a caliper benchmark test as of yet.

Caliper version: 1.0-beta-1

My benchmark:

My maven pom.xml has:

I ran:

mvn clean install mvn compile -P benchmarks -e -X

0 投票
2 回答
4839 浏览

java - 如何在maven中引用本地存储库?

我下载了源代码并像这样构建了卡尺:

现在 /target 文件夹有:

现在在我的 spring mvc 应用程序的 pom 文件中,如何引用我刚刚安装的这个本地存储库?

我使用这样的依赖关系引用卡尺:

但根据我的最后一个问题,我被建议从源代码构建以获取尚未发布的更新:Caliper test using exec-maven-plugin is say main method signature is not valid

所以我不确定如何引用我在本地构建并使用 maven 安装的这个卡尺版本。

0 投票
2 回答
512 浏览

java - 如何在没有 maven 的情况下使用 Caliper 基准测试版快照?

我被要求使用 Google 的 Caliper 项目来创建一些微基准测试。我非常想使用最新的 beta 快照的注释功能,但是除了一些小例子之外,我很难找到关于如何实际运行这个东西的好文档……有一个视频教程可以指导用户新的 Maven 集成功能,我也被要求不要使用。

现在我只是从他们的一个中剥离了一个小例子,并用我从另一个 SO 问题中收集到的一些其他信息进行了修改:

运行它会告诉我我没有设置大小的默认值。我无法追踪我应该把它放在哪里。

通过注释掉 @Param 行并为 setUp 中的数组声明赋予硬值来完全删除“大小”只会导致它决定“没有要进行的实验”,我想这是有道理的。

如果有任何最新的资源或教程可以指出我做错了什么(可能很多,老实说)我会非常感激。

编辑:

根据一些建议,我已对此进行了更新:

我正在运行 beta 快照并将 Benchmarks 类作为参数传递。我收到以下信息:

它似乎没有检测到任何仪器。我没有传入任何内容,因为它在文档中提到它只是使用默认分配、运行时(这对我的目的来说很好)。

双重编辑:发现了那个问题,愚蠢的错误。一旦我确认它会做一个快速的记录。