3

我目前正在尝试使用谷歌代码项目 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/ failed: Internal Server Error”。当我更改 Runner.run 方法的代码以便它也打印 RuntimeException 的堆栈跟踪时,它如下所示(%APIKey% 在我的 .caliperrc 文件中存在“APIKey”的字符串):

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)
4

1 回答 1

3

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

于 2011-01-30T00:00:41.920 回答