2

我在 Ubuntu 10.04 机器上运行的 R 2.15.2(不给糖就捣蛋)的安装上安装了 FastRWeb 1.1-0。我希望使用生成的系统来运行 Web 服务。

我通过在 rserve.conf 中将 http.port 设置为 8181 并取消设置套接字目标来配置系统。我已将 .http.request 分配给 FastRWeb::.http.request。我使用 HTTP POST 在客户端和服务器之间交换 JSON blob(第二个 blob 的大小可能超过 150KB,并且不适合 HTTP GET 查询字符串。)

一切都是端到端的——我有一个小的客户端 R 脚本,它可以跨通道生成 JSON RPC 调用。我看到调用了 run 函数,并看到它返回。

但是,我遇到了一个重大的性能问题:从 run() 返回(包括对 done() 的调用)到 R 客户端获取返回值的时间,返回路径花费了超过 12 秒的时间。RCurl 似乎不是罪魁祸首;似乎有些东西需要 12 秒才能返回。

有人对在哪里看有什么建议吗?我可以轻松地转而使用 Apache 2.0 和 CGI​​,但老实说,我宁愿让一切都以 R 为中心。

4

1 回答 1

1

回答我自己的问题。

我用 Rprof()/Rprof(NULL) 对包装了 .http.request,并查看了每个例程花费的时间。事实证明,系统在 .run 的标准实现中在 URLDecode 中花费了大约 11 秒。这看起来像是核心中 URLDecode 中的缩放问题。

于 2013-01-02T12:56:37.970 回答