我可以让Java更快吗?

Syx*_*yxx -8 java networking

我正在制作一个文件传输程序,我需要永远传输这个800kb的测试图片.显然,我不想花费30分钟来处理每一mb的数据,所以我很好奇是否有任何方法可以加速我的代码或Java.我听说过分配额外的RAM,但从未调查过.

如果有人能为我的代码找到一个更好的算法,那么我可能不得不步入C++或C并再试一次.

服务器代码块:

if(file.exists()){
    for(long l=0;l<file.length();l++){
        out.writeByte(fIS.read());
    }                   
}
Run Code Online (Sandbox Code Playgroud)

其中fIS是FileInputStream,out是传出的DataOutputStream.其余的代码基本上是发送长度和标志,但我可以添加,如果请求.

客户代码:

b = new byte[len];
for(int x=0;x<len;x++){
    b[x] = dIS.readByte();
}
fOS.write(b);
Run Code Online (Sandbox Code Playgroud)

其中len是服务器所需文件的读取长度,b是组成文件的字节数组,dIS是服务器的输入流,fOS是FileOutputStream.

我也尝试使用Readers和readLine()与writeChars()和readChar(),但这似乎等同于大约相同的事情.

Str*_*lok 8

一次读取一个字节的文件,一次一个字节地通过网络发送,在任何语言中都会很慢:)

考虑使用BufferedInputStream进行读取,使用BufferedOutputStream进行写入.

  • +1是建设性的,而不是"JAVA AINT SLOW,你应该感觉不好". (3认同)