Upload - performance tests.

          Article, Upload - performance tests. 
          Member of  ScriptUtils.ASPForm 

Upload - performance tests.
    This article contains performance test of three upload methods - HugeASP upload (upload with ScriptUtilities component) and PureASP upload (upload using default VBS objects - ADO + Scripting objects). I created special environment to test two important values - consumed memory and consumed processor time.
 
1. HugeASP upload
 
    First of all I test HugeASP upload in application running in ASP as an isolated process. So 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, 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

HugeASP upload, isolated

 

HugeASP 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 HugeASP 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 PureASP upload with many clients - consumed memory/processor resources depends linearly on number of clients.

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.

    HugeASP 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.
      Easy to use, hi-performance ASP file upload component with progress bar indicator. Let's you upload multiple files with size up to 2GB to a disk or database along with another form fields. Works with large posts, any character set (including unicode utf-8). Contains one-click multiple files/folders download with on-the-fly compression (Using BinaryWrite/BinaryRead).
      Hi-performance text file logging for ASP/VBScript/VBA applications. Lets you create daily/weekly/monthly log files with variable number of logged values and extra timing and performance info.
       Lets you work with safearray binary data in VBS/JS. It also enables conversion between binary and String data using several code pages. ZLib compress and uncompress functions. Lets you transfer files using compressed stream from a client to server using IE.
      This library also enables calling of some Kernel and Advapi functions (performance, timing, sleep, configuration ...) and enables native work with INI files.


© 1996 – 2005 Motobit Software, help{at}pstruh.cz, help v. 2.16.14