【问题标题】:Caliper : how to post online results?卡尺:如何发布在线结果?
【发布时间】:2011-01-30 08:00:41
【问题描述】:

我目前正在尝试使用 google 代码项目的 wiki 上提供的少量文档来解决 Caliper。在设法运行了一些基准测试之后,我现在想将结果发布到网上,这样我就可以比在命令行上更清楚地阅读它们。

我按照 wiki 上的说明访问了 microbenchmarks.appspot.com 网站并将 API 密钥复制到我的“.caliperrc”文件中。附带说明一下,这个网页告诉我“.caliperrc”文件应该是“在 Windows 上:C:\.caliperrc”,但实际上,Caliper 在 Windows 上的 %HOME%\.caliperrc 中搜索(至少对于七):c:\users\%login%\.caliperrc.

有了这个,Caliper 确实尝试上传结果......但它失败并显示消息“发布到 http://microbenchmarks.appspot.com:80/run/ 失败:内部服务器错误”。当我更改 Runner.run 方法的代码以便它也打印 RuntimeException 的堆栈跟踪时,它会如下所示(%APIKey% in there is the String for 'APIKey' in my .caliperrc file):

java.lang.RuntimeException: Posting to http://microbenchmarks.appspot.com:80/run/ failed.
    at com.google.caliper.Runner.postResults(Runner.java:206)
    at com.google.caliper.Runner.run(Runner.java:96)
    at com.google.caliper.Runner.main(Runner.java:405)
    at com.google.caliper.Runner.main(Runner.java:417)
    at collections.ArrayListBenchmark.main(ArrayListBenchmark.java:119)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://microbenchmarks.appspot.com:80/run/%APIKey%/collections.ArrayListBenchmark
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at com.google.caliper.Runner.postResults(Runner.java:200)
    ... 4 more
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://microbenchmarks.appspot.com:80/run/%APIKey%/collections.ArrayListBenchmark
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at com.google.caliper.Runner.postResults(Runner.java:188)
    ... 4 more

我是否错过了我应该遵循的步骤?如果重要的话,我在 Windows 7 64 位上使用以下 Java 版本直接从 svn 运行 Caliper 源代码:

java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)

【问题讨论】:

  • 奇怪。您的 .caliperrc 文件是否包含这样的值,包含 32 个十六进制数字? apiKey:6c3787f0-6d59-6234-8090-63aa0f200d71

标签: java benchmarking caliper


【解决方案1】:

我已将此报告为 Caliper bug 113。在解决此问题之前,作为一种(蹩脚的)解决方法,您应该在美国语言环境中运行 JVM。在你的 main 方法中,调用Locale.setDefault(Locale.US)

【讨论】:

  • 正确的标记...将默认语言环境设置为 Locale.US 就可以了。现在我只需要找到如何删除已上传的结果(这是我用来测试上传的“虚拟”结果:)。非常感谢您的快速答复。
  • 仅供参考,这在 Caliper 中已修复。如果您从 SVN 获取 r284 或更高版本,您将获得一个不需要 Locale hack 的 .jar。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 2018-12-22
  • 1970-01-01
相关资源
最近更新 更多