小编Spa*_*tan的帖子

R 中是否有比 readLines 更快的东西 - 或者我如何找出读取连接速度如此慢的原因?

我在c(客户端)和R(R充当服务器..使用RStudio)之间有一个套接字连接。C在R中发送一串5个数字。例如:

1 16.29 3.8 0 0
Run Code Online (Sandbox Code Playgroud)

在 RI 中,我使用以下方式接收字符串:

    con <- socketConnection(host="localhost", port = 8080, blocking=TRUE,
                        server=TRUE, open="r+")
Run Code Online (Sandbox Code Playgroud)

下一行是:

helloTall <- readLines(con,1)
Run Code Online (Sandbox Code Playgroud)

这些行读起来很好,但问题是我必须非常频繁地执行此操作(这是一个时间步长耦合练习,因此我必须执行此操作 > 1000 次,在某些情况下超过 500k 次)。

readLines 对于此类工作来说非常慢,而 readChar 也好不到哪儿去。是否有其他(更快)的方法来从连接读取上述短字符串?

我正在使用 R 3.5.2。

更新:鉴于目前还没有回复,这里还有几点。有没有一种快速的方法可以从套接字读取 5 个数字?我的理解是这些是作为字符串出现的。readLines 需要 1 分钟来读取这 5 个数字,因此在我的情况下,如果时间步长超过 5000,我将需要 >5000 分钟!

更新 2:我现在也尝试了“扫描”连接的内容,但速度同样慢:

hello2<-scan(con, sep=" ")
Run Code Online (Sandbox Code Playgroud)

读完这5个数字也需要一分钟。这是否意味着 con 有很多空值或空格或某些会减慢读取其内容的速度?我对人际关系几乎一无所知。

根据其中一条评论的请求,我还发布了本例中作为客户端的 C 代码(请注意,本例中的 C 代码是从 Fortran 程序调用的):

// Client side C/C++ program to demonstrate Socket programming 
#include <stdio.h> 
#include <sys/socket.h> 
#include <stdlib.h> 
#include <netinet/in.h> 
#include <string.h> …
Run Code Online (Sandbox Code Playgroud)

c sockets r

2
推荐指数
1
解决办法
1045
查看次数

标签 统计

c ×1

r ×1

sockets ×1