`
Mojarra
  • 浏览: 130058 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

文件上传的秘密(三)性能和稳定性上的衡量

JVM 
阅读更多

文件上传的秘密系列之一, http://mojarra.iteye.com/blog/1412497

 

文件上传的秘密系列之二, http://mojarra.iteye.com/blog/1534821

 

对照著名的Apache Common File Upload这个组件, 做一下对比。选取两组文件,每组文件各包含三张照片。

第一组中三张照片的大小是,1.7M、1.7M、1.2M

第二组中三张照片的大小是,574K、588K、384K。

每组文件分别上传20次。计时每次接收文件所用的时间,单位ms.

 

测试的环境就是本机,配置为i5 2.3G/内存4G/硬盘5400转128G。 JDK 6.0.23 For MAC, 服务器Tomcat 7.0.21。

同一web app下,用Common File Upload和本系列中前面封装的文件上传类FileUploadParser分别写一个Servlet,保存文件到指定的目录中。测试中,长传文件使用FireFox 12英文版本。

 

 

第一组数据样本,FileUploadParser单次接收最短耗时36ms,  Apache的Common File Upload单次接收最短耗时67ms,FileUploadParser单次接收最长耗时161ms,Common File Upload单次接收最长耗时275ms。

 

5个最短的FileUploadParser单次接收耗时分别是36ms、36ms、36ms、37ms和37ms,5个最长的耗时是161ms、108ms,94ms、77ms和73ms。

从样本数据中看,Common File Upload对照数据是,5次最短耗时是67ms、69ms、72ms、73ms和73ms,5个最长的耗时是275ms、216ms,204ms、184ms和157ms。

 

cost: 161 
cost: 36 
cost: 37 
cost: 55 
cost: 41 

cost: 37 
cost: 39 
cost: 77 
cost: 108 
cost: 67 

cost: 39 
cost: 36 
cost: 38 
cost: 36 
cost: 53 

cost: 37 
cost: 37 
cost: 73 
cost: 94 
cost: 39 


Apache Common File Upload costs: 69 
Apache Common File Upload costs: 216 
Apache Common File Upload costs: 78 
Apache Common File Upload costs: 275 
Apache Common File Upload costs: 157 

Apache Common File Upload costs: 146 
Apache Common File Upload costs: 204 
Apache Common File Upload costs: 76 
Apache Common File Upload costs: 107 
Apache Common File Upload costs: 132 

Apache Common File Upload costs: 104 
Apache Common File Upload costs: 73 
Apache Common File Upload costs: 106 
Apache Common File Upload costs: 73 
Apache Common File Upload costs: 72 

Apache Common File Upload costs: 87 
Apache Common File Upload costs: 74 
Apache Common File Upload costs: 67 
Apache Common File Upload costs: 88 
Apache Common File Upload costs: 184 

 

 

 第二组数据样本,FileUploadParser单次接收最短耗时13ms,  Apache的Common File Upload单次接收最短耗时16ms,FileUploadParser单次接收最长耗时50ms,Common File Upload单次接收最长耗时107ms。

 

5个最短的FileUploadParser单次接收耗时分别是13ms、13ms、13ms、14ms和14ms,5个最长的耗时是50ms、36ms,19ms、17ms和17ms。

从样本数据中看,Common File Upload对照数据是,5次最短耗时是16ms、18ms、27ms、29ms和30ms,5个最长的耗时是107ms、80ms、75ms、61ms和43ms。

 

 

cost: 36 
cost: 14 
cost: 17 
cost: 13 
cost: 17 
cost: 14 
cost: 13 
cost: 14 
cost: 16 
cost: 14 
cost: 13 
cost: 16 
cost: 14 
cost: 13 
cost: 50 
cost: 15 
cost: 14 
cost: 15 
cost: 16 
cost: 19 


Apache Common File Upload costs: 107 
Apache Common File Upload costs: 27 
Apache Common File Upload costs: 42 
Apache Common File Upload costs: 43 
Apache Common File Upload costs: 41 
Apache Common File Upload costs: 61 
Apache Common File Upload costs: 80 
Apache Common File Upload costs: 45 
Apache Common File Upload costs: 39 
Apache Common File Upload costs: 29 
Apache Common File Upload costs: 32 
Apache Common File Upload costs: 61 
Apache Common File Upload costs: 16 
Apache Common File Upload costs: 30 
Apache Common File Upload costs: 38 
Apache Common File Upload costs: 40 
Apache Common File Upload costs: 75 
Apache Common File Upload costs: 38 
Apache Common File Upload costs: 40 
Apache Common File Upload costs: 18 
 

从测试取得的样本数据分析,无论是最小时间、还是样本数据的方差,最短耗时的方差、最长耗时的方差,Common File Upload除了在第二组数据中的最短单次耗时小幅落后外,其他的指标终大幅落后FileUploadParser. 而且,随着上传文件大小的增加,落后的幅度越大。

 

 

注:测试用的文件上传在本博客的附件中。

 

<原创内容,版权所有,如若转载,请注明出处,不胜感谢!仪山湖>

分享到:
评论
3 楼 yu_duo 2012-10-10  
这太高深了~~
2 楼 Mojarra 2012-07-08  
您是个细心的读者,这是很久以前的测试代码,最新的30~40%的领先是基于去掉InputStream/OutputSteam读写转化这个步骤测试的.


/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		String path = System.getProperty("user.home") + "/acf/";
		
		
		long s = System.currentTimeMillis();
		
		// Create a factory for disk-based file items
		FileItemFactory factory = new DiskFileItemFactory();

		// Create a new file upload handler
		ServletFileUpload upload = new ServletFileUpload(factory);

		// Parse the request
		try {
			List<FileItem> items = upload.parseRequest(request);
			for (FileItem e : items) {
				e.write(new File(path + e.getName()));
			}
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		System.out.format("Apache Common File Upload costs: %d %n", System.currentTimeMillis() - s);
		
	}
1 楼 wendal 2012-07-06  
你的示例, Common File Upload 还包含了Inputstream--> File的额外转换时间呢

相关推荐

    压力及稳定性分析--性能测试报告

    总结来说,【压力及稳定性分析--性能测试报告】是IT项目中的重要文档,它帮助开发团队和决策者理解系统的性能边界,识别性能问题,从而优化系统设计,提高用户体验。在整个测试过程中,性能分析是核心,它涉及到系统...

    衡量超级计算机的性能指标

    例如,“天河一号 A”硬件架构的分析中,就可以看到“天河一号 A”在基本组织架构上和之前的“天河一号”比较相似。“天河一号”系统共有 5120 个图形加速处理器(GPU)和 6144 个通用处理器(CPU),峰值速度达1206...

    自动化实验报告 - 典型系统动态性能和稳定性分析

    实验报告“自动化实验报告 - 典型系统动态性能和稳定性分析”主要关注的是二阶系统的动态行为和稳定性,这是自动化领域中的核心概念。在控制系统设计和分析中,了解系统对阶跃输入的响应以及如何调整参数以优化性能...

    典型系统的时域响应和稳定性分析

    《典型系统的时域响应和稳定性分析》 时域响应和稳定性分析是控制系统理论的重要组成部分,主要探讨系统在受到外部输入后如何响应,并判断系统是否稳定。在这个领域,频率响应法是一种常用的分析工具,它源于通信...

    性能可靠性稳定性分析 (1)1

    综上所述,性能测试和稳定性分析是确保IT系统高效、可靠运行的关键。通过对响应时间、并发用户数、吞吐量、性能计数器和稳定性指标的深入理解和计算,我们可以更好地识别和解决潜在的系统问题,提高服务质量。

    稳定性分析(文章用).rar_根轨迹分析_稳定_稳定性_稳定性分析_系统稳定性

    在系统稳定性方面,有三个基本的稳定性类型:绝对稳定性、相对稳定性和渐近稳定性。一个系统被认为是稳定的,如果所有闭环极点都位于s平面的左半部分。如果极点在虚轴上,系统可能表现为振荡,这称为临界稳定。而...

    算法的数值稳定性

    这份文档应该会阐述如何设计实验来测试算法的稳定性,比如选择哪些测试数据,如何定义和衡量稳定性,以及对结果的解释。通过阅读这份文档,我们可以深入理解数值稳定性的重要性,并学习到如何在实际操作中评估算法的...

    SenC(n=1-8)团簇稳定性和金属性的研究

    SenC(n=1-8)团簇稳定性和金属性的研究,岳莉,吴位巍,本文利用密度泛函理论框架下的BLYP交换关联函数对BenC (n=1-8)团簇稳定性和金属性进行较系统的研究。结果表明,C原子的掺杂不仅明显提�

    iSCSI,CIFS,NFS协议的性能评测.pdf

    在这份文档中,将重点分析和对比在不同操作系统环境下,即Windows系统和Linux系统中,三种常见的文件共享协议:iSCSI、CIFS和NFS的性能评测。这三种协议在IT行业中的网络存储和文件共享领域扮演着重要的角色。 首先...

    衡量计算机性能的主要标准

    综上所述,衡量计算机性能的标准主要包括响应时间、CPU时间、性能因子CPI、时钟频率、指令数等参数。常用的性能指标有MIPS和MFLOPS,它们分别用于评估整型运算能力和浮点运算能力。此外,通过分析技术、模拟技术和...

    Untitled2_稳定性叶瓣图_叶瓣图_切削叶瓣图_切削稳定性_颤振稳定_源码.zip

    总之,"Untitled2_稳定性叶瓣图_叶瓣图_切削叶瓣图_切削稳定性_颤振稳定_源码.zip"这个文件包提供了关于机械加工中颤振分析的工具和算法,对于优化切削工艺,减少颤振问题,提高生产效率和产品质量具有重要意义。...

    6 Sigma定义衡量阶段衡量系统分析 MSA.pptx

    衡量系统分析的目的是为了确定衡量系统的可靠性和稳定性,以便确保衡量结果的准确性和一致性。 六西格玛进程图是衡量系统分析的重要工具之一。它可以帮助我们了解衡量系统的整体性能,并对衡量系统进行优化和改进。...

    Web服务稳定性测试 负载测试 可靠性测试 测试报告

    Web服务的稳定性、负载测试和可靠性测试是保证系统性能和用户体验的关键环节。本文将深入探讨这些测试的概念,方法以及在实际测试过程中的应用。 首先,稳定性测试是衡量系统在长时间运行下保持正常服务的能力,...

    汽车使用性能与检测汽车制动性与操纵稳定性检测.ppt

    综上所述,汽车的制动性能和操纵稳定性是汽车安全性和驾驶舒适性的重要指标。通过科学的检测方法和优化的制动系统设计,可以提升汽车在各种环境下的行驶安全性。对于车辆使用者来说,了解这些知识有助于更好地理解和...

    神经网络指数稳定性分析的simulink仿真_神经网络指数稳定性的simulink仿真_神经网络_

    总结起来,神经网络指数稳定性的Simulink仿真是一种有效的分析方法,它可以帮助我们理解和优化神经网络的性能,尤其是在训练过程中避免陷入局部极小值或者不稳定的动态行为。通过对`simulation_ex3.mdl`和`...

    ISO车辆操纵稳定性

    ISO标准为国际公认的基准,用于衡量车辆在进行直线行驶、转向、制动等操作时的响应性和稳定性。这些标准通常包括但不限于以下几个方面: 1. 定义车辆操纵稳定性的参数:ISO标准详细定义了测量和评价车辆操纵稳定性...

    精品TI资料_运放稳定性分析连载

    【压缩包子文件的文件名称列表】:由于只有一个总的文件名“精品TI资料_运放稳定性分析连载”,这可能意味着压缩包内包含了多个部分或章节,每个章节可能分别探讨了运放稳定性的不同方面,如开环增益、波特图分析、...

Global site tag (gtag.js) - Google Analytics