perform.dos
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:8k
源码类别:

压缩解压

开发平台:

MultiPlatform

  1. Date: Wed, 27 Mar 1996 01:31:50 CET +0100
  2. From: Christian Spieler (IKDA, THD, D-64289 Darmstadt)
  3. Subject: More detailed comparison of MSDOS Info-ZIP programs' performance
  4. Hello all,
  5. In response to some additional questions and requests concerning
  6. my previous message about DOS performance of 16/32-bit Info-ZIP programs,
  7. I have produced a more detailed comparison:
  8. System:
  9. Cx486DX-40, VL-bus, 8MB; IDE hard disk;
  10. DOS 6.2, HIMEM, EMM386 NOEMS NOVCPI, SMARTDRV 3MB, write back.
  11. I have used the main directory of UnZip 5.20p as source, including the
  12. objects and executable of an EMX compile for unzip.exe (to supply some
  13. binary test files).
  14. Tested programs were (my current updated sources!) Zip 2.0w and UnZip 5.20p
  15. - 16-bit MSC 5.1, compressed with LZEXE 0.91e
  16. - 32-bit Watcom C 10.5, as supplied by Kai Uwe Rommel (PMODE 1.22)
  17. - 32-bit EMX 0.9b
  18. - 32-bit DJGPP v2
  19. - 32-bit DJGPP v1.12m4
  20. The EMX and DJ1 (GO32) executables were bound with the full extender, to
  21. create standalone executables.
  22. A) Tests of Zip
  23.   Command :  "<system>zip.exe -q<#> tes.zip unz/*"  (unz/*.* for Watcom!!)
  24.              where <#> was: 0, 1, 6, 9.
  25.              The test archive "tes.zip" was never deleted, this test
  26.              measured "time to update archive".
  27.   The following table contains average execution seconds (averaged over
  28.   at least 3 runs, with the first run discarted to fill disk cache);
  29.   numbers in parenteses specify the standard deviation of the last
  30.   digits.
  31.   cmpr level|      0     |      1     |      6     |      9
  32.  ===============================================================
  33.   EMX win95 |   7.77     |   7.97     |  12.82     |  22.31
  34.  ---------------------------------------------------------------
  35.   EMX       |   7.15(40) |   8.00(6)  |  12.52(25) |  20.93
  36.   DJ2       |  13.50(32) |  14.20(7)  |  19.05     |  28.48(9)
  37.   DJ1       |  13.56(30) |  14.48(3)  |  18.70     |  27.43(13)
  38.   WAT       |   6.94(22) |   8.93     |  15.73(34) |  30.25(6)
  39.   MSC       |   5.99(82) |   9.40(4)  |  13.59(9)  |  20.77(4)
  40.  ===============================================================
  41.  The "EMX win95" line was created for comparison, to check the performance
  42.  of emx 0.9 with the RSX extender in a DPMI environment. (This line was
  43.  produced by applying the "stubbed" EMX executable in a full screen DOS box.)
  44. B) Tests of UnZip
  45.   Commands :  <system>unzip.exe -qt tes.zip         (testing performance)
  46.               <system>unzip.exe -qo tes.zip -dtm    (extracting performance)
  47.   The tes.zip archive created by maximum compression with the Zip test
  48.   was used as example archive. Contents (archive size was 347783 bytes):
  49.    1028492 bytes uncompressed, 337235 bytes compressed, 67%, 85 files
  50.   The extraction directory tm was not deleted between the individual runs,
  51.   thus this measurement checks the "overwrite all" time.
  52.            |     testing               |          extracting
  53.   ===================================================================
  54.   EMX      |       1.98                |         6.43(8)
  55.   DJ2      |       2.09                |        11.85(39)
  56.   DJ1      |       2.09                |         7.46(9)
  57.   WAT      |       2.42                |         7.10(27)
  58.   MSC      |       4.94                |         9.57(31)
  59. Remarks:
  60. The executables compiled by me were generated with all "performance"
  61. options enabled (ASM_CRC, and ASMV for Zip), and with full crypt support.
  62. For DJ1 and DJ2, the GCC options were "-O2 -m486", for EMX "-O -m486".
  63. The Watcom UnZip was compiled with ASM_CRC code enabled as well,
  64. but the Watcom Zip example was made without any optional assembler code!
  65. Discussion of the results:
  66. In overall performance, the EMX executables clearly win.
  67. For UnZip, emx is by far the fastest program, and the Zip performance is
  68. comparable to the 16-bit "reference".
  69. Whenever "real" work including I/O is requested, the DJGPP versions
  70. lose badly because of poor I/O performance, this is the case especially
  71. for the "newer" DJGPP v2 !!!
  72. (I tried to tweak with the transfer buffer size, but without any success.)
  73. An interesting result is that DJ v1 UnZip works remarkably better than
  74. DJ v2 (in contrast to Zip, where both executables' performance is
  75. approximately equal).
  76. The Watcom C programs show a clear performance deficit in the "computational
  77. part" (Watcom C compiler produces code that is far from optimal), but
  78. the extender (which is mostly responsible for the I/O throughput) seems
  79. to be quite fast.
  80. The "natural" performance deficit of the 16-bit MSC code, which can be
  81. clearly seen in the "testing task" comparison for UnZip, is (mostly,
  82. for Zip more than) compensated by the better I/O throughput (due to the
  83. "direct interface" between "C RTL" and "DOS services", without any mode
  84. switching).
  85. But performance is only one aspect when choosing which compiler should
  86. be used for official distribution:
  87. Sizes of the executables:
  88.     |             Zip                ||           UnZip
  89.     | standalone           stub      || standalone    |     stub
  90. ======================================================================
  91. EMX | 143,364  (1) |    94,212       ||  159,748  (1) |   110,596
  92. DJ2 | 118,272  (2) |       --        ||  124,928  (2) |      --
  93. DJ1 | 159,744      |    88,064       ||  177,152      |   105,472
  94. WAT | 140,073      |       --        ||  116,231      |      --
  95. MSC |  49,212  (3) |       --        ||   45,510  (3) |      --
  96. (1) does not run in "DPMI only" environment (Windows DOS box)
  97. (2) requires externally supplied DPMI server
  98. (3) compressed with LZexe 0.91
  99. Caveats/Bugs/Problems of the different extenders:
  100. EMX:
  101. - requires two different extenders to run in all DOS-compatible environments,
  102.   EMX for "raw/himem/vcpi" and RSX for "dpmi" (Windows).
  103. - does not properly support time zones (no daylight savings time)
  104. DJv2:
  105. - requires an external (freely available) DPMI extender when run on plain
  106.   DOS; this extender cannot (currently ??) be bound into the executable.
  107. DJv1:
  108. - uses up large amount of "low" dos memory (below 1M) when spawning
  109.   another program, each instance of a DJv1 program requires its private
  110.   GO32 extender copy in low dos memory (may be problem for the zip
  111.   "-T" feature)
  112. Watcom/PMODE:
  113. - extended memory is allocated statically (default: ALL available memory)
  114.   This means that a spawned program does not get any extended memory.
  115.   You can work around this problem by setting a hard limit on the amount
  116.   of extended memory available to the PMODE program, but this limit is
  117.   "hard" and restricts the allocatable memory for the program itself.
  118.   In detail:
  119.   The Watcom zip.exe as distributed did not allow the "zip -T" feature;
  120.   there was no extended memory left to spawn unzip.
  121.   I could work around this  problem by applying PMSETUP to change the
  122.   amount of allocated extended memory to 2.0 MByte (I had 4MB free extended
  123.   memory on my test system). But, this limit cannot be enlarged at
  124.   runtime, when zip needs more memory to store "header info" while
  125.   zipping up a huge drive, and on a system with less free memory, this
  126.   method is not applicable, either.
  127. Summary:
  128. For Zip: 
  129. Use the 16-bit executable whenever possible (unless you need the
  130. larger memory capabilities when zipping up a huge amount of files)
  131. As 32-bit executable, we may distribute Watcom C (after we have confirmed
  132. that enabling ASMV and ASM_CRC give us some better computational
  133. performance.)
  134. The alternative for 32-bit remains DJGPP v1, which shows the least problems
  135. (to my knowledge); v2 and EMX cannot be used because of their lack of
  136. "universality".
  137. For UnZip:
  138. Here, the Watcom C 32-bit executable is probably the best compromise,
  139. but DJ v1 could be used as well.
  140. And, after all, the 16-bit version does not lose badly when doing
  141. "real" extraction! For the SFX stub, the 16-bit version remains first
  142. choice because of its much smaller size!
  143. Best regards
  144. Christian Spieler