推荐六款WEB上传组件性能测试与比较
作者:
是否有这样一种WEB上传组件,既要能够实现快速上传(还要能上传特大文件),又能够尽量减少服务器资源占用率呢?
随着网络大潮的持续深入,企业管理网络化已成为一种趋势,越来越多的企业用户把自己的MIS、OA及各类管理系统搬到了WEB上,深刻地体现了软件“人性化”的一个方面――你不需要安装软件,只要你有操作系统,只要你有浏览器,就可以使用我的软件!
但这些使用简单方便的WEB页面,却有一点经常让人感到恼火,当你想上传一些资料或图片到WEB上的时候,发觉稍大点的文件的上传速度慢得让人难以忍受,或者干脆就让你用FTP上传;更有一些企业用户想在网上实现视频播放,可文件太大,用WEB页面上传难以实现,用FTP上传又要求网站维护人员必须具有一定的FTP上传知识,真是左右为难!
那么,是否有这样一种WEB上传组件,既要能够实现快速上传(还要能上传特大文件),又能够尽量减少服务器资源占用率呢?
目前,网络上使用的上传方式大致分为两类,一类是使用经过编译的组件(DLL文件)进行上传,要使用该上传方式必须在服务器上安装上传组件或在服务器上进行注册组件方可使用;一类是使用未编译的代码类进行上传,无需在服务器上注册即可使用。这两类组件各有十几种,如AspSmartUpload,AspUpload,SA FileUp,LyfUpload,化境无组件上传类……等等。在众多的上传组件中,笔者抽取了个人认为具有代表性的六种上传组件来进行测试,以求得它们之间的性能对比。
一、 为什么选它?
1、Asp.net自带上传组件:微软公司最新开发出来的.net自带的上传组件,.net策略是微软公司在新世纪的一个豪赌,这个上传组件想必出手不凡,值得一看。
2、AspUpload3.0:一个享有盛誉的老牌上传组件,该版本是最新版本,据说非常不错,只不过…咳咳…它不是免费的,要xxx美元呢,提供30天试用期(便宜没好货?)。
3、SA FileUp4.0:这也是要钱的主,该版本为最新版,有2个月的试用期,是所有上传组件中最胖的(接近10M),就冲着它的体积,是不是该选它呢?
4、LyfUpload1.2B:该组件是国内拥有使用用户最多的上传组件,因为它免费,因为它稳定,因为它有丰富的中文帮助,最主要的是它是中国造的!
5、化境无组件上传类:该组件类在个人用户中使用最广泛(免费),因为个人用户一般是用的免费空间或收费空间,服务器提供商大多不提供上传组件支持,只能写在程序里面了。
6、 梁无惧无组件上传类:之所以介绍这个组件类,是因为作者自夸比化境无组件上传类速度快50倍,口气如此之大,看来不介绍它是不行的了(据作者说该类也是从化境无组件类中修改而成的,青出于蓝而胜于蓝)
二、 上传组件技术参数表
三、 测试目的
通过相对严格的测试方法,测试各组件之间的上传性能,以选择最适合自己要求的组件
四、 测试环境
1、网络环境:单位内部局域网,光纤主干,交换机百兆到桌面。
2、服务器硬件配置:P41.7G主机(个人机),512MDDR内存,7200转IDE普通硬盘
3、服务器软件配置:WIN2000 SERVER SP2,IIS5.0,IE6.0,.NET环境
4、客户机硬件配置:AMD毒龙750,256MSD内存,5400转IDE普通硬盘
5、客户机软件配置:WIN2000 SERVER SP2,IIS5.0,IE5.0
五、 测试方法
1、测试时间:2003-1-12(星期天,网络使用低峰期。)
2、测试方式:共分8个测试阶段,从1到8阶段各提供一个专用的上传测试文件,每个上传组件分别循环测试三次,取三次成绩的平均值为该阶段测试标准成绩。
测试文件列表:
六、 测试结果
1、第一组测试结果
文件名称:上传测试文件01.doc 文件类型:word文档 文件大小:65536 字节
(说明:传输比假设最高传输速度者为100%,统计其它传输率与它的对比,下同。)
上传速度对比图
CPU使用记录图
3、第三组测试结果
上传速度对比图
CPU使用记录图
(从左至右为:asp.net,aspupload3,safileup4.01,lyfupload, 梁无惧无组件上传类, 化境无组件上传类)
点评:
这一组数据情况发生了有趣的变化,第一名与最后一名的位子仍然不动,但原来默默无闻的FileupV4.01组件的成绩却有了明显的提高,从第一组测试成绩到现在,该组件与其他组件的差距在不断的缩小,本次测试更是在其他组传输速度出现普遍出现下降的情况下,它反而提升了传输速度,这说明该组件的优势之处并不在上传小文件,文件越大,该组件的性能越能够体现。
从CPU使用记录图上看,各组软件之间的CPU占用图形均达到了100%的占用,但也出现了细微的变化,其中,.net自带组件的图形最好,呈现一种瞬间达到的状态,头部为尖形;aspupload3组件在CPU占用率达到100%前曾有短暂的CPU占用小高峰,之后才达到100%占用,FileupV4.01组件情形类似,只是CPU100%占用的时间比较长些;Lyfupload1.2B组件与梁无惧无组件上传类在上传前并未先形成较小的CPU占用率,而是一开始就达到,直到结束上传文件,才降低了占用率;化境无组件上传类的情况是所有上传组件中最不理想的,长时间的100%CPU占用率,而仅仅是在上传一个2.3M的文件而已,竟然出现了整整超过70秒钟的100%CPU占用率.
4、第四组测试结果
说明:asp.net测试记录时间三次均为0.1563秒,但从CPU占用图表上明显可以看出测试自动记录的时间不准确(原因不明),通过估算CPU占用图上的时间,大约为4秒左右,测试6情况与此相同
上传速度对比图
CPU使用记录图(化境无组件上传类图形未录入)
(从左至右为:asp.net,aspupload3,safileup4.01,lyfupload, 梁无惧无组件上传类)
点评:
本组测试数据发生了根本性的变化。测试上传数据为7M,一般应用中很少有如此大的上传量,在上传量大幅度增加的时候,各组件上传性能的优劣完全一目了然。.net自带组件在本组测试数据中脱颖而出,远远超出其他上传组件(超过一倍以上),上传速度之快、占用CPU时间之短令人侧目,唯一遗憾的是CPU占用率还不能拿到第一;ASPUPLOAD3组件也表现出了优秀的性能,它的CPU占用率是六个组件当中最小的,仅仅在40%左右;FileupV4.01组件的性能居于ASPUPLOAD之后列第三,从CPU占用图形上看,两者CPU占用图走势非常相似,差别仅是所用时间长一点,CPU占用率稍高一点;Lyfupload1.2B组件与梁无惧无组件上传类成绩雷同,CPU占用图走势几乎一样,CPU占用时间达到22秒,而且从开始到结束均为100%占用,不能令人满意;居最后的化境无组件上传类的情况最不理想,由于长达200余秒的100%CPU占用率,令其CPU占用图都无法容纳得下它,小庙难以容下大菩萨啊,它的图形只好不列入观看了。
从CPU占用图上看,六个上传组件明显分成了两种截然不同的传输数据风格,前三种上传组件在上传较大数据时,其传输率竟然比上传2M文件时大幅提高,而且CPU占用率大大下降,最低竟然达到40%;后三种上传组件上传较大数据时,传输率进一步下降,CPU占用率进一步提高,所耗上传时间相应增加。从两种传输风格来看,前一种的三个组件均为国外组件,后一种的三个组件均为国内组件,这能说明什么问题呢?
5、第五组测试结果
上传速度对比图
CPU使用记录图(后三种组件CPU图形未录入)
(从左至右为:asp.net,aspupload3,safileup4.01)
点评:
本组测试由于化境无组件上传类测试成绩较差,早早退出了比赛行列。
本组测试文件达到14M,各组件的上传速度又出现大幅度下降,虽然如此,.net自带组件成绩仍然是遥遥领先,紧随其后的是aspupload3组件与FileupV4.01组件,Lyfupload1.2B组件与梁无惧无组件上传类虽然还能跟上前者的步伐不至于被淘汰,但上传时间均已超过100秒,而且其巨大的CPU占用率就像一块千斤大石般压得人喘不过气来(超过100秒钟的100%CPU占用率)。
从CPU占用图上来看(仅列三种图形,后两种上传组件因为图形单调毫无变化,没有参考价值),.net自带组件占用CPU时间最短,aspupload3组件CPU占用率最低,占用时间最长的是FileupV4.01组件。三者在达到100%CPU占用率之前,均出现明显的CPU占用率小高峰,之后才出现100%的占用率。
6、第六组测试结果
说明:asp.net组件三次上传时间分别记录为:10.2969,10.1563,10.23434,但从CPU运行图上观察大约在19秒左右,结果以此为准
上传速度对比图
CPU使用记录图
(从左至右为:asp.net,aspupload3,safileup4.01)
点评:
由于Lyfupload1.2B组件与梁无惧无组件上传类的上传时间达到惊人的450秒,而且在上传期间完全处于100%的CPU占用率,已没有再进行测试的必要性了,因此只测试一组数据作为参考。
本组测试又出现了奇怪的现象,前三个上传组件的上传速度在文件大小扩大一倍的基础上反而增加了,增幅最大的FileupV4.01更达到惊人的70%提升;后两个组件上传速度随着文件的增大等比例的下降。从速度上看,仍然是asp.net组件的速度领先,其次的aspupload3组件仅仅是它的50%,更不用说最低速度的后两个组件了,只及asp.net组件的4%。
从CPU使用记录图看,前三个组件的图形走势非常相像,都是先形成一段较低CPU占用率的波形,最后猛然攀升,达到100%CPU占用率,其中Aspupload3组件的CPU占用率是最低的,asp.net组件占用率最高,FileupV4.01居中但在三者中所用时间最长 。
7、第七组测试结果
说明:asp.net组件三次上传记录数据分别为:4.671875,3.328125,3.328125,但从CPU运行图上看大约在35秒之间,结果以此为准,后三种上传组件因速度太慢,已不具可比性,不参与测试
CPU使用记录图
(asp.net组件)
(aspupload3)
(safileup4.01)
说明:
本次所上传的文件高达110M,如此大的文件上传实际需求较少,但如果是视频播放的话就需要上传此类或更大的文件,上传时间较长,更要求不能对服务器的正常运行造成影响。
更为令人奇怪的是,三个组件的上传速度居然又大幅增长,尤其以asp.net组件的增长幅度令人恐怖,几乎达到100%。这一点从CPU占用图上也可以看出,asp.net组件以较高的CPU占用率在最短的时间内就完成了110M文件的上传,而最大的变化在于这三个组件的CPU占用率发生了本质的变化,在上面的所有测试中,除了小文件上传外,毫无例外的都出现过100%CPU占用率的现象,但此次居然并未出现!其中,aspupload3组件更是长时间运行在30~40%的CPU占用率内,可以说在上传大文件时,几乎就可以不考虑对服务器的影响而且速度更快。
8、第八组测试结果
说明:本次测试数据超过200M,asp.net组件上传过程中无故中断,无法上传(重试多次)
上传速度对比图
CPU使用记录图
(safileup4.01)
(aspupload3)
说明:
为了最终看看上传组件上传超大型文件的表现,特地上传了一个达到近230M大小的文件,一般而言,极少有这样的上传需求,所以此次测试仅供参考,只有一个测试数据。
在上传过程中,意外的发现asp.net组件竟然无法上传这个文件,连续多次测试并修改配置文件,最终仍是无法上传(后查明asp.net允许最大的上传文件为200M)。故asp.net的上传测试只有无奈放弃。
从数据上看,aspupload3组件的传输速度仍有小幅提高(提高约40K左右),safileup4.01组件有小幅下降。从CPU使用记录图看,CPU占用率进一步下降,aspupload3组件CPU占用率仅在30%以下,safileup4.01组件稍高。
附件:六种上传组件传输速度走势图
七、写在后面:
花了好大功夫,终于把这个测试做完了。
做完了之后,心头反而有点沉重。
从测试的数据来看,国内的上传组件与国外的上传组件相比,技术明显不在一个档次上。国内的上传组件大多为免费使用,均为最简单的读取二进制数据方式进行上传,技术上没有突破,上传小文件时还可以,上传较大文件时,上传速度急剧下降,并且普遍CPU占用率极高,一般均为全过程的100%CPU占用率;而国外的上传组件已形成产业,除asp.net组件搭配在.net环境中免费使用外,其余二者均为有偿使用(aspupload3组件使用费高达500美元),在技术上,采用了某种我们未知的数据读取方式,使上传速度大大提高,尤其在上传超大文件时更是大大降低了服务器CPU的占用率,使CPU占用率降低到30%的惊人水平,并且上传速度高达1M/s以上(与闪盘速度差不多了),这些都是国内上传组件无法比拟的。
另外,这个测试是在局域网的环境下进行的,取得的数据传输率较高,但由于测试要点并不是进行定量的测试,而仅仅是比较各个上传组件之间的性能,传输率高低并不重要,重要的是它们之间的性能对比以及对服务器CPU的占用程度。如果哪位朋友有不同意见的话,欢迎一起探讨。
八、什么样的上传组件适合我?
但这些使用简单方便的WEB页面,却有一点经常让人感到恼火,当你想上传一些资料或图片到WEB上的时候,发觉稍大点的文件的上传速度慢得让人难以忍受,或者干脆就让你用FTP上传;更有一些企业用户想在网上实现视频播放,可文件太大,用WEB页面上传难以实现,用FTP上传又要求网站维护人员必须具有一定的FTP上传知识,真是左右为难!
那么,是否有这样一种WEB上传组件,既要能够实现快速上传(还要能上传特大文件),又能够尽量减少服务器资源占用率呢?
目前,网络上使用的上传方式大致分为两类,一类是使用经过编译的组件(DLL文件)进行上传,要使用该上传方式必须在服务器上安装上传组件或在服务器上进行注册组件方可使用;一类是使用未编译的代码类进行上传,无需在服务器上注册即可使用。这两类组件各有十几种,如AspSmartUpload,AspUpload,SA FileUp,LyfUpload,化境无组件上传类……等等。在众多的上传组件中,笔者抽取了个人认为具有代表性的六种上传组件来进行测试,以求得它们之间的性能对比。
一、 为什么选它?
1、Asp.net自带上传组件:微软公司最新开发出来的.net自带的上传组件,.net策略是微软公司在新世纪的一个豪赌,这个上传组件想必出手不凡,值得一看。
2、AspUpload3.0:一个享有盛誉的老牌上传组件,该版本是最新版本,据说非常不错,只不过…咳咳…它不是免费的,要xxx美元呢,提供30天试用期(便宜没好货?)。
3、SA FileUp4.0:这也是要钱的主,该版本为最新版,有2个月的试用期,是所有上传组件中最胖的(接近10M),就冲着它的体积,是不是该选它呢?
4、LyfUpload1.2B:该组件是国内拥有使用用户最多的上传组件,因为它免费,因为它稳定,因为它有丰富的中文帮助,最主要的是它是中国造的!
5、化境无组件上传类:该组件类在个人用户中使用最广泛(免费),因为个人用户一般是用的免费空间或收费空间,服务器提供商大多不提供上传组件支持,只能写在程序里面了。
6、 梁无惧无组件上传类:之所以介绍这个组件类,是因为作者自夸比化境无组件上传类速度快50倍,口气如此之大,看来不介绍它是不行的了(据作者说该类也是从化境无组件类中修改而成的,青出于蓝而胜于蓝)
二、 上传组件技术参数表
组件名称 |
Asp.net自带上传组件 |
AspUpload 3.0 |
SA FileUp 4.0 |
LyfUpload 1.2B |
化境无组件上传类 |
梁无惧无组件上传类 |
安装方法 |
需要安装.net sdk |
程序安装或注册 |
程序安装或注册 |
手工注册 |
无需注册 |
无需注册 |
限制上传大小 |
√ |
√ |
√ |
√ |
× |
√ |
限制上传类型 |
√ |
√ |
√ |
√ |
× |
√ |
多文件上传支持 |
√ |
√ |
√ |
√ |
√ |
√ |
获取文件名 |
√ |
√ |
√ |
√ |
√ |
√ |
获取文件大小 |
√ |
√ |
√ |
√ |
√ |
√ |
获取文件类型 |
√ |
√ |
√ |
√ |
√ |
√ |
文件更名存盘 |
√ |
√ |
√ |
√ |
√ |
√ |
文件存储至数据库 |
√ |
√ |
√ |
√ |
× |
√ |
同时使用其它的form元素 |
√ |
√ |
√ |
√ |
√ |
√ |
上传至内存 |
× |
√ |
√ |
× |
× |
× |
上传进度条显示 |
× |
√ |
× |
× |
× |
× |
加密支持 |
× |
√ |
× |
× |
× |
× |
除错处理 |
√ |
√ |
√ |
√ |
× |
√ |
帮助文件 |
有,中文 |
有,英文 |
有,英文 |
有,中文 |
有,中文 |
有,中文 |
作者/公司 |
微软公司 |
Persits Software |
|
刘玉峰(网名) |
稻香老农(网名) |
梁无惧(网名) |
收费情况 |
免费 |
收费 |
收费 |
免费 |
免费 |
免费 |
国家类别 |
国外 |
国外 |
国外 |
国内 |
国内 |
国内 |
三、 测试目的
通过相对严格的测试方法,测试各组件之间的上传性能,以选择最适合自己要求的组件
四、 测试环境
1、网络环境:单位内部局域网,光纤主干,交换机百兆到桌面。
2、服务器硬件配置:P41.7G主机(个人机),512MDDR内存,7200转IDE普通硬盘
3、服务器软件配置:WIN2000 SERVER SP2,IIS5.0,IE6.0,.NET环境
4、客户机硬件配置:AMD毒龙750,256MSD内存,5400转IDE普通硬盘
5、客户机软件配置:WIN2000 SERVER SP2,IIS5.0,IE5.0
五、 测试方法
1、测试时间:2003-1-12(星期天,网络使用低峰期。)
2、测试方式:共分8个测试阶段,从1到8阶段各提供一个专用的上传测试文件,每个上传组件分别循环测试三次,取三次成绩的平均值为该阶段测试标准成绩。
测试文件列表:
文件名称 |
文件内容 |
文件大小 |
测试目的 |
上传测试文件01.doc |
65K |
Word文档 |
上传小文件 |
上传测试文件02.zip |
541K |
压缩文件 |
上传常见中型文件 |
上传测试文件03.chm |
2305K |
帮助文件 |
上传常见大型文件 |
上传测试文件04.rar |
7015K |
压缩文件 |
测试大文件上传 |
上传测试文件05.chm |
14083 K |
帮助文件 |
测试大文件上传 |
上传测试文件06.chm |
31505 K |
帮助文件 |
测试大文件上传 |
上传测试文件07.rm |
109148 K |
Rm电影 |
测试超大文件上传 |
上传测试文件08.mpg |
227546 K |
Mpg电影 |
测试超大文件上传 |
六、 测试结果
1、第一组测试结果
文件名称:上传测试文件01.doc 文件类型:word文档 文件大小:65536 字节
组件名称 |
Asp.net 自带组件 |
Aspupload3.0 组件 |
FileupV4.01 组件 |
Lyfupload 1.2B组件 |
梁无惧无 组件上传类 |
化境无组件上传类 |
| |
第一次 测试 |
测试时间 |
20:44 |
16:54 |
16:55 |
16:55 |
16:55 |
16:55 |
|
所用时间(秒) |
0.0156 |
0.0313 |
0.0781 |
0.0625 |
0.0313 |
1.9844 |
| |
第二次 测试 |
测试时间 |
20:45 |
16:55 |
16:55 |
16:56 |
16:57 |
16:57 |
|
所用时间(秒) |
0.0313 |
0.0313 |
0.1094 |
0.0625 |
0.0313 |
1.9531 |
| |
第三次 测试 |
测试时间 |
20:46 |
16:58 |
16:58 |
16:58 |
16:57 |
16:57 |
|
所用时间(秒) |
0.0313 |
0.0313 |
0.0938 |
0.0469 |
0.0313 |
1.9688 |
| |
平均传输时间(秒) |
0.0260 |
0.0313 |
0.0938 |
0.0573 |
0.0313 |
1.9688 |
| |
平均传输速度 (字节/秒) |
2796203 |
2097152 |
712366 |
1165084 |
2097152 |
33290 | ||
传输比(%) |
100.00% |
75.00% |
25.48% |
41.67% |
75.00% |
1.19% |
(说明:传输比假设最高传输速度者为100%,统计其它传输率与它的对比,下同。)
上传速度对比图
CPU使用记录图
(从左至右为:asp.net,aspupload3,safileup4.01,lyfupload, 梁无惧无组件上传类, 化境无组件上传类)
点评:
在这一组测试数据中,.net自带组件成绩大幅度领先其余的上传组件,化境无组件上传类成绩最差,二者的成绩几乎差别达到100百倍;aspupload3与梁无惧无组件上传类以超过2M/s的成绩居于第二。
从CPU使用记录中抓图得到的图形来看,前五个上传组件在上传时几乎对CPU使用毫无影响,但化境无组件上传类产生了一个瞬间的高峰,CPU占用率达到100%。一般来说,在企业内部可能大量上传文档,前五个上传组件极低的CPU占用率非常令人满意,但最后一个上传组件竟然出现100%的CPU占用率,令人遗憾。
2、第二组测试结果
文件名称:上传测试文件02.zip 文件类型:压缩文件 文件大小:541369 字节 | |||||||
组件名称 |
Asp.net
自带组件 |
Aspupload3.0组件 |
FileupV4.01
组件 |
Lyfupload
1.2B组件 |
梁无惧无
组件上传类 |
化境无组件上传类 | |
第一次测试 |
测试时间 |
20:46 |
16:58 |
16:58 |
16:59 |
16:59 |
16:59 |
所用时间(秒) |
0.5625 |
0.7656 |
1.5000 |
0.8594 |
0.7031 |
16.8125 | |
第二次测试 |
测试时间 |
20:46 |
17:00 |
17:00 |
17:00 |
17:01 |
17:01 |
所用时间(秒) |
0.5469 |
0.6094 |
1.7188 |
0.7188 |
0.6875 |
16.5625 | |
第三次测试 |
测试时间 |
20:46 |
17:04 |
17:03 |
17:03 |
17:03 |
17:02 |
所用时间(秒) |
0.5469 |
0.7656 |
1.2813 |
0.7188 |
0.8906 |
16.9844 | |
平均传输时间(秒) |
0.5521 |
0.7135 |
1.5000 |
0.7656 |
0.7604 |
16.7865 | |
平均传输速度
(字节/秒) |
980766 |
767530 |
366141 |
712125 |
721749 |
31313 | |
传输比(%) |
100.00% |
78.26% |
37.33% |
72.61% |
73.59% |
3.19% |
上传速度对比图
CPU使用记录图
(从左至右为:asp.net,aspupload3,safileup4.01,lyfupload, 梁无惧无组件上传类, 化境无组件上传类)
点评:
在这一组测试数据中,第一名与最后一名依然与第一组相同,但差距拉小到30倍左右。从测试数据来看,各组传输率均有大幅度下降,且各组间的传输速度高低差也逐步拉小;奇怪的是第六个组件的传输速度下降最不明显,不到10%。
从CPU使用记录图来看,各组均出现CPU占用高峰,除.net组件外(不到100%),其余五个组件均出现100%的占用率,第六个组件(化境无组件上传类)占用100%时间最长。
本次测试的上传文件大小约为0.5M,属于常见的文件大小,从上面的测试结果来看,除第六个组件外,表现均较为良好,可以接受。
CPU使用记录图
(从左至右为:asp.net,aspupload3,safileup4.01,lyfupload, 梁无惧无组件上传类, 化境无组件上传类)
点评:
在这一组测试数据中,第一名与最后一名依然与第一组相同,但差距拉小到30倍左右。从测试数据来看,各组传输率均有大幅度下降,且各组间的传输速度高低差也逐步拉小;奇怪的是第六个组件的传输速度下降最不明显,不到10%。
从CPU使用记录图来看,各组均出现CPU占用高峰,除.net组件外(不到100%),其余五个组件均出现100%的占用率,第六个组件(化境无组件上传类)占用100%时间最长。
本次测试的上传文件大小约为0.5M,属于常见的文件大小,从上面的测试结果来看,除第六个组件外,表现均较为良好,可以接受。
3、第三组测试结果
文件名称:上传测试文件03.chm 文件类型:chm文件 文件大小:2305833字节 | |||||||
组件名称 |
Asp.net
自带组件 |
Aspupload3.0
组件 |
FileupV4.01
组件 |
Lyfupload
1.2B组件 |
梁无惧无
组件上传类 |
稻香老农无
组件上传类 | |
第一次
测试 |
测试时间 |
20:47 |
17:07 |
17:07 |
17:07 |
17:06 |
17:06 |
所用时间(秒) |
1.7344 |
3.8281 |
7.2969 |
4.3750 |
4.1094 |
72.7344 | |
第二次
测试 |
测试时间 |
20:47 |
17:09 |
17:09 |
17:09 |
17:10 |
17:11 |
所用时间(秒) |
1.6875 |
3.5313 |
6.2031 |
4.1563 |
4.2813 |
73.4688 | |
第三次
测试 |
测试时间 |
20:47 |
17:14 |
17:14 |
17:15 |
17:15 |
17:26 |
所用时间(秒) |
1.7031 |
3.1719 |
6.4531 |
4.3438 |
4.1875 |
74.3125 | |
平均传输时间(秒) |
1.7083 |
3.5104 |
6.6510 |
4.2917 |
4.1927 |
73.5052 | |
平均传输速度
(字节/秒) |
894458 |
565315 |
418696 |
537558 |
550117 |
31372 | |
传输比(%) |
100.00% |
63.20% |
46.81% |
60.10% |
61.50% |
3.51% |
上传速度对比图
CPU使用记录图
(从左至右为:asp.net,aspupload3,safileup4.01,lyfupload, 梁无惧无组件上传类, 化境无组件上传类)
点评:
这一组数据情况发生了有趣的变化,第一名与最后一名的位子仍然不动,但原来默默无闻的FileupV4.01组件的成绩却有了明显的提高,从第一组测试成绩到现在,该组件与其他组件的差距在不断的缩小,本次测试更是在其他组传输速度出现普遍出现下降的情况下,它反而提升了传输速度,这说明该组件的优势之处并不在上传小文件,文件越大,该组件的性能越能够体现。
从CPU使用记录图上看,各组软件之间的CPU占用图形均达到了100%的占用,但也出现了细微的变化,其中,.net自带组件的图形最好,呈现一种瞬间达到的状态,头部为尖形;aspupload3组件在CPU占用率达到100%前曾有短暂的CPU占用小高峰,之后才达到100%占用,FileupV4.01组件情形类似,只是CPU100%占用的时间比较长些;Lyfupload1.2B组件与梁无惧无组件上传类在上传前并未先形成较小的CPU占用率,而是一开始就达到,直到结束上传文件,才降低了占用率;化境无组件上传类的情况是所有上传组件中最不理想的,长时间的100%CPU占用率,而仅仅是在上传一个2.3M的文件而已,竟然出现了整整超过70秒钟的100%CPU占用率.
4、第四组测试结果
文件名称:上传测试文件04.rar 文件类型:压缩文件 文件大小:7015245字节 | |||||||
组件名称 |
Asp.net
自带组件 |
Aspupload3.0
组件 |
FileupV4.01
组件 |
Lyfupload
1.2B组件 |
梁无惧无
组件上传类 |
化境无组件上传类 | |
第一次测试 |
测试时间 |
20:49 |
17:18 |
17:18 |
17:19 |
17:19 |
17:23 |
所用时间(秒) |
4.0000 |
6.9375 |
10.2344 |
22.1875 |
23.5781 |
233.1406 | |
第二次测试 |
测试时间 |
20:49 |
17:27 |
17:28 |
17:28 |
17:29 |
17:33 |
所用时间(秒) |
4.0000 |
5.4531 |
7.9375 |
21.8906 |
22.1094 |
228.4063 | |
第三次测试 |
测试时间 |
20:49 |
17:41 |
17:41 |
17:40 |
17:39 |
17:39 |
所用时间(秒) |
4.0000 |
6.4063 |
7.0156 |
21.9688 |
22.0938 |
229.1719 | |
平均传输时间(秒) |
4.0000 |
6.2656 |
8.3958 |
22.0156 |
22.5938 |
230.2396 | |
平均传输速度(字节/秒) |
2338415 |
1130911 |
856405 |
318659 |
310784 |
30472 | |
传输比(%) |
100.00% |
48.36% |
36.62% |
13.63% |
13.29% |
1.30% |
说明:asp.net测试记录时间三次均为0.1563秒,但从CPU占用图表上明显可以看出测试自动记录的时间不准确(原因不明),通过估算CPU占用图上的时间,大约为4秒左右,测试6情况与此相同
上传速度对比图
CPU使用记录图(化境无组件上传类图形未录入)
(从左至右为:asp.net,aspupload3,safileup4.01,lyfupload, 梁无惧无组件上传类)
点评:
本组测试数据发生了根本性的变化。测试上传数据为7M,一般应用中很少有如此大的上传量,在上传量大幅度增加的时候,各组件上传性能的优劣完全一目了然。.net自带组件在本组测试数据中脱颖而出,远远超出其他上传组件(超过一倍以上),上传速度之快、占用CPU时间之短令人侧目,唯一遗憾的是CPU占用率还不能拿到第一;ASPUPLOAD3组件也表现出了优秀的性能,它的CPU占用率是六个组件当中最小的,仅仅在40%左右;FileupV4.01组件的性能居于ASPUPLOAD之后列第三,从CPU占用图形上看,两者CPU占用图走势非常相似,差别仅是所用时间长一点,CPU占用率稍高一点;Lyfupload1.2B组件与梁无惧无组件上传类成绩雷同,CPU占用图走势几乎一样,CPU占用时间达到22秒,而且从开始到结束均为100%占用,不能令人满意;居最后的化境无组件上传类的情况最不理想,由于长达200余秒的100%CPU占用率,令其CPU占用图都无法容纳得下它,小庙难以容下大菩萨啊,它的图形只好不列入观看了。
从CPU占用图上看,六个上传组件明显分成了两种截然不同的传输数据风格,前三种上传组件在上传较大数据时,其传输率竟然比上传2M文件时大幅提高,而且CPU占用率大大下降,最低竟然达到40%;后三种上传组件上传较大数据时,传输率进一步下降,CPU占用率进一步提高,所耗上传时间相应增加。从两种传输风格来看,前一种的三个组件均为国外组件,后一种的三个组件均为国内组件,这能说明什么问题呢?
5、第五组测试结果
文件名称:上传测试文件05.chm 文件类型:chm文件 文件大小:14083055字节 | |||||||
组件名称 |
Asp.net
自带组件 |
Aspupload3.0组件 |
FileupV4.01组件 |
Lyfupload
1.2B组件 |
梁无惧无组
件上传类 |
化境无组件上传类 | |
第一次测试 |
测试时间 |
20:50 |
17:43 |
17:44 |
17:46 |
17:57 |
速度太慢,不参与测试(传输时间超过500秒) |
所用时间(秒) |
14.2813 |
26.6406 |
47.1719 |
104.1250 |
100.7500 | ||
第二次测试 |
测试时间 |
20:50 |
17:58 |
17:59 |
18:01 |
18:03 | |
所用时间(秒) |
13.7344 |
25.2969 |
42.5781 |
101.6719 |
101.8281 | ||
第三次测试 |
测试时间 |
20:51 |
18:05 |
18:10 |
18:08 |
18:12 | |
所用时间(秒) |
13.5781 |
25.8438 |
41.5625 |
101.2188 |
101.3438 | ||
平均传输时间(秒) |
13.8646 |
25.9271 |
43.7708 |
102.3386 |
101.3073 | ||
平均传输速度
(字节/秒) |
1016232 |
543424 |
322715 |
137634 |
139016 | ||
传输比(%) |
100.00% |
53.47% |
31.76% |
13.54% |
13.68% |
上传速度对比图
CPU使用记录图(后三种组件CPU图形未录入)
(从左至右为:asp.net,aspupload3,safileup4.01)
点评:
本组测试由于化境无组件上传类测试成绩较差,早早退出了比赛行列。
本组测试文件达到14M,各组件的上传速度又出现大幅度下降,虽然如此,.net自带组件成绩仍然是遥遥领先,紧随其后的是aspupload3组件与FileupV4.01组件,Lyfupload1.2B组件与梁无惧无组件上传类虽然还能跟上前者的步伐不至于被淘汰,但上传时间均已超过100秒,而且其巨大的CPU占用率就像一块千斤大石般压得人喘不过气来(超过100秒钟的100%CPU占用率)。
从CPU占用图上来看(仅列三种图形,后两种上传组件因为图形单调毫无变化,没有参考价值),.net自带组件占用CPU时间最短,aspupload3组件CPU占用率最低,占用时间最长的是FileupV4.01组件。三者在达到100%CPU占用率之前,均出现明显的CPU占用率小高峰,之后才出现100%的占用率。
6、第六组测试结果
文件名称:上传测试文件06.chm 文件类型:chm文件 文件大小:31505602字节 | |||||||
组件名称 |
Asp.net组件 |
Aspupload3.0组件 |
FileupV4.01组件 |
Lyfupload1.2B组件 |
梁无惧无组件上传类 |
化境无组件上传类 | |
第一次测试 |
测试时间 |
20:52 |
18:14 |
18:15 |
18:23 |
18:38 |
未参与测试 |
所用时间(秒) |
19.0000 |
39.9531 |
57.4063 |
454.0938 |
447.3750 | ||
第二次测试 |
测试时间 |
20:53 |
18:40 |
18:44 |
|
| |
所用时间(秒) |
19.0000 |
38.0469 |
60.2031 |
|
| ||
第三次测试 |
测试时间 |
20:53 |
18:47 |
18:50 |
|
| |
所用时间(秒) |
19.0000 |
35.1250 |
54.7813 |
|
| ||
平均传输时间(秒) |
19.0000 |
37.7083 |
57.4635 |
454.0938 |
447.3750 | ||
平均传输速度
(字节/秒) |
1658190 |
837865 |
549086 |
69381 |
70423 | ||
传输比(%) |
100.00% |
50.53% |
33.11% |
4.18% |
4.25% |
说明:asp.net组件三次上传时间分别记录为:10.2969,10.1563,10.23434,但从CPU运行图上观察大约在19秒左右,结果以此为准
上传速度对比图
CPU使用记录图
(从左至右为:asp.net,aspupload3,safileup4.01)
点评:
由于Lyfupload1.2B组件与梁无惧无组件上传类的上传时间达到惊人的450秒,而且在上传期间完全处于100%的CPU占用率,已没有再进行测试的必要性了,因此只测试一组数据作为参考。
本组测试又出现了奇怪的现象,前三个上传组件的上传速度在文件大小扩大一倍的基础上反而增加了,增幅最大的FileupV4.01更达到惊人的70%提升;后两个组件上传速度随着文件的增大等比例的下降。从速度上看,仍然是asp.net组件的速度领先,其次的aspupload3组件仅仅是它的50%,更不用说最低速度的后两个组件了,只及asp.net组件的4%。
从CPU使用记录图看,前三个组件的图形走势非常相像,都是先形成一段较低CPU占用率的波形,最后猛然攀升,达到100%CPU占用率,其中Aspupload3组件的CPU占用率是最低的,asp.net组件占用率最高,FileupV4.01居中但在三者中所用时间最长 。
7、第七组测试结果
文件名称:上传测试文件07.rm 文件类型:rm文件 文件大小:109148251字节 | |||||||
组件名称 |
Asp.net组件 |
Aspupload3.0组件 |
FileupV4.01组件 |
Lyfupload1.2B组件 |
梁无惧无组件上传类 |
化境无组件上传类 | |
第一次
测试 |
测试时间 |
21:03 |
19:00 |
19:03 |
未参与测试 |
未参与测试 |
未参与测试 |
所用时间(秒) |
35.0000 |
107.5469 |
129.3281 | ||||
第二次
测试 |
测试时间 |
21:04 |
19:11 |
19:07 | |||
所用时间(秒) |
35.0000 |
95.8438 |
124.5313 | ||||
第三次
测试 |
测试时间 |
20:59 |
19:15 |
19:20 | |||
所用时间(秒) |
35.0000 |
96.9844 |
122.0156 | ||||
平均传输时间(秒) |
35.0000 |
100.1250 |
125.2917 | ||||
平均传输速度
(字节/秒) |
3118521 |
1093042 |
871660 | ||||
传输比(%) |
100.00% |
35.05% |
27.95% |
|
说明:asp.net组件三次上传记录数据分别为:4.671875,3.328125,3.328125,但从CPU运行图上看大约在35秒之间,结果以此为准,后三种上传组件因速度太慢,已不具可比性,不参与测试
CPU使用记录图
(asp.net组件)
(aspupload3)
(safileup4.01)
说明:
本次所上传的文件高达110M,如此大的文件上传实际需求较少,但如果是视频播放的话就需要上传此类或更大的文件,上传时间较长,更要求不能对服务器的正常运行造成影响。
更为令人奇怪的是,三个组件的上传速度居然又大幅增长,尤其以asp.net组件的增长幅度令人恐怖,几乎达到100%。这一点从CPU占用图上也可以看出,asp.net组件以较高的CPU占用率在最短的时间内就完成了110M文件的上传,而最大的变化在于这三个组件的CPU占用率发生了本质的变化,在上面的所有测试中,除了小文件上传外,毫无例外的都出现过100%CPU占用率的现象,但此次居然并未出现!其中,aspupload3组件更是长时间运行在30~40%的CPU占用率内,可以说在上传大文件时,几乎就可以不考虑对服务器的影响而且速度更快。
8、第八组测试结果
文件名称:影视mpg文件.mpg 文件类型:mpg文件 文件大小:227546780字节 | |||||||
组件名称 |
Asp.net组件 |
Aspupload3.0组件 |
FileupV4.01组件 |
Lyfupload1.2B组件 |
梁无惧无组件上传类 |
化境无组件上传类 | |
第一次测试 |
测试时间 |
无法上传 |
19:42 |
19:36 |
未参与测试 |
未参与测试 |
未参与测试 |
所用时间(秒) |
200.1250 |
265.5156 | |||||
平均传输时间(秒) |
200.1250 |
265.5156 | |||||
平均传输速度
(字节/秒) |
1137023 |
857000 | |||||
传输比(%) |
100.00% |
75.37% |
说明:本次测试数据超过200M,asp.net组件上传过程中无故中断,无法上传(重试多次)
上传速度对比图
CPU使用记录图
(safileup4.01)
(aspupload3)
说明:
为了最终看看上传组件上传超大型文件的表现,特地上传了一个达到近230M大小的文件,一般而言,极少有这样的上传需求,所以此次测试仅供参考,只有一个测试数据。
在上传过程中,意外的发现asp.net组件竟然无法上传这个文件,连续多次测试并修改配置文件,最终仍是无法上传(后查明asp.net允许最大的上传文件为200M)。故asp.net的上传测试只有无奈放弃。
从数据上看,aspupload3组件的传输速度仍有小幅提高(提高约40K左右),safileup4.01组件有小幅下降。从CPU使用记录图看,CPU占用率进一步下降,aspupload3组件CPU占用率仅在30%以下,safileup4.01组件稍高。
附件:六种上传组件传输速度走势图
七、写在后面:
花了好大功夫,终于把这个测试做完了。
做完了之后,心头反而有点沉重。
从测试的数据来看,国内的上传组件与国外的上传组件相比,技术明显不在一个档次上。国内的上传组件大多为免费使用,均为最简单的读取二进制数据方式进行上传,技术上没有突破,上传小文件时还可以,上传较大文件时,上传速度急剧下降,并且普遍CPU占用率极高,一般均为全过程的100%CPU占用率;而国外的上传组件已形成产业,除asp.net组件搭配在.net环境中免费使用外,其余二者均为有偿使用(aspupload3组件使用费高达500美元),在技术上,采用了某种我们未知的数据读取方式,使上传速度大大提高,尤其在上传超大文件时更是大大降低了服务器CPU的占用率,使CPU占用率降低到30%的惊人水平,并且上传速度高达1M/s以上(与闪盘速度差不多了),这些都是国内上传组件无法比拟的。
另外,这个测试是在局域网的环境下进行的,取得的数据传输率较高,但由于测试要点并不是进行定量的测试,而仅仅是比较各个上传组件之间的性能,传输率高低并不重要,重要的是它们之间的性能对比以及对服务器CPU的占用程度。如果哪位朋友有不同意见的话,欢迎一起探讨。
八、什么样的上传组件适合我?
组件名称 |
适用范围 |
Asp.net组件 |
适合任何一种情况使用,但前提是你可以使用asp.net技术。建议有条件的都上。 |
Aspupload3.0组件 |
速度、CPU占用率极其优秀,如果不能使用asp.net技术,建议有钱的先上。 |
FileupV4.01组件 |
同上,比aspupload3组件差一些,但一样卖钱,可见它胖得没有道理,建议有钱的不如上aspupload3组件。 |
Lyfupload1.2B组件 |
如果你没有用宽带,也不在局域网内,服务器提供商允许你用这个组件的话,而且你看来不是很有钱,那就尽管上吧!但恐怕这种机会不多。 |
梁无惧无组件上传类 |
如果你既不是用宽带,也不是在局域网内,服务器提供商又不允许你用组件,而且兜里没有钱,那只好上这个了。 |
化境无组件上传类 |
强烈建议不要上它。 |
如果还有其他没有列入的情况,那怎么办?……(这个,这个,你自己想办法。)
附件:上述六种上传组件的下载地址:
组件名称 |
下载地址 |
Asp.net组件 |
.net自带,只要安装NET Framework或.net程序即可 |
Aspupload3.0组件 |
http://www.persits.com/aspupload.exe |
FileupV4.01组件 |
http://support.softartisans.com/eval.aspx |
Lyfupload1.2B组件 |
http://www.aspcool.com/download/display.asp?Did=287 |
梁无惧无组件上传类 |
http://www.cgknife.com/yjlrb/upfile.rar |
化境无组件上传类 |
http://www.5xsoft.com/soft/upclass.zip |