我正在使用java在桌面应用程序中工作.在我的应用程序中,我必须执行速度测试,它将显示文件上传和下载速度.
对于上传测试,我将一个小测试文件上传到FTP服务器,并根据我计算文件上传速度所花费的时间.同样我正在下载测试文件格式服务器并计算下载速度.
但是我得到的结果与实际的FTP文件上传和下载速度不匹配.似乎与FTP服务器的建立连接正在增加时间,因此我计算的结果速度较小.
这是我正在使用的文件上传代码:
public int getTransferRate(File filename)
{
int trRate = 0;
try {
OutputStream fout = null;
InputStream bin = null;
connect(ftpUser,ftpPass,ftpServer);
ftp.setFileType(FTPSClient.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
fout = ftp.storeFileStream("testuploadfile");
bin = new FileInputStream(filename);
byte[] b = new byte[8192];
int bytesRead = 0;
long startTime = System.currentTimeMillis();
long endTime = 0;
while ((bytesRead = bin.read(b)) != -1) {
fout.write(b, 0, bytesRead);
bytesUploadedSet += bytesRead;
}
endTime = System.currentTimeMillis();
trRate = (int) ((float) bytesUploadedSet / (endTime - startTime));
} catch (IOException ex) {
Logger.getLogger(FTPFileStorageService.class.getName()).log(Level.SEVERE, null, ex);
}
return trRate;
}
Run Code Online (Sandbox Code Playgroud)
你能建议任何链接或某种方式来获得最近的上传和下载速度.
我感谢您的宝贵建议.
首先,filezilla 可能使用本机代码,这比您正在使用的代码更快。
为了进行测试,建立连接并尝试上传许多文件,大约 20 个左右..这应该可以很好地了解结果..通常,还将输出记录到逗号分隔的测试文件或其他文件中,您可以稍后将其导入到超越并分析。如果你想做一些硬核性能测试,你可以使用 JMeter 之类的东西。
在任何类型的性能测试中,具有大样本量(大量样本结果)都会给出最准确的结果。
| 归档时间: |
|
| 查看次数: |
6578 次 |
| 最近记录: |