Upload - performance tests. Article

Member of  ScriptUtils.ASPForm | Changes | Purchase | Download

Upload - performance tests.

PureASP upload, Huge ASP upload or ASPNet HTMLInputForm? Results of performance tests.

See also
Huge ASP upload and Pure ASP upload, compare features.
Huge-ASP or Pure-ASP file upload?
PureASP upload - using, features, functionality, notes.
Upload - performance tests.
    Huge ASP file upload has a great performance for upload of small and very big files also. It lets you upload files of size up to 2 gigabytes with full 100Mb/s speed directly to an ASP page even on a very slow server machines.
    This article contains a performance test of three upload methods - Huge ASP upload (component) with two isolation modes (in-process, out of process) and PureASP upload (upload using pure asp script) on a very old server machine, AMD Duron 700MHz with 256MB of memory. I created a special environment to test two important values - consumed memory and consumed processor time.
    You can see that upload speed on such very slow server computer is 80-100Mb/s (175 sec / 2GB) and it takes a maximum of 100kB of server memory per 2GB file. There is no problem to upload files with speed over 100Mb/s on 1Gb/s Ethernet (see progress at title page).
 
1. Huge ASP upload
 
    First of all I test Huge ASP upload in an ASP application running as an isolated process. So the 'memory' means sum of consumed memory in inetinfo.exe + dllhost.exe processes. Second test was for low application protection - ASP is running in IIS process, the 'memory' means amount of memory consumed by inetinfo.exe process.
 
Dim Form: Set Form = Server.CreateObject("ScriptUtils.ASPForm")
If Form.State = 0 Then
  Form.Files(1).SaveAs "f:\Uploads\UpFile"
End If

Huge ASP upload, isolated

 

Huge ASP upload, in-process

 

Consumed

 

 

Consumed

FileSize [MB]

Memory [MB]

Processor [ms]

 

FileSize [MB]

Memory [MB]

Processor [ms]

14.7 

 

10.7 

14.9 

721 

 

10.8 

420 

14.9 

1 211 

 

10.8 

640 

16 

14.9 

2 293 

 

16 

10.8 

1 251 

32 

14.9 

5 257 

 

32 

10.8 

2 723 

48 

14.9 

8 011 

 

48 

10.8 

3 805 

64 

14.9 

10 294 

 

64 

10.8 

5 417 

128 

14.9 

21 301 

 

128 

10.8 

10 905 

256 

14.9 

41 820 

 

256 

10.8 

21 060 

512 

14.9 

82 859 

 

512 

10.8 

41 920 

1 024 

14.9 

173 609 

 

1 024 

10.8 

86 874 

2 047 

14.9 

344 895 

 

2 047 

10.8 

174 257 

    These two tables show you that Huge ASP upload does not consume much memory. So most important value is consumed time. This time correspond to upload time of file.

    It looks like ASP has some problems with reading binary data from inetinfo process when it runs in separate memory process. ASP takes the same time for upload (read file from client) as for transferring data between inetinfo.exe and dllhost.exe.

    I tested Huge ASP upload with many clients - consumed memory/processor resources depends linearly on number of clients, the consumed amount of memory during upload is insignificant.

2. PureASP upload, with ADO and Scripting objects.
 
    Second test in the same conditions was with PureASP upload v 1.5 (ADODB.Recordset in BinaryToString and Scripting.FileSystemObject to save data). PureASP upload has one difference in tests - it takes constant amount of memory to read binary data (value memory), and at the end of upload takes more memory for a short time (memory peak).
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then 
  Set Upload = GetUpload()
  Upload("MyFile").Value.SaveAs "f:\Uploads\UpFile"
End If

PureASP upload

  FileSize

Consumed

[MB]

Memory [MB]

Memory peak[MB]

Processor [ms]

16.9 

16.9 

17.7 

18.0 

180 

18.6 

19.5 

510 

20.3 

21.9 

1 311 

23.2 

27.9 

4 416 

26.8 

32.8 

9 403 

29.5 

36.4 

16 433 

43.8 

55.2 

62 049 

16 

65.2 

97.8 

236 870 

32 

113.5 

178.1 

921 835 

    There is no good idea to use PureASP upload to upload files with size greater than 16MB. PureASP upload takes 100 times more processor time than Huge upload for 16MB file.

3. Results.

    Huge ASP upload lets you work with large files as with small. It does not consume much memory - so you can use it for upload of big files or for web site with many uploading clients.

4. Test conditions.
    The test was provided with two computers:
Client - Dual celeron / 550, 384 MB memory
Server - AMD Duron 700,  256 MB memory
100Mb/s full duplex network

    The client gets processor kernel+user time of all process on server-side. Then sends multipart encoded form with one file of specified size (using WinInet API InternetWriteFile). The client tested consumed memory of IIS processes on server-side during the upload. At the end the client counts all consumed time of all process on server side.

    There are two values of consumed memory - Memory means amount of memory which IIS processes occupied during all time of upload. Memory peak means amount of memory, which these processes take to save file at the end of upload.

Other links for Upload - performance tests. article

ScriptUtils

Huge ASP upload is easy to use, hi-performance ASP file upload component with progress bar indicator. This component lets you upload multiple files with size up to 4GB to a disk or a database along with another form fields. Huge ASP file upload is a most featured upload component on a market with competitive price and a great performance . The software has also a free version of asp upload with progress, called Pure asp upload , written in plain VBS, without components (so you do not need to install anything on server). This installation package contains also ScriptUtilities library. Script Utilities lets you create hi-performance log files , works with binary data , you can download multiple files with zip/arj compression, work with INI files and much more with the ASP utility.

© 1996 - 2011 Antonin Foller, Motobit Software | About, Contacts | e-mail: info@pstruh.cz


Other Motobit links:   IISTracer, real-time IIS monitor   ASP file upload - upload files to ASP. 
ActiveX/VBSScript registry editor  ActiveX NT User account manager  Export MDB/DBF from ASP Active LogFile  Email export  ActiveX/ASP Scripting Dictionary object