代码效率:通过TCP的Java传输文件
我想知道这两个试图通过TCP套接字发送大文件的块在性能方面的差异。 我找不到多少资源来解释它们的效率 A- B- 哪一个在传输延迟方面更好代码效率:通过TCP的Java传输文件,java,tcp,client-server,Java,Tcp,Client Server,我想知道这两个试图通过TCP套接字发送大文件的块在性能方面的差异。 我找不到多少资源来解释它们的效率 A- B- 哪一个在传输延迟方面更好 如果我将大小设置为1024或65536,又有什么区别?这将如何影响性能。直到文件最后一个字节到达的延迟基本相同。然而,出于以下原因,第一个更可取,尽管缓冲区要大得多: 数据开始提前到达 没有假设文件大小适合int 没有假设整个文件都可以放入内存,所以 它可以扩展到非常大的文件,而无需更改代码 直到文件最后一个字节到达的延迟基本相同。然而,出于以下原因,第一个
如果我将大小设置为1024或65536,又有什么区别?这将如何影响性能。直到文件最后一个字节到达的延迟基本相同。然而,出于以下原因,第一个更可取,尽管缓冲区要大得多:
int
直到文件最后一个字节到达的延迟基本相同。然而,出于以下原因,第一个更可取,尽管缓冲区要大得多:
int
以高效的方式编写代码将确保您不会浪费CPU(这是一件好事),但不会对受带宽(和网络延迟)限制的传输速度造成太大影响。我还有一个问题,我在接收方接收代码的方式是否会影响传输延迟。目前我正在使用它来接收:byte[]mybytearray=newbyte[filesize];bytesRead=is.read(mybytearray,0,mybytearray.length);当前=字节读取;do{bytesRead=is.read(mybytearray,current,(mybytearray.length-current));if(bytesRead>=0){current+=bytesRead;}代码A的两端应该是相同的,就像上面的第一个示例一样,正如我在这里所说的。我还有一个问题,我在接收方接收它的方式是否会影响传输延迟。目前我使用它来接收:byte[]mybytearray=new byte[filesize];bytesRead=is.read(mybytearray,0,mybytearray.length);current=bytesRead;do{bytesRead=is.read(mybytearray,current,(mybytearray.length-current));if(bytesRead>=0){current+=bytesRead;}代码a的两端应该是相同的,如上面的第一个示例,正如我在这里所说的。谢谢你,彼得。我将尝试使用不同的值进行实验,看看它对速度的影响。通过环回,你应该会看到不同,因为你的带宽非常高。谢谢你,彼得。我将尝试使用不同的值进行实验要查看它对速度的影响。通过环回,您应该看到不同,因为您的带宽非常高。
byte[] buffer = new byte[1024];
int number;
while ((number = fileInputStream.read(buffer)) != -1) {
socketOutputStream.write(buffer, 0, number);
}
byte mybytearray = new byte[filesize];
os.write(mybytearray);