react-native-update 8.5.5 → 8.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/.cursor/mcp.json +11 -0
  2. package/dist/endpoint.d.ts +13 -0
  3. package/dist/endpoint.js +58 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +18 -0
  6. package/dist/main.d.ts +33 -0
  7. package/dist/main.js +346 -0
  8. package/dist/simpleUpdate.d.ts +61 -0
  9. package/dist/simpleUpdate.js +155 -0
  10. package/dist/type.d.ts +51 -0
  11. package/dist/type.js +2 -0
  12. package/dist/utils.d.ts +5 -0
  13. package/dist/utils.js +106 -0
  14. package/lib/endpoint.ts +2 -5
  15. package/lib/main.ts +8 -8
  16. package/lib/simpleUpdate.tsx +3 -3
  17. package/lib/utils.ts +32 -4
  18. package/package.json +7 -4
  19. package/tsconfig.json +18 -0
  20. package/harmony/src/main/cpp/HDiffPatch/CHANGELOG.md +0 -153
  21. package/harmony/src/main/cpp/HDiffPatch/LICENSE +0 -48
  22. package/harmony/src/main/cpp/HDiffPatch/Makefile +0 -157
  23. package/harmony/src/main/cpp/HDiffPatch/README.md +0 -307
  24. package/harmony/src/main/cpp/HDiffPatch/_atosize.h +0 -83
  25. package/harmony/src/main/cpp/HDiffPatch/_clock_for_demo.h +0 -47
  26. package/harmony/src/main/cpp/HDiffPatch/_dir_ignore.h +0 -191
  27. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +0 -37
  28. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +0 -7
  29. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +0 -1
  30. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +0 -1
  31. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +0 -18
  32. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +0 -20
  33. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +0 -28
  34. package/harmony/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +0 -8
  35. package/harmony/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +0 -8
  36. package/harmony/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffZ.cbp +0 -219
  37. package/harmony/src/main/cpp/HDiffPatch/builds/codeblocks/HPatchZ.cbp +0 -156
  38. package/harmony/src/main/cpp/HDiffPatch/builds/codeblocks/unitTest.cbp +0 -65
  39. package/harmony/src/main/cpp/HDiffPatch/builds/vc/HDiffPatch.sln +0 -105
  40. package/harmony/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj +0 -237
  41. package/harmony/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +0 -3
  42. package/harmony/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj +0 -318
  43. package/harmony/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +0 -3
  44. package/harmony/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj +0 -182
  45. package/harmony/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj.user +0 -3
  46. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +0 -30
  47. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  48. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +0 -408
  49. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +0 -573
  50. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +0 -396
  51. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +0 -268
  52. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +0 -361
  53. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +0 -301
  54. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +0 -411
  55. package/harmony/src/main/cpp/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +0 -504
  56. package/harmony/src/main/cpp/HDiffPatch/checksum_plugin_demo.h +0 -344
  57. package/harmony/src/main/cpp/HDiffPatch/compress_parallel.cpp +0 -166
  58. package/harmony/src/main/cpp/HDiffPatch/compress_parallel.h +0 -59
  59. package/harmony/src/main/cpp/HDiffPatch/compress_plugin_demo.h +0 -1152
  60. package/harmony/src/main/cpp/HDiffPatch/decompress_plugin_demo.h +0 -995
  61. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +0 -797
  62. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +0 -65
  63. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +0 -200
  64. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +0 -178
  65. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +0 -357
  66. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +0 -87
  67. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +0 -151
  68. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +0 -770
  69. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +0 -236
  70. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +0 -47
  71. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +0 -112
  72. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +0 -53
  73. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_types.h +0 -61
  74. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +0 -331
  75. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +0 -144
  76. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +0 -176
  77. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +0 -84
  78. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +0 -146
  79. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +0 -61
  80. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +0 -152
  81. package/harmony/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +0 -76
  82. package/harmony/src/main/cpp/HDiffPatch/file_for_patch.c +0 -524
  83. package/harmony/src/main/cpp/HDiffPatch/file_for_patch.h +0 -259
  84. package/harmony/src/main/cpp/HDiffPatch/hdiffz.cpp +0 -1570
  85. package/harmony/src/main/cpp/HDiffPatch/hpatch_dir_listener.h +0 -290
  86. package/harmony/src/main/cpp/HDiffPatch/hpatchz.c +0 -1221
  87. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +0 -1025
  88. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.h +0 -116
  89. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +0 -72
  90. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +0 -213
  91. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +0 -63
  92. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +0 -170
  93. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +0 -86
  94. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +0 -89
  95. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c +0 -13
  96. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +0 -398
  97. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +0 -194
  98. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +0 -13
  99. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +0 -204
  100. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +0 -207
  101. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +0 -815
  102. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +0 -586
  103. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +0 -381
  104. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +0 -352
  105. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +0 -137
  106. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +0 -137
  107. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +0 -70
  108. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +0 -628
  109. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +0 -87
  110. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +0 -363
  111. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +0 -139
  112. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +0 -68
  113. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +0 -115
  114. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +0 -342
  115. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +0 -94
  116. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +0 -52
  117. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.c +0 -2292
  118. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.h +0 -215
  119. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_private.h +0 -165
  120. package/harmony/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_types.h +0 -251
  121. package/harmony/src/main/cpp/HDiffPatch/libParallel/parallel_channel.cpp +0 -174
  122. package/harmony/src/main/cpp/HDiffPatch/libParallel/parallel_channel.h +0 -73
  123. package/harmony/src/main/cpp/HDiffPatch/libParallel/parallel_import.cpp +0 -367
  124. package/harmony/src/main/cpp/HDiffPatch/libParallel/parallel_import.h +0 -92
  125. package/harmony/src/main/cpp/HDiffPatch/test/_private_searchBestParams.cpp +0 -301
  126. package/harmony/src/main/cpp/HDiffPatch/test/hpatchz_test.cpp +0 -292
  127. package/harmony/src/main/cpp/HDiffPatch/test/testHashClash.cpp +0 -436
  128. package/harmony/src/main/cpp/HDiffPatch/test/unit_test.cpp +0 -417
  129. package/harmony/src/main/cpp/lzma/Asm/arm/7zCrcOpt.asm +0 -100
  130. package/harmony/src/main/cpp/lzma/Asm/x86/7zAsm.asm +0 -147
  131. package/harmony/src/main/cpp/lzma/Asm/x86/7zCrcOpt.asm +0 -147
  132. package/harmony/src/main/cpp/lzma/Asm/x86/AesOpt.asm +0 -237
  133. package/harmony/src/main/cpp/lzma/Asm/x86/LzmaDecOpt.asm +0 -1258
  134. package/harmony/src/main/cpp/lzma/Asm/x86/XzCrc64Opt.asm +0 -205
  135. package/harmony/src/main/cpp/lzma/C/7z.h +0 -202
  136. package/harmony/src/main/cpp/lzma/C/7zAlloc.c +0 -80
  137. package/harmony/src/main/cpp/lzma/C/7zAlloc.h +0 -19
  138. package/harmony/src/main/cpp/lzma/C/7zArcIn.c +0 -1771
  139. package/harmony/src/main/cpp/lzma/C/7zBuf.c +0 -36
  140. package/harmony/src/main/cpp/lzma/C/7zBuf.h +0 -35
  141. package/harmony/src/main/cpp/lzma/C/7zBuf2.c +0 -52
  142. package/harmony/src/main/cpp/lzma/C/7zCrc.c +0 -128
  143. package/harmony/src/main/cpp/lzma/C/7zCrc.h +0 -25
  144. package/harmony/src/main/cpp/lzma/C/7zCrcOpt.c +0 -115
  145. package/harmony/src/main/cpp/lzma/C/7zDec.c +0 -591
  146. package/harmony/src/main/cpp/lzma/C/7zFile.c +0 -286
  147. package/harmony/src/main/cpp/lzma/C/7zFile.h +0 -83
  148. package/harmony/src/main/cpp/lzma/C/7zStream.c +0 -176
  149. package/harmony/src/main/cpp/lzma/C/7zTypes.h +0 -375
  150. package/harmony/src/main/cpp/lzma/C/7zVersion.h +0 -27
  151. package/harmony/src/main/cpp/lzma/C/7zVersion.rc +0 -55
  152. package/harmony/src/main/cpp/lzma/C/Aes.c +0 -306
  153. package/harmony/src/main/cpp/lzma/C/Aes.h +0 -38
  154. package/harmony/src/main/cpp/lzma/C/AesOpt.c +0 -184
  155. package/harmony/src/main/cpp/lzma/C/Alloc.c +0 -455
  156. package/harmony/src/main/cpp/lzma/C/Alloc.h +0 -51
  157. package/harmony/src/main/cpp/lzma/C/Bcj2.c +0 -257
  158. package/harmony/src/main/cpp/lzma/C/Bcj2.h +0 -146
  159. package/harmony/src/main/cpp/lzma/C/Bcj2Enc.c +0 -311
  160. package/harmony/src/main/cpp/lzma/C/Bra.c +0 -230
  161. package/harmony/src/main/cpp/lzma/C/Bra.h +0 -64
  162. package/harmony/src/main/cpp/lzma/C/Bra86.c +0 -82
  163. package/harmony/src/main/cpp/lzma/C/BraIA64.c +0 -53
  164. package/harmony/src/main/cpp/lzma/C/Compiler.h +0 -33
  165. package/harmony/src/main/cpp/lzma/C/CpuArch.c +0 -218
  166. package/harmony/src/main/cpp/lzma/C/CpuArch.h +0 -336
  167. package/harmony/src/main/cpp/lzma/C/Delta.c +0 -64
  168. package/harmony/src/main/cpp/lzma/C/Delta.h +0 -19
  169. package/harmony/src/main/cpp/lzma/C/DllSecur.c +0 -108
  170. package/harmony/src/main/cpp/lzma/C/DllSecur.h +0 -20
  171. package/harmony/src/main/cpp/lzma/C/LzFind.c +0 -1127
  172. package/harmony/src/main/cpp/lzma/C/LzFind.h +0 -121
  173. package/harmony/src/main/cpp/lzma/C/LzFindMt.c +0 -853
  174. package/harmony/src/main/cpp/lzma/C/LzFindMt.h +0 -101
  175. package/harmony/src/main/cpp/lzma/C/LzHash.h +0 -57
  176. package/harmony/src/main/cpp/lzma/C/Lzma2Dec.c +0 -488
  177. package/harmony/src/main/cpp/lzma/C/Lzma2Dec.h +0 -120
  178. package/harmony/src/main/cpp/lzma/C/Lzma2DecMt.c +0 -1082
  179. package/harmony/src/main/cpp/lzma/C/Lzma2DecMt.h +0 -79
  180. package/harmony/src/main/cpp/lzma/C/Lzma2Enc.c +0 -803
  181. package/harmony/src/main/cpp/lzma/C/Lzma2Enc.h +0 -55
  182. package/harmony/src/main/cpp/lzma/C/Lzma86.h +0 -111
  183. package/harmony/src/main/cpp/lzma/C/Lzma86Dec.c +0 -54
  184. package/harmony/src/main/cpp/lzma/C/Lzma86Enc.c +0 -106
  185. package/harmony/src/main/cpp/lzma/C/LzmaDec.c +0 -1185
  186. package/harmony/src/main/cpp/lzma/C/LzmaDec.h +0 -234
  187. package/harmony/src/main/cpp/lzma/C/LzmaEnc.c +0 -2976
  188. package/harmony/src/main/cpp/lzma/C/LzmaEnc.h +0 -76
  189. package/harmony/src/main/cpp/lzma/C/LzmaLib.c +0 -40
  190. package/harmony/src/main/cpp/lzma/C/LzmaLib.h +0 -131
  191. package/harmony/src/main/cpp/lzma/C/MtCoder.c +0 -601
  192. package/harmony/src/main/cpp/lzma/C/MtCoder.h +0 -141
  193. package/harmony/src/main/cpp/lzma/C/MtDec.c +0 -1138
  194. package/harmony/src/main/cpp/lzma/C/MtDec.h +0 -201
  195. package/harmony/src/main/cpp/lzma/C/Ppmd.h +0 -85
  196. package/harmony/src/main/cpp/lzma/C/Ppmd7.c +0 -712
  197. package/harmony/src/main/cpp/lzma/C/Ppmd7.h +0 -142
  198. package/harmony/src/main/cpp/lzma/C/Ppmd7Dec.c +0 -191
  199. package/harmony/src/main/cpp/lzma/C/Ppmd7Enc.c +0 -187
  200. package/harmony/src/main/cpp/lzma/C/Precomp.h +0 -10
  201. package/harmony/src/main/cpp/lzma/C/RotateDefs.h +0 -30
  202. package/harmony/src/main/cpp/lzma/C/Sha256.c +0 -248
  203. package/harmony/src/main/cpp/lzma/C/Sha256.h +0 -26
  204. package/harmony/src/main/cpp/lzma/C/Sort.c +0 -141
  205. package/harmony/src/main/cpp/lzma/C/Sort.h +0 -18
  206. package/harmony/src/main/cpp/lzma/C/Threads.c +0 -95
  207. package/harmony/src/main/cpp/lzma/C/Threads.h +0 -70
  208. package/harmony/src/main/cpp/lzma/C/ThreadsP.c +0 -396
  209. package/harmony/src/main/cpp/lzma/C/ThreadsP.h +0 -31
  210. package/harmony/src/main/cpp/lzma/C/Util/7z/7z.dsp +0 -241
  211. package/harmony/src/main/cpp/lzma/C/Util/7z/7z.dsw +0 -29
  212. package/harmony/src/main/cpp/lzma/C/Util/7z/7zMain.c +0 -686
  213. package/harmony/src/main/cpp/lzma/C/Util/7z/Precomp.c +0 -4
  214. package/harmony/src/main/cpp/lzma/C/Util/7z/Precomp.h +0 -10
  215. package/harmony/src/main/cpp/lzma/C/Util/7z/makefile +0 -40
  216. package/harmony/src/main/cpp/lzma/C/Util/7z/makefile.gcc +0 -75
  217. package/harmony/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.c +0 -258
  218. package/harmony/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.dsp +0 -168
  219. package/harmony/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.dsw +0 -29
  220. package/harmony/src/main/cpp/lzma/C/Util/Lzma/makefile +0 -28
  221. package/harmony/src/main/cpp/lzma/C/Util/Lzma/makefile.gcc +0 -44
  222. package/harmony/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.def +0 -4
  223. package/harmony/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.dsp +0 -178
  224. package/harmony/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.dsw +0 -29
  225. package/harmony/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLibExports.c +0 -14
  226. package/harmony/src/main/cpp/lzma/C/Util/LzmaLib/makefile +0 -34
  227. package/harmony/src/main/cpp/lzma/C/Util/LzmaLib/resource.rc +0 -3
  228. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/Precomp.c +0 -4
  229. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/Precomp.h +0 -10
  230. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.c +0 -640
  231. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.dsp +0 -231
  232. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.dsw +0 -29
  233. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/makefile +0 -37
  234. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/makefile_con +0 -38
  235. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/resource.rc +0 -5
  236. package/harmony/src/main/cpp/lzma/C/Util/SfxSetup/setup.ico +0 -0
  237. package/harmony/src/main/cpp/lzma/C/Xz.c +0 -90
  238. package/harmony/src/main/cpp/lzma/C/Xz.h +0 -460
  239. package/harmony/src/main/cpp/lzma/C/XzCrc64.c +0 -86
  240. package/harmony/src/main/cpp/lzma/C/XzCrc64.h +0 -26
  241. package/harmony/src/main/cpp/lzma/C/XzCrc64Opt.c +0 -69
  242. package/harmony/src/main/cpp/lzma/C/XzDec.c +0 -2766
  243. package/harmony/src/main/cpp/lzma/C/XzEnc.c +0 -1329
  244. package/harmony/src/main/cpp/lzma/C/XzEnc.h +0 -60
  245. package/harmony/src/main/cpp/lzma/C/XzIn.c +0 -319
  246. package/harmony/src/main/cpp/lzma/CPP/7zip/7zip.mak +0 -240
  247. package/harmony/src/main/cpp/lzma/CPP/7zip/Aes.mak +0 -7
  248. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +0 -3
  249. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +0 -76
  250. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +0 -569
  251. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.h +0 -70
  252. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +0 -678
  253. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.h +0 -92
  254. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +0 -423
  255. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +0 -139
  256. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +0 -61
  257. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +0 -763
  258. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.h +0 -181
  259. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +0 -942
  260. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +0 -19
  261. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.h +0 -148
  262. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.cpp +0 -1666
  263. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.h +0 -445
  264. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zItem.h +0 -202
  265. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.cpp +0 -901
  266. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.h +0 -335
  267. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +0 -174
  268. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.h +0 -22
  269. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +0 -21
  270. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +0 -22
  271. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +0 -35
  272. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +0 -2500
  273. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.h +0 -139
  274. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +0 -3
  275. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/7z/StdAfx.h +0 -8
  276. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Archive.def +0 -12
  277. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Archive2.def +0 -19
  278. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/ArchiveExports.cpp +0 -151
  279. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +0 -1125
  280. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +0 -447
  281. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +0 -17
  282. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +0 -25
  283. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +0 -232
  284. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.h +0 -110
  285. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +0 -46
  286. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +0 -67
  287. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +0 -88
  288. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +0 -28
  289. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +0 -191
  290. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.h +0 -89
  291. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +0 -18
  292. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +0 -37
  293. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +0 -3
  294. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/ParseProperties.h +0 -6
  295. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Common/StdAfx.h +0 -8
  296. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/DllExports2.cpp +0 -122
  297. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/IArchive.h +0 -608
  298. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
  299. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/LzmaHandler.cpp +0 -629
  300. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/SplitHandler.cpp +0 -359
  301. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/StdAfx.h +0 -8
  302. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.cpp +0 -1308
  303. package/harmony/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.h +0 -11
  304. package/harmony/src/main/cpp/lzma/CPP/7zip/Asm.mak +0 -9
  305. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +0 -1910
  306. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +0 -29
  307. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +0 -3
  308. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +0 -8
  309. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/makefile +0 -154
  310. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +0 -7
  311. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +0 -3
  312. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +0 -8
  313. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +0 -96
  314. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +0 -5
  315. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +0 -3
  316. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +0 -8
  317. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/makefile +0 -116
  318. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +0 -5
  319. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +0 -799
  320. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +0 -477
  321. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +0 -29
  322. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +0 -3
  323. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +0 -8
  324. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile +0 -59
  325. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +0 -195
  326. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +0 -3
  327. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +0 -715
  328. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  329. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +0 -912
  330. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +0 -29
  331. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +0 -482
  332. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +0 -3
  333. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +0 -8
  334. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/makefile +0 -134
  335. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +0 -5
  336. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +0 -246
  337. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +0 -86
  338. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +0 -137
  339. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +0 -11
  340. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +0 -803
  341. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +0 -29
  342. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +0 -364
  343. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +0 -3
  344. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +0 -13
  345. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/makefile +0 -117
  346. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +0 -6
  347. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +0 -16
  348. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  349. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  350. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +0 -988
  351. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +0 -29
  352. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +0 -241
  353. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +0 -3
  354. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +0 -14
  355. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/makefile +0 -153
  356. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/resource.h +0 -1
  357. package/harmony/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +0 -50
  358. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.cpp +0 -250
  359. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.h +0 -120
  360. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.cpp +0 -536
  361. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.h +0 -192
  362. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +0 -46
  363. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.h +0 -10
  364. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.cpp +0 -475
  365. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.h +0 -166
  366. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.cpp +0 -435
  367. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.h +0 -205
  368. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.cpp +0 -163
  369. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.h +0 -92
  370. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +0 -127
  371. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.h +0 -48
  372. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.cpp +0 -367
  373. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.h +0 -252
  374. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/LockedStream.cpp +0 -3
  375. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/LockedStream.h +0 -6
  376. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/MethodId.cpp +0 -3
  377. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/MethodId.h +0 -10
  378. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.cpp +0 -509
  379. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.h +0 -264
  380. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.cpp +0 -39
  381. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.h +0 -26
  382. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.cpp +0 -111
  383. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.h +0 -66
  384. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.cpp +0 -51
  385. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.h +0 -35
  386. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/PropId.cpp +0 -108
  387. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/RegisterArc.h +0 -78
  388. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/RegisterCodec.h +0 -106
  389. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/StdAfx.h +0 -8
  390. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.cpp +0 -156
  391. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.h +0 -60
  392. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.cpp +0 -285
  393. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.h +0 -157
  394. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.cpp +0 -56
  395. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.h +0 -13
  396. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.cpp +0 -57
  397. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.h +0 -26
  398. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.cpp +0 -48
  399. package/harmony/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.h +0 -24
  400. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +0 -666
  401. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.h +0 -120
  402. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Register.cpp +0 -24
  403. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.cpp +0 -24
  404. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.h +0 -31
  405. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/BcjRegister.cpp +0 -17
  406. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.cpp +0 -23
  407. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.h +0 -35
  408. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/BranchRegister.cpp +0 -41
  409. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/ByteSwap.cpp +0 -92
  410. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/CodecExports.cpp +0 -344
  411. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.cpp +0 -120
  412. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.h +0 -49
  413. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/CopyRegister.cpp +0 -15
  414. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/DeltaFilter.cpp +0 -128
  415. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +0 -265
  416. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.h +0 -96
  417. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +0 -122
  418. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.h +0 -42
  419. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Register.cpp +0 -22
  420. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +0 -343
  421. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.h +0 -113
  422. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +0 -182
  423. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.h +0 -46
  424. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/LzmaRegister.cpp +0 -22
  425. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +0 -170
  426. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.h +0 -86
  427. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +0 -152
  428. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.h +0 -58
  429. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/PpmdRegister.cpp +0 -22
  430. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/StdAfx.h +0 -8
  431. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.cpp +0 -150
  432. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.h +0 -92
  433. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.cpp +0 -245
  434. package/harmony/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.h +0 -46
  435. package/harmony/src/main/cpp/lzma/CPP/7zip/Crc.mak +0 -8
  436. package/harmony/src/main/cpp/lzma/CPP/7zip/Crc64.mak +0 -8
  437. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.cpp +0 -280
  438. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.h +0 -118
  439. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +0 -17
  440. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.cpp +0 -112
  441. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.h +0 -57
  442. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/MyAesReg.cpp +0 -16
  443. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.cpp +0 -233
  444. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.h +0 -40
  445. package/harmony/src/main/cpp/lzma/CPP/7zip/Crypto/StdAfx.h +0 -8
  446. package/harmony/src/main/cpp/lzma/CPP/7zip/GuiCommon.rc +0 -84
  447. package/harmony/src/main/cpp/lzma/CPP/7zip/Guid.txt +0 -220
  448. package/harmony/src/main/cpp/lzma/CPP/7zip/ICoder.h +0 -399
  449. package/harmony/src/main/cpp/lzma/CPP/7zip/IDecl.h +0 -28
  450. package/harmony/src/main/cpp/lzma/CPP/7zip/IPassword.h +0 -23
  451. package/harmony/src/main/cpp/lzma/CPP/7zip/IProgress.h +0 -19
  452. package/harmony/src/main/cpp/lzma/CPP/7zip/IStream.h +0 -127
  453. package/harmony/src/main/cpp/lzma/CPP/7zip/LzmaDec.mak +0 -5
  454. package/harmony/src/main/cpp/lzma/CPP/7zip/MyVersion.h +0 -2
  455. package/harmony/src/main/cpp/lzma/CPP/7zip/MyVersionInfo.rc +0 -2
  456. package/harmony/src/main/cpp/lzma/CPP/7zip/PropID.h +0 -127
  457. package/harmony/src/main/cpp/lzma/CPP/7zip/SubBuild.mak +0 -3
  458. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +0 -993
  459. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +0 -235
  460. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +0 -29
  461. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +0 -3
  462. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Client7z/StdAfx.h +0 -8
  463. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Client7z/makefile +0 -28
  464. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Client7z/resource.rc +0 -3
  465. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +0 -1295
  466. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +0 -136
  467. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +0 -1715
  468. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +0 -403
  469. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +0 -155
  470. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.h +0 -10
  471. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +0 -161
  472. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +0 -112
  473. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.cpp +0 -3618
  474. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.h +0 -77
  475. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.cpp +0 -37
  476. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.h +0 -11
  477. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/DirItem.h +0 -190
  478. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +0 -1096
  479. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.h +0 -42
  480. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ExitCode.h +0 -27
  481. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.cpp +0 -482
  482. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.h +0 -94
  483. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractMode.h +0 -34
  484. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +0 -280
  485. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +0 -31
  486. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.cpp +0 -347
  487. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.h +0 -110
  488. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +0 -114
  489. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +0 -1074
  490. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.h +0 -424
  491. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +0 -3553
  492. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.h +0 -436
  493. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +0 -668
  494. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.h +0 -18
  495. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/Property.h +0 -14
  496. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.cpp +0 -80
  497. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.h +0 -10
  498. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/SortUtils.cpp +0 -25
  499. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/SortUtils.h +0 -10
  500. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/StdAfx.h +0 -8
  501. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.cpp +0 -19
  502. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.h +0 -16
  503. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.cpp +0 -1704
  504. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.h +0 -200
  505. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +0 -64
  506. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateAction.h +0 -66
  507. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +0 -771
  508. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.h +0 -162
  509. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +0 -233
  510. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.h +0 -27
  511. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +0 -70
  512. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.h +0 -55
  513. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.cpp +0 -94
  514. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.h +0 -26
  515. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Common/ZipRegistry.h +0 -130
  516. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.cpp +0 -41
  517. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.h +0 -14
  518. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.mak +0 -43
  519. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.manifest +0 -13
  520. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +0 -69
  521. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.h +0 -33
  522. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +0 -825
  523. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +0 -164
  524. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.cpp +0 -367
  525. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.h +0 -48
  526. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/List.cpp +0 -1359
  527. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/List.h +0 -27
  528. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/Main.cpp +0 -1154
  529. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/MainAr.cpp +0 -175
  530. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +0 -115
  531. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +0 -66
  532. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +0 -183
  533. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.h +0 -62
  534. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/StdAfx.cpp +0 -3
  535. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/StdAfx.h +0 -8
  536. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +0 -702
  537. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +0 -124
  538. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +0 -110
  539. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.h +0 -27
  540. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/makefile +0 -64
  541. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Console/resource.rc +0 -7
  542. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +0 -37
  543. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.h +0 -16
  544. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +0 -1025
  545. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +0 -21
  546. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +0 -9
  547. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +0 -64
  548. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +0 -28
  549. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +0 -4
  550. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/DialogSize.h +0 -16
  551. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +0 -1037
  552. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +0 -328
  553. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +0 -28
  554. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +0 -14
  555. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/LangUtils.h +0 -40
  556. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +0 -76
  557. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +0 -122
  558. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +0 -69
  559. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +0 -91
  560. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +0 -17
  561. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +0 -58
  562. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +0 -28
  563. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +0 -14
  564. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +0 -5
  565. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +0 -196
  566. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +0 -170
  567. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +0 -12
  568. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +0 -1337
  569. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +0 -351
  570. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +0 -40
  571. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +0 -48
  572. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +0 -80
  573. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +0 -3
  574. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +0 -23
  575. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyName.h +0 -10
  576. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +0 -95
  577. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +0 -255
  578. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +0 -62
  579. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resource.h +0 -177
  580. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resourceGui.h +0 -15
  581. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/Extract.rc +0 -59
  582. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +0 -418
  583. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +0 -113
  584. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +0 -98
  585. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +0 -24
  586. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +0 -280
  587. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +0 -38
  588. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractRes.h +0 -51
  589. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/HashGUI.h +0 -27
  590. package/harmony/src/main/cpp/lzma/CPP/7zip/UI/GUI/resource2.h +0 -2
  591. package/harmony/src/main/cpp/lzma/CPP/Build.mak +0 -156
  592. package/harmony/src/main/cpp/lzma/CPP/Common/AutoPtr.h +0 -35
  593. package/harmony/src/main/cpp/lzma/CPP/Common/CRC.cpp +0 -7
  594. package/harmony/src/main/cpp/lzma/CPP/Common/C_FileIO.cpp +0 -92
  595. package/harmony/src/main/cpp/lzma/CPP/Common/C_FileIO.h +0 -53
  596. package/harmony/src/main/cpp/lzma/CPP/Common/ComTry.h +0 -21
  597. package/harmony/src/main/cpp/lzma/CPP/Common/CommandLineParser.cpp +0 -197
  598. package/harmony/src/main/cpp/lzma/CPP/Common/CommandLineParser.h +0 -63
  599. package/harmony/src/main/cpp/lzma/CPP/Common/Common.h +0 -43
  600. package/harmony/src/main/cpp/lzma/CPP/Common/CrcReg.cpp +0 -98
  601. package/harmony/src/main/cpp/lzma/CPP/Common/Defs.h +0 -15
  602. package/harmony/src/main/cpp/lzma/CPP/Common/DynamicBuffer.h +0 -64
  603. package/harmony/src/main/cpp/lzma/CPP/Common/IntToString.cpp +0 -193
  604. package/harmony/src/main/cpp/lzma/CPP/Common/IntToString.h +0 -28
  605. package/harmony/src/main/cpp/lzma/CPP/Common/Lang.h +0 -23
  606. package/harmony/src/main/cpp/lzma/CPP/Common/ListFileUtils.cpp +0 -132
  607. package/harmony/src/main/cpp/lzma/CPP/Common/ListFileUtils.h +0 -18
  608. package/harmony/src/main/cpp/lzma/CPP/Common/MyBuffer.h +0 -259
  609. package/harmony/src/main/cpp/lzma/CPP/Common/MyBuffer2.h +0 -100
  610. package/harmony/src/main/cpp/lzma/CPP/Common/MyCom.h +0 -277
  611. package/harmony/src/main/cpp/lzma/CPP/Common/MyException.h +0 -14
  612. package/harmony/src/main/cpp/lzma/CPP/Common/MyGuidDef.h +0 -54
  613. package/harmony/src/main/cpp/lzma/CPP/Common/MyInitGuid.h +0 -45
  614. package/harmony/src/main/cpp/lzma/CPP/Common/MyLinux.h +0 -42
  615. package/harmony/src/main/cpp/lzma/CPP/Common/MyString.cpp +0 -1659
  616. package/harmony/src/main/cpp/lzma/CPP/Common/MyString.h +0 -868
  617. package/harmony/src/main/cpp/lzma/CPP/Common/MyTypes.h +0 -35
  618. package/harmony/src/main/cpp/lzma/CPP/Common/MyUnknown.h +0 -17
  619. package/harmony/src/main/cpp/lzma/CPP/Common/MyVector.cpp +0 -3
  620. package/harmony/src/main/cpp/lzma/CPP/Common/MyVector.h +0 -634
  621. package/harmony/src/main/cpp/lzma/CPP/Common/MyWindows.cpp +0 -145
  622. package/harmony/src/main/cpp/lzma/CPP/Common/MyWindows.h +0 -231
  623. package/harmony/src/main/cpp/lzma/CPP/Common/NewHandler.cpp +0 -163
  624. package/harmony/src/main/cpp/lzma/CPP/Common/NewHandler.h +0 -88
  625. package/harmony/src/main/cpp/lzma/CPP/Common/Sha256Reg.cpp +0 -40
  626. package/harmony/src/main/cpp/lzma/CPP/Common/StdAfx.h +0 -8
  627. package/harmony/src/main/cpp/lzma/CPP/Common/StdInStream.cpp +0 -89
  628. package/harmony/src/main/cpp/lzma/CPP/Common/StdInStream.h +0 -38
  629. package/harmony/src/main/cpp/lzma/CPP/Common/StdOutStream.cpp +0 -163
  630. package/harmony/src/main/cpp/lzma/CPP/Common/StdOutStream.h +0 -71
  631. package/harmony/src/main/cpp/lzma/CPP/Common/StringConvert.cpp +0 -319
  632. package/harmony/src/main/cpp/lzma/CPP/Common/StringConvert.h +0 -88
  633. package/harmony/src/main/cpp/lzma/CPP/Common/StringToInt.cpp +0 -144
  634. package/harmony/src/main/cpp/lzma/CPP/Common/StringToInt.h +0 -21
  635. package/harmony/src/main/cpp/lzma/CPP/Common/TextConfig.cpp +0 -124
  636. package/harmony/src/main/cpp/lzma/CPP/Common/TextConfig.h +0 -19
  637. package/harmony/src/main/cpp/lzma/CPP/Common/UTFConvert.cpp +0 -288
  638. package/harmony/src/main/cpp/lzma/CPP/Common/UTFConvert.h +0 -12
  639. package/harmony/src/main/cpp/lzma/CPP/Common/Wildcard.cpp +0 -676
  640. package/harmony/src/main/cpp/lzma/CPP/Common/Wildcard.h +0 -149
  641. package/harmony/src/main/cpp/lzma/CPP/Common/XzCrc64Init.cpp +0 -7
  642. package/harmony/src/main/cpp/lzma/CPP/Common/XzCrc64Reg.cpp +0 -42
  643. package/harmony/src/main/cpp/lzma/CPP/Windows/COM.h +0 -70
  644. package/harmony/src/main/cpp/lzma/CPP/Windows/CommonDialog.cpp +0 -185
  645. package/harmony/src/main/cpp/lzma/CPP/Windows/CommonDialog.h +0 -23
  646. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.cpp +0 -66
  647. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.h +0 -65
  648. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/CommandBar.h +0 -52
  649. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/Dialog.cpp +0 -251
  650. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/Dialog.h +0 -170
  651. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/Edit.h +0 -19
  652. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ImageList.cpp +0 -10
  653. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ImageList.h +0 -87
  654. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ListView.cpp +0 -155
  655. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ListView.h +0 -146
  656. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ProgressBar.h +0 -35
  657. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.cpp +0 -143
  658. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.h +0 -50
  659. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ReBar.h +0 -34
  660. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/Static.h +0 -28
  661. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/StatusBar.h +0 -42
  662. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/StdAfx.h +0 -8
  663. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/ToolBar.h +0 -43
  664. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/Trackbar.h +0 -27
  665. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/Window2.cpp +0 -200
  666. package/harmony/src/main/cpp/lzma/CPP/Windows/Control/Window2.h +0 -51
  667. package/harmony/src/main/cpp/lzma/CPP/Windows/DLL.cpp +0 -109
  668. package/harmony/src/main/cpp/lzma/CPP/Windows/DLL.h +0 -58
  669. package/harmony/src/main/cpp/lzma/CPP/Windows/Defs.h +0 -17
  670. package/harmony/src/main/cpp/lzma/CPP/Windows/ErrorMsg.cpp +0 -66
  671. package/harmony/src/main/cpp/lzma/CPP/Windows/ErrorMsg.h +0 -15
  672. package/harmony/src/main/cpp/lzma/CPP/Windows/FileDir.cpp +0 -714
  673. package/harmony/src/main/cpp/lzma/CPP/Windows/FileDir.h +0 -117
  674. package/harmony/src/main/cpp/lzma/CPP/Windows/FileFind.cpp +0 -749
  675. package/harmony/src/main/cpp/lzma/CPP/Windows/FileFind.h +0 -161
  676. package/harmony/src/main/cpp/lzma/CPP/Windows/FileIO.cpp +0 -432
  677. package/harmony/src/main/cpp/lzma/CPP/Windows/FileIO.h +0 -212
  678. package/harmony/src/main/cpp/lzma/CPP/Windows/FileLink.cpp +0 -440
  679. package/harmony/src/main/cpp/lzma/CPP/Windows/FileMapping.cpp +0 -12
  680. package/harmony/src/main/cpp/lzma/CPP/Windows/FileMapping.h +0 -66
  681. package/harmony/src/main/cpp/lzma/CPP/Windows/FileName.cpp +0 -839
  682. package/harmony/src/main/cpp/lzma/CPP/Windows/FileName.h +0 -115
  683. package/harmony/src/main/cpp/lzma/CPP/Windows/FileSystem.cpp +0 -131
  684. package/harmony/src/main/cpp/lzma/CPP/Windows/FileSystem.h +0 -27
  685. package/harmony/src/main/cpp/lzma/CPP/Windows/Handle.h +0 -37
  686. package/harmony/src/main/cpp/lzma/CPP/Windows/MemoryLock.cpp +0 -112
  687. package/harmony/src/main/cpp/lzma/CPP/Windows/MemoryLock.h +0 -40
  688. package/harmony/src/main/cpp/lzma/CPP/Windows/NtCheck.h +0 -46
  689. package/harmony/src/main/cpp/lzma/CPP/Windows/PropVariant.cpp +0 -347
  690. package/harmony/src/main/cpp/lzma/CPP/Windows/PropVariant.h +0 -114
  691. package/harmony/src/main/cpp/lzma/CPP/Windows/PropVariantConv.cpp +0 -138
  692. package/harmony/src/main/cpp/lzma/CPP/Windows/PropVariantConv.h +0 -37
  693. package/harmony/src/main/cpp/lzma/CPP/Windows/Registry.cpp +0 -390
  694. package/harmony/src/main/cpp/lzma/CPP/Windows/Registry.h +0 -84
  695. package/harmony/src/main/cpp/lzma/CPP/Windows/ResourceString.cpp +0 -103
  696. package/harmony/src/main/cpp/lzma/CPP/Windows/ResourceString.h +0 -16
  697. package/harmony/src/main/cpp/lzma/CPP/Windows/SecurityUtils.cpp +0 -181
  698. package/harmony/src/main/cpp/lzma/CPP/Windows/SecurityUtils.h +0 -167
  699. package/harmony/src/main/cpp/lzma/CPP/Windows/Shell.cpp +0 -358
  700. package/harmony/src/main/cpp/lzma/CPP/Windows/Shell.h +0 -94
  701. package/harmony/src/main/cpp/lzma/CPP/Windows/StdAfx.h +0 -8
  702. package/harmony/src/main/cpp/lzma/CPP/Windows/Synchronization.cpp +0 -10
  703. package/harmony/src/main/cpp/lzma/CPP/Windows/Synchronization.h +0 -164
  704. package/harmony/src/main/cpp/lzma/CPP/Windows/System.cpp +0 -142
  705. package/harmony/src/main/cpp/lzma/CPP/Windows/System.h +0 -40
  706. package/harmony/src/main/cpp/lzma/CPP/Windows/Thread.h +0 -38
  707. package/harmony/src/main/cpp/lzma/CPP/Windows/TimeUtils.cpp +0 -213
  708. package/harmony/src/main/cpp/lzma/CPP/Windows/TimeUtils.h +0 -32
  709. package/harmony/src/main/cpp/lzma/CPP/Windows/Window.cpp +0 -179
  710. package/harmony/src/main/cpp/lzma/CPP/Windows/Window.h +0 -284
  711. package/harmony/src/main/cpp/lzma/CS/7zip/Common/CRC.cs +0 -55
  712. package/harmony/src/main/cpp/lzma/CS/7zip/Common/CommandLineParser.cs +0 -274
  713. package/harmony/src/main/cpp/lzma/CS/7zip/Common/InBuffer.cs +0 -72
  714. package/harmony/src/main/cpp/lzma/CS/7zip/Common/OutBuffer.cs +0 -47
  715. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +0 -24
  716. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +0 -367
  717. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +0 -132
  718. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +0 -110
  719. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +0 -76
  720. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +0 -398
  721. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +0 -1480
  722. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +0 -364
  723. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +0 -90
  724. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +0 -20
  725. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +0 -340
  726. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +0 -29
  727. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +0 -70
  728. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +0 -42
  729. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +0 -234
  730. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +0 -117
  731. package/harmony/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +0 -157
  732. package/harmony/src/main/cpp/lzma/CS/7zip/ICoder.cs +0 -157
  733. package/harmony/src/main/cpp/lzma/DOC/7zC.txt +0 -187
  734. package/harmony/src/main/cpp/lzma/DOC/7zFormat.txt +0 -469
  735. package/harmony/src/main/cpp/lzma/DOC/Methods.txt +0 -173
  736. package/harmony/src/main/cpp/lzma/DOC/installer.txt +0 -166
  737. package/harmony/src/main/cpp/lzma/DOC/lzma-history.txt +0 -446
  738. package/harmony/src/main/cpp/lzma/DOC/lzma-sdk.txt +0 -357
  739. package/harmony/src/main/cpp/lzma/DOC/lzma-specification.txt +0 -1176
  740. package/harmony/src/main/cpp/lzma/DOC/lzma.txt +0 -328
  741. package/harmony/src/main/cpp/lzma/Java/SevenZip/CRC.java +0 -52
  742. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/BinTree.java +0 -382
  743. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/InWindow.java +0 -131
  744. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +0 -85
  745. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Base.java +0 -88
  746. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +0 -329
  747. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +0 -1416
  748. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +0 -55
  749. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +0 -99
  750. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +0 -88
  751. package/harmony/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +0 -151
  752. package/harmony/src/main/cpp/lzma/Java/SevenZip/ICodeProgress.java +0 -6
  753. package/harmony/src/main/cpp/lzma/Java/SevenZip/LzmaAlone.java +0 -253
  754. package/harmony/src/main/cpp/lzma/Java/SevenZip/LzmaBench.java +0 -392
  755. package/harmony/src/main/cpp/lzma/bin/7zS2.sfx +0 -0
  756. package/harmony/src/main/cpp/lzma/bin/7zS2con.sfx +0 -0
  757. package/harmony/src/main/cpp/lzma/bin/7zSD.sfx +0 -0
  758. package/harmony/src/main/cpp/lzma/bin/7zdec.exe +0 -0
  759. package/harmony/src/main/cpp/lzma/bin/7zr.exe +0 -0
  760. package/harmony/src/main/cpp/lzma/bin/installer/config.txt +0 -5
  761. package/harmony/src/main/cpp/lzma/bin/installer/cr.bat +0 -5
  762. package/harmony/src/main/cpp/lzma/bin/lzma.exe +0 -0
  763. package/harmony/src/main/cpp/lzma/bin/x64/7zr.exe +0 -0
@@ -1,3618 +0,0 @@
1
- // Bench.cpp
2
-
3
- #include "StdAfx.h"
4
-
5
- #include <stdio.h>
6
-
7
- #ifndef _WIN32
8
- #define USE_POSIX_TIME
9
- #define USE_POSIX_TIME2
10
- #endif
11
-
12
- #ifdef USE_POSIX_TIME
13
- #include <time.h>
14
- #ifdef USE_POSIX_TIME2
15
- #include <sys/time.h>
16
- #endif
17
- #endif
18
-
19
- #ifdef _WIN32
20
- #define USE_ALLOCA
21
- #endif
22
-
23
- #ifdef USE_ALLOCA
24
- #ifdef _WIN32
25
- #include <malloc.h>
26
- #else
27
- #include <stdlib.h>
28
- #endif
29
- #endif
30
-
31
- #include "../../../../C/7zCrc.h"
32
- #include "../../../../C/CpuArch.h"
33
-
34
- #ifndef _7ZIP_ST
35
- #include "../../../Windows/Synchronization.h"
36
- #include "../../../Windows/Thread.h"
37
- #endif
38
-
39
- #if defined(_WIN32) || defined(UNIX_USE_WIN_FILE)
40
- #define USE_WIN_FILE
41
- #endif
42
-
43
- #ifdef USE_WIN_FILE
44
- #include "../../../Windows/FileIO.h"
45
- #endif
46
-
47
-
48
- #include "../../../Common/IntToString.h"
49
- #include "../../../Common/MyBuffer2.h"
50
- #include "../../../Common/StringConvert.h"
51
- #include "../../../Common/StringToInt.h"
52
-
53
- #include "../../Common/MethodProps.h"
54
- #include "../../Common/StreamUtils.h"
55
-
56
- #include "Bench.h"
57
-
58
- using namespace NWindows;
59
-
60
- static const UInt32 k_LZMA = 0x030101;
61
-
62
- static const UInt64 kComplexInCommands = (UInt64)1 <<
63
- #ifdef UNDER_CE
64
- 31;
65
- #else
66
- 34;
67
- #endif
68
-
69
- static const UInt32 kComplexInSeconds = 4;
70
-
71
- static void SetComplexCommands(UInt32 complexInSeconds,
72
- bool isSpecifiedFreq, UInt64 cpuFreq, UInt64 &complexInCommands)
73
- {
74
- complexInCommands = kComplexInCommands;
75
- const UInt64 kMinFreq = (UInt64)1000000 * 4;
76
- const UInt64 kMaxFreq = (UInt64)1000000 * 20000;
77
- if (cpuFreq < kMinFreq && !isSpecifiedFreq)
78
- cpuFreq = kMinFreq;
79
- if (cpuFreq < kMaxFreq || isSpecifiedFreq)
80
- {
81
- if (complexInSeconds != 0)
82
- complexInCommands = complexInSeconds * cpuFreq;
83
- else
84
- complexInCommands = cpuFreq >> 2;
85
- }
86
- }
87
-
88
- static const unsigned kNumHashDictBits = 17;
89
- static const UInt32 kFilterUnpackSize = (48 << 10);
90
-
91
- static const unsigned kOldLzmaDictBits = 30;
92
-
93
- static const UInt32 kAdditionalSize = (1 << 16);
94
- static const UInt32 kCompressedAdditionalSize = (1 << 10);
95
- static const UInt32 kMaxLzmaPropSize = 5;
96
-
97
-
98
-
99
- #define ALLOC_WITH_HRESULT(_buffer_, _size_) \
100
- (_buffer_)->Alloc(_size_); \
101
- if (!(_buffer_)->IsAllocated()) return E_OUTOFMEMORY;
102
-
103
-
104
- class CBaseRandomGenerator
105
- {
106
- UInt32 A1;
107
- UInt32 A2;
108
- UInt32 Salt;
109
- public:
110
- CBaseRandomGenerator(UInt32 salt = 0): Salt(salt) { Init(); }
111
- void Init() { A1 = 362436069; A2 = 521288629;}
112
- UInt32 GetRnd()
113
- {
114
- return Salt ^
115
- (
116
- ((A1 = 36969 * (A1 & 0xffff) + (A1 >> 16)) << 16) +
117
- ((A2 = 18000 * (A2 & 0xffff) + (A2 >> 16)) )
118
- );
119
- }
120
- };
121
-
122
-
123
- class CBenchRandomGenerator: public CAlignedBuffer
124
- {
125
- static UInt32 GetVal(UInt32 &res, unsigned numBits)
126
- {
127
- UInt32 val = res & (((UInt32)1 << numBits) - 1);
128
- res >>= numBits;
129
- return val;
130
- }
131
-
132
- static UInt32 GetLen(UInt32 &r)
133
- {
134
- UInt32 len = GetVal(r, 2);
135
- return GetVal(r, 1 + len);
136
- }
137
-
138
- public:
139
-
140
- void GenerateSimpleRandom(UInt32 salt)
141
- {
142
- CBaseRandomGenerator rg(salt);
143
- const size_t bufSize = Size();
144
- Byte *buf = (Byte *)*this;
145
- for (size_t i = 0; i < bufSize; i++)
146
- buf[i] = (Byte)rg.GetRnd();
147
- }
148
-
149
- void GenerateLz(unsigned dictBits, UInt32 salt)
150
- {
151
- CBaseRandomGenerator rg(salt);
152
- UInt32 pos = 0;
153
- UInt32 rep0 = 1;
154
- const size_t bufSize = Size();
155
- Byte *buf = (Byte *)*this;
156
- unsigned posBits = 1;
157
-
158
- while (pos < bufSize)
159
- {
160
- UInt32 r = rg.GetRnd();
161
- if (GetVal(r, 1) == 0 || pos < 1024)
162
- buf[pos++] = (Byte)(r & 0xFF);
163
- else
164
- {
165
- UInt32 len;
166
- len = 1 + GetLen(r);
167
-
168
- if (GetVal(r, 3) != 0)
169
- {
170
- len += GetLen(r);
171
-
172
- while (((UInt32)1 << posBits) < pos)
173
- posBits++;
174
-
175
- unsigned numBitsMax = dictBits;
176
- if (numBitsMax > posBits)
177
- numBitsMax = posBits;
178
-
179
- const unsigned kAddBits = 6;
180
- unsigned numLogBits = 5;
181
- if (numBitsMax <= (1 << 4) - 1 + kAddBits)
182
- numLogBits = 4;
183
-
184
- for (;;)
185
- {
186
- UInt32 ppp = GetVal(r, numLogBits) + kAddBits;
187
- r = rg.GetRnd();
188
- if (ppp > numBitsMax)
189
- continue;
190
- rep0 = GetVal(r, ppp);
191
- if (rep0 < pos)
192
- break;
193
- r = rg.GetRnd();
194
- }
195
- rep0++;
196
- }
197
-
198
- {
199
- UInt32 rem = (UInt32)bufSize - pos;
200
- if (len > rem)
201
- len = rem;
202
- }
203
- Byte *dest = buf + pos;
204
- const Byte *src = dest - rep0;
205
- pos += len;
206
- for (UInt32 i = 0; i < len; i++)
207
- *dest++ = *src++;
208
- }
209
- }
210
- }
211
- };
212
-
213
-
214
- class CBenchmarkInStream:
215
- public ISequentialInStream,
216
- public CMyUnknownImp
217
- {
218
- const Byte *Data;
219
- size_t Pos;
220
- size_t Size;
221
- public:
222
- MY_UNKNOWN_IMP
223
- void Init(const Byte *data, size_t size)
224
- {
225
- Data = data;
226
- Size = size;
227
- Pos = 0;
228
- }
229
- STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
230
- };
231
-
232
- STDMETHODIMP CBenchmarkInStream::Read(void *data, UInt32 size, UInt32 *processedSize)
233
- {
234
- size_t remain = Size - Pos;
235
- UInt32 kMaxBlockSize = (1 << 20);
236
- if (size > kMaxBlockSize)
237
- size = kMaxBlockSize;
238
- if (size > remain)
239
- size = (UInt32)remain;
240
- for (UInt32 i = 0; i < size; i++)
241
- ((Byte *)data)[i] = Data[Pos + i];
242
- Pos += size;
243
- if (processedSize)
244
- *processedSize = size;
245
- return S_OK;
246
- }
247
-
248
- class CBenchmarkOutStream:
249
- public ISequentialOutStream,
250
- public CAlignedBuffer,
251
- public CMyUnknownImp
252
- {
253
- // bool _overflow;
254
- public:
255
- size_t Pos;
256
- bool RealCopy;
257
- bool CalcCrc;
258
- UInt32 Crc;
259
-
260
- // CBenchmarkOutStream(): _overflow(false) {}
261
- void Init(bool realCopy, bool calcCrc)
262
- {
263
- Crc = CRC_INIT_VAL;
264
- RealCopy = realCopy;
265
- CalcCrc = calcCrc;
266
- // _overflow = false;
267
- Pos = 0;
268
- }
269
-
270
- // void Print() { printf("\n%8d %8d\n", (unsigned)BufferSize, (unsigned)Pos); }
271
-
272
- MY_UNKNOWN_IMP
273
- STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
274
- };
275
-
276
- STDMETHODIMP CBenchmarkOutStream::Write(const void *data, UInt32 size, UInt32 *processedSize)
277
- {
278
- size_t curSize = Size() - Pos;
279
- if (curSize > size)
280
- curSize = size;
281
- if (curSize != 0)
282
- {
283
- if (RealCopy)
284
- memcpy(((Byte *)*this) + Pos, data, curSize);
285
- if (CalcCrc)
286
- Crc = CrcUpdate(Crc, data, curSize);
287
- Pos += curSize;
288
- }
289
- if (processedSize)
290
- *processedSize = (UInt32)curSize;
291
- if (curSize != size)
292
- {
293
- // _overflow = true;
294
- return E_FAIL;
295
- }
296
- return S_OK;
297
- }
298
-
299
- class CCrcOutStream:
300
- public ISequentialOutStream,
301
- public CMyUnknownImp
302
- {
303
- public:
304
- bool CalcCrc;
305
- UInt32 Crc;
306
- MY_UNKNOWN_IMP
307
-
308
- CCrcOutStream(): CalcCrc(true) {};
309
- void Init() { Crc = CRC_INIT_VAL; }
310
- STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
311
- };
312
-
313
- STDMETHODIMP CCrcOutStream::Write(const void *data, UInt32 size, UInt32 *processedSize)
314
- {
315
- if (CalcCrc)
316
- Crc = CrcUpdate(Crc, data, size);
317
- if (processedSize)
318
- *processedSize = size;
319
- return S_OK;
320
- }
321
-
322
- static UInt64 GetTimeCount()
323
- {
324
- #ifdef USE_POSIX_TIME
325
- #ifdef USE_POSIX_TIME2
326
- timeval v;
327
- if (gettimeofday(&v, 0) == 0)
328
- return (UInt64)(v.tv_sec) * 1000000 + v.tv_usec;
329
- return (UInt64)time(NULL) * 1000000;
330
- #else
331
- return time(NULL);
332
- #endif
333
- #else
334
- /*
335
- LARGE_INTEGER value;
336
- if (::QueryPerformanceCounter(&value))
337
- return value.QuadPart;
338
- */
339
- return GetTickCount();
340
- #endif
341
- }
342
-
343
- static UInt64 GetFreq()
344
- {
345
- #ifdef USE_POSIX_TIME
346
- #ifdef USE_POSIX_TIME2
347
- return 1000000;
348
- #else
349
- return 1;
350
- #endif
351
- #else
352
- /*
353
- LARGE_INTEGER value;
354
- if (::QueryPerformanceFrequency(&value))
355
- return value.QuadPart;
356
- */
357
- return 1000;
358
- #endif
359
- }
360
-
361
- #ifdef USE_POSIX_TIME
362
-
363
- struct CUserTime
364
- {
365
- UInt64 Sum;
366
- clock_t Prev;
367
-
368
- void Init()
369
- {
370
- Prev = clock();
371
- Sum = 0;
372
- }
373
-
374
- UInt64 GetUserTime()
375
- {
376
- clock_t v = clock();
377
- Sum += v - Prev;
378
- Prev = v;
379
- return Sum;
380
- }
381
- };
382
-
383
- #else
384
-
385
- static inline UInt64 GetTime64(const FILETIME &t) { return ((UInt64)t.dwHighDateTime << 32) | t.dwLowDateTime; }
386
- UInt64 GetWinUserTime()
387
- {
388
- FILETIME creationTime, exitTime, kernelTime, userTime;
389
- if (
390
- #ifdef UNDER_CE
391
- ::GetThreadTimes(::GetCurrentThread()
392
- #else
393
- ::GetProcessTimes(::GetCurrentProcess()
394
- #endif
395
- , &creationTime, &exitTime, &kernelTime, &userTime) != 0)
396
- return GetTime64(userTime) + GetTime64(kernelTime);
397
- return (UInt64)GetTickCount() * 10000;
398
- }
399
-
400
- struct CUserTime
401
- {
402
- UInt64 StartTime;
403
-
404
- void Init() { StartTime = GetWinUserTime(); }
405
- UInt64 GetUserTime() { return GetWinUserTime() - StartTime; }
406
- };
407
-
408
- #endif
409
-
410
- static UInt64 GetUserFreq()
411
- {
412
- #ifdef USE_POSIX_TIME
413
- return CLOCKS_PER_SEC;
414
- #else
415
- return 10000000;
416
- #endif
417
- }
418
-
419
- class CBenchProgressStatus
420
- {
421
- #ifndef _7ZIP_ST
422
- NSynchronization::CCriticalSection CS;
423
- #endif
424
- public:
425
- HRESULT Res;
426
- bool EncodeMode;
427
- void SetResult(HRESULT res)
428
- {
429
- #ifndef _7ZIP_ST
430
- NSynchronization::CCriticalSectionLock lock(CS);
431
- #endif
432
- Res = res;
433
- }
434
- HRESULT GetResult()
435
- {
436
- #ifndef _7ZIP_ST
437
- NSynchronization::CCriticalSectionLock lock(CS);
438
- #endif
439
- return Res;
440
- }
441
- };
442
-
443
- struct CBenchInfoCalc
444
- {
445
- CBenchInfo BenchInfo;
446
- CUserTime UserTime;
447
-
448
- void SetStartTime();
449
- void SetFinishTime(CBenchInfo &dest);
450
- };
451
-
452
- void CBenchInfoCalc::SetStartTime()
453
- {
454
- BenchInfo.GlobalFreq = GetFreq();
455
- BenchInfo.UserFreq = GetUserFreq();
456
- BenchInfo.GlobalTime = ::GetTimeCount();
457
- BenchInfo.UserTime = 0;
458
- UserTime.Init();
459
- }
460
-
461
- void CBenchInfoCalc::SetFinishTime(CBenchInfo &dest)
462
- {
463
- dest = BenchInfo;
464
- dest.GlobalTime = ::GetTimeCount() - BenchInfo.GlobalTime;
465
- dest.UserTime = UserTime.GetUserTime();
466
- }
467
-
468
- class CBenchProgressInfo:
469
- public ICompressProgressInfo,
470
- public CMyUnknownImp,
471
- public CBenchInfoCalc
472
- {
473
- public:
474
- CBenchProgressStatus *Status;
475
- IBenchCallback *Callback;
476
-
477
- CBenchProgressInfo(): Callback(NULL) {}
478
- MY_UNKNOWN_IMP
479
- STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize);
480
- };
481
-
482
- STDMETHODIMP CBenchProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize)
483
- {
484
- HRESULT res = Status->GetResult();
485
- if (res != S_OK)
486
- return res;
487
- if (!Callback)
488
- return res;
489
- CBenchInfo info;
490
- SetFinishTime(info);
491
- if (Status->EncodeMode)
492
- {
493
- info.UnpackSize = BenchInfo.UnpackSize + *inSize;
494
- info.PackSize = BenchInfo.PackSize + *outSize;
495
- res = Callback->SetEncodeResult(info, false);
496
- }
497
- else
498
- {
499
- info.PackSize = BenchInfo.PackSize + *inSize;
500
- info.UnpackSize = BenchInfo.UnpackSize + *outSize;
501
- res = Callback->SetDecodeResult(info, false);
502
- }
503
- if (res != S_OK)
504
- Status->SetResult(res);
505
- return res;
506
- }
507
-
508
- static const unsigned kSubBits = 8;
509
-
510
- static UInt32 GetLogSize(UInt32 size)
511
- {
512
- for (unsigned i = kSubBits; i < 32; i++)
513
- for (UInt32 j = 0; j < (1 << kSubBits); j++)
514
- if (size <= (((UInt32)1) << i) + (j << (i - kSubBits)))
515
- return (i << kSubBits) + j;
516
- return (32 << kSubBits);
517
- }
518
-
519
- static void NormalizeVals(UInt64 &v1, UInt64 &v2)
520
- {
521
- while (v1 > 1000000)
522
- {
523
- v1 >>= 1;
524
- v2 >>= 1;
525
- }
526
- }
527
-
528
- UInt64 CBenchInfo::GetUsage() const
529
- {
530
- UInt64 userTime = UserTime;
531
- UInt64 userFreq = UserFreq;
532
- UInt64 globalTime = GlobalTime;
533
- UInt64 globalFreq = GlobalFreq;
534
- NormalizeVals(userTime, userFreq);
535
- NormalizeVals(globalFreq, globalTime);
536
- if (userFreq == 0)
537
- userFreq = 1;
538
- if (globalTime == 0)
539
- globalTime = 1;
540
- return userTime * globalFreq * 1000000 / userFreq / globalTime;
541
- }
542
-
543
- UInt64 CBenchInfo::GetRatingPerUsage(UInt64 rating) const
544
- {
545
- UInt64 userTime = UserTime;
546
- UInt64 userFreq = UserFreq;
547
- UInt64 globalTime = GlobalTime;
548
- UInt64 globalFreq = GlobalFreq;
549
- NormalizeVals(userFreq, userTime);
550
- NormalizeVals(globalTime, globalFreq);
551
- if (globalFreq == 0)
552
- globalFreq = 1;
553
- if (userTime == 0)
554
- userTime = 1;
555
- return userFreq * globalTime / globalFreq * rating / userTime;
556
- }
557
-
558
- static UInt64 MyMultDiv64(UInt64 value, UInt64 elapsedTime, UInt64 freq)
559
- {
560
- UInt64 elTime = elapsedTime;
561
- NormalizeVals(freq, elTime);
562
- if (elTime == 0)
563
- elTime = 1;
564
- return value * freq / elTime;
565
- }
566
-
567
- UInt64 CBenchInfo::GetSpeed(UInt64 numCommands) const
568
- {
569
- return MyMultDiv64(numCommands, GlobalTime, GlobalFreq);
570
- }
571
-
572
- struct CBenchProps
573
- {
574
- bool LzmaRatingMode;
575
-
576
- UInt32 EncComplex;
577
- UInt32 DecComplexCompr;
578
- UInt32 DecComplexUnc;
579
-
580
- CBenchProps(): LzmaRatingMode(false) {}
581
- void SetLzmaCompexity();
582
-
583
- UInt64 GeComprCommands(UInt64 unpackSize)
584
- {
585
- return unpackSize * EncComplex;
586
- }
587
-
588
- UInt64 GeDecomprCommands(UInt64 packSize, UInt64 unpackSize)
589
- {
590
- return (packSize * DecComplexCompr + unpackSize * DecComplexUnc);
591
- }
592
-
593
- UInt64 GetCompressRating(UInt32 dictSize, UInt64 elapsedTime, UInt64 freq, UInt64 size);
594
- UInt64 GetDecompressRating(UInt64 elapsedTime, UInt64 freq, UInt64 outSize, UInt64 inSize, UInt64 numIterations);
595
- };
596
-
597
- void CBenchProps::SetLzmaCompexity()
598
- {
599
- EncComplex = 1200;
600
- DecComplexUnc = 4;
601
- DecComplexCompr = 190;
602
- LzmaRatingMode = true;
603
- }
604
-
605
- UInt64 CBenchProps::GetCompressRating(UInt32 dictSize, UInt64 elapsedTime, UInt64 freq, UInt64 size)
606
- {
607
- if (dictSize < (1 << kBenchMinDicLogSize))
608
- dictSize = (1 << kBenchMinDicLogSize);
609
- UInt64 encComplex = EncComplex;
610
- if (LzmaRatingMode)
611
- {
612
- UInt64 t = GetLogSize(dictSize) - (kBenchMinDicLogSize << kSubBits);
613
- encComplex = 870 + ((t * t * 5) >> (2 * kSubBits));
614
- }
615
- UInt64 numCommands = (UInt64)size * encComplex;
616
- return MyMultDiv64(numCommands, elapsedTime, freq);
617
- }
618
-
619
- UInt64 CBenchProps::GetDecompressRating(UInt64 elapsedTime, UInt64 freq, UInt64 outSize, UInt64 inSize, UInt64 numIterations)
620
- {
621
- UInt64 numCommands = (inSize * DecComplexCompr + outSize * DecComplexUnc) * numIterations;
622
- return MyMultDiv64(numCommands, elapsedTime, freq);
623
- }
624
-
625
- UInt64 GetCompressRating(UInt32 dictSize, UInt64 elapsedTime, UInt64 freq, UInt64 size)
626
- {
627
- CBenchProps props;
628
- props.SetLzmaCompexity();
629
- return props.GetCompressRating(dictSize, elapsedTime, freq, size);
630
- }
631
-
632
- UInt64 GetDecompressRating(UInt64 elapsedTime, UInt64 freq, UInt64 outSize, UInt64 inSize, UInt64 numIterations)
633
- {
634
- CBenchProps props;
635
- props.SetLzmaCompexity();
636
- return props.GetDecompressRating(elapsedTime, freq, outSize, inSize, numIterations);
637
- }
638
-
639
-
640
-
641
-
642
- #ifndef _7ZIP_ST
643
- struct CBenchSyncCommon
644
- {
645
- bool ExitMode;
646
- NSynchronization::CManualResetEvent StartEvent;
647
-
648
- CBenchSyncCommon(): ExitMode(false) {}
649
- };
650
- #endif
651
-
652
-
653
- struct CEncoderInfo;
654
-
655
- struct CEncoderInfo
656
- {
657
- #ifndef _7ZIP_ST
658
- NWindows::CThread thread[2];
659
- NSynchronization::CManualResetEvent ReadyEvent;
660
- UInt32 NumDecoderSubThreads;
661
- CBenchSyncCommon *Common;
662
- #endif
663
-
664
- CMyComPtr<ICompressCoder> _encoder;
665
- CMyComPtr<ICompressFilter> _encoderFilter;
666
- CBenchProgressInfo *progressInfoSpec[2];
667
- CMyComPtr<ICompressProgressInfo> progressInfo[2];
668
- UInt64 NumIterations;
669
-
670
- UInt32 Salt;
671
-
672
- #ifdef USE_ALLOCA
673
- size_t AllocaSize;
674
- #endif
675
-
676
- Byte _key[32];
677
- Byte _iv[16];
678
- Byte _psw[16];
679
- bool CheckCrc_Enc;
680
- bool CheckCrc_Dec;
681
-
682
- struct CDecoderInfo
683
- {
684
- CEncoderInfo *Encoder;
685
- UInt32 DecoderIndex;
686
- bool CallbackMode;
687
-
688
- #ifdef USE_ALLOCA
689
- size_t AllocaSize;
690
- #endif
691
- };
692
- CDecoderInfo decodersInfo[2];
693
-
694
- CMyComPtr<ICompressCoder> _decoders[2];
695
- CMyComPtr<ICompressFilter> _decoderFilter;
696
-
697
- HRESULT Results[2];
698
- CBenchmarkOutStream *outStreamSpec;
699
- CMyComPtr<ISequentialOutStream> outStream;
700
- IBenchCallback *callback;
701
- IBenchPrintCallback *printCallback;
702
- UInt32 crc;
703
- size_t kBufferSize;
704
- size_t compressedSize;
705
- const Byte *uncompressedDataPtr;
706
-
707
- const Byte *fileData;
708
- CBenchRandomGenerator rg;
709
-
710
- CAlignedBuffer rgCopy; // it must be 16-byte aligned !!!
711
- CBenchmarkOutStream *propStreamSpec;
712
- CMyComPtr<ISequentialOutStream> propStream;
713
-
714
- unsigned generateDictBits;
715
- COneMethodInfo _method;
716
-
717
- // for decode
718
- size_t _uncompressedDataSize;
719
-
720
- HRESULT Generate();
721
- HRESULT Encode();
722
- HRESULT Decode(UInt32 decoderIndex);
723
-
724
- CEncoderInfo():
725
- #ifndef _7ZIP_ST
726
- Common(NULL),
727
- #endif
728
- Salt(0),
729
- fileData(NULL),
730
- CheckCrc_Enc(true),
731
- CheckCrc_Dec(true),
732
- outStreamSpec(NULL), callback(NULL), printCallback(NULL), propStreamSpec(NULL) {}
733
-
734
- #ifndef _7ZIP_ST
735
-
736
- static THREAD_FUNC_DECL EncodeThreadFunction(void *param)
737
- {
738
- HRESULT res;
739
- CEncoderInfo *encoder = (CEncoderInfo *)param;
740
- try
741
- {
742
- #ifdef USE_ALLOCA
743
- alloca(encoder->AllocaSize);
744
- #endif
745
-
746
- res = encoder->Encode();
747
- }
748
- catch(...)
749
- {
750
- res = E_FAIL;
751
- }
752
- encoder->Results[0] = res;
753
- if (res != S_OK)
754
- encoder->progressInfoSpec[0]->Status->SetResult(res);
755
- encoder->ReadyEvent.Set();
756
- return 0;
757
- }
758
-
759
- static THREAD_FUNC_DECL DecodeThreadFunction(void *param)
760
- {
761
- CDecoderInfo *decoder = (CDecoderInfo *)param;
762
-
763
- #ifdef USE_ALLOCA
764
- alloca(decoder->AllocaSize);
765
- #endif
766
-
767
- CEncoderInfo *encoder = decoder->Encoder;
768
- encoder->Results[decoder->DecoderIndex] = encoder->Decode(decoder->DecoderIndex);
769
- return 0;
770
- }
771
-
772
- HRESULT CreateEncoderThread()
773
- {
774
- WRes res = 0;
775
- if (!ReadyEvent.IsCreated())
776
- res = ReadyEvent.Create();
777
- if (res == 0)
778
- res = thread[0].Create(EncodeThreadFunction, this);
779
- return HRESULT_FROM_WIN32(res);
780
- }
781
-
782
- HRESULT CreateDecoderThread(unsigned index, bool callbackMode
783
- #ifdef USE_ALLOCA
784
- , size_t allocaSize
785
- #endif
786
- )
787
- {
788
- CDecoderInfo &decoder = decodersInfo[index];
789
- decoder.DecoderIndex = index;
790
- decoder.Encoder = this;
791
-
792
- #ifdef USE_ALLOCA
793
- decoder.AllocaSize = allocaSize;
794
- #endif
795
-
796
- decoder.CallbackMode = callbackMode;
797
- return thread[index].Create(DecodeThreadFunction, &decoder);
798
- }
799
-
800
- #endif
801
- };
802
-
803
-
804
- HRESULT CEncoderInfo::Generate()
805
- {
806
- const COneMethodInfo &method = _method;
807
-
808
- // we need extra space, if input data is already compressed
809
- const size_t kCompressedBufferSize =
810
- kCompressedAdditionalSize +
811
- kBufferSize + kBufferSize / 16;
812
- // kBufferSize / 2;
813
-
814
- if (kCompressedBufferSize < kBufferSize)
815
- return E_FAIL;
816
-
817
- uncompressedDataPtr = fileData;
818
-
819
- if (!fileData)
820
- {
821
- ALLOC_WITH_HRESULT(&rg, kBufferSize);
822
-
823
- // DWORD ttt = GetTickCount();
824
- if (generateDictBits == 0)
825
- rg.GenerateSimpleRandom(Salt);
826
- else
827
- rg.GenerateLz(generateDictBits, Salt);
828
- // printf("\n%d\n ", GetTickCount() - ttt);
829
-
830
- crc = CrcCalc((const Byte *)rg, rg.Size());
831
- uncompressedDataPtr = (const Byte *)rg;
832
- }
833
-
834
- if (_encoderFilter)
835
- {
836
- ALLOC_WITH_HRESULT(&rgCopy, kBufferSize);
837
- }
838
-
839
-
840
- if (!outStream)
841
- {
842
- outStreamSpec = new CBenchmarkOutStream;
843
- outStream = outStreamSpec;
844
- }
845
-
846
- ALLOC_WITH_HRESULT(outStreamSpec, kCompressedBufferSize)
847
-
848
- if (!propStream)
849
- {
850
- propStreamSpec = new CBenchmarkOutStream;
851
- propStream = propStreamSpec;
852
- }
853
- ALLOC_WITH_HRESULT(propStreamSpec, kMaxLzmaPropSize);
854
- propStreamSpec->Init(true, false);
855
-
856
-
857
- CMyComPtr<IUnknown> coder;
858
- if (_encoderFilter)
859
- coder = _encoderFilter;
860
- else
861
- coder = _encoder;
862
- {
863
- CMyComPtr<ICompressSetCoderProperties> scp;
864
- coder.QueryInterface(IID_ICompressSetCoderProperties, &scp);
865
- if (scp)
866
- {
867
- UInt64 reduceSize = kBufferSize;
868
- RINOK(method.SetCoderProps(scp, &reduceSize));
869
- }
870
- else
871
- {
872
- if (method.AreThereNonOptionalProps())
873
- return E_INVALIDARG;
874
- }
875
-
876
- CMyComPtr<ICompressWriteCoderProperties> writeCoderProps;
877
- coder.QueryInterface(IID_ICompressWriteCoderProperties, &writeCoderProps);
878
- if (writeCoderProps)
879
- {
880
- RINOK(writeCoderProps->WriteCoderProperties(propStream));
881
- }
882
-
883
- {
884
- CMyComPtr<ICryptoSetPassword> sp;
885
- coder.QueryInterface(IID_ICryptoSetPassword, &sp);
886
- if (sp)
887
- {
888
- RINOK(sp->CryptoSetPassword(_psw, sizeof(_psw)));
889
-
890
- // we must call encoding one time to calculate password key for key cache.
891
- // it must be after WriteCoderProperties!
892
- Byte temp[16];
893
- memset(temp, 0, sizeof(temp));
894
-
895
- if (_encoderFilter)
896
- {
897
- _encoderFilter->Init();
898
- _encoderFilter->Filter(temp, sizeof(temp));
899
- }
900
- else
901
- {
902
- CBenchmarkInStream *inStreamSpec = new CBenchmarkInStream;
903
- CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
904
- inStreamSpec->Init(temp, sizeof(temp));
905
-
906
- CCrcOutStream *crcStreamSpec = new CCrcOutStream;
907
- CMyComPtr<ISequentialOutStream> crcStream = crcStreamSpec;
908
- crcStreamSpec->Init();
909
-
910
- RINOK(_encoder->Code(inStream, crcStream, 0, 0, NULL));
911
- }
912
- }
913
- }
914
- }
915
-
916
- return S_OK;
917
- }
918
-
919
-
920
- static void My_FilterBench(ICompressFilter *filter, Byte *data, size_t size)
921
- {
922
- while (size != 0)
923
- {
924
- UInt32 cur = (UInt32)1 << 31;
925
- if (cur > size)
926
- cur = (UInt32)size;
927
- UInt32 processed = filter->Filter(data, cur);
928
- data += processed;
929
- // if (processed > size) (in AES filter), we must fill last block with zeros.
930
- // but it is not important for benchmark. So we just copy that data without filtering.
931
- if (processed > size || processed == 0)
932
- break;
933
- size -= processed;
934
- }
935
- }
936
-
937
-
938
- HRESULT CEncoderInfo::Encode()
939
- {
940
- RINOK(Generate());
941
-
942
- #ifndef _7ZIP_ST
943
- if (Common)
944
- {
945
- Results[0] = S_OK;
946
- WRes wres = ReadyEvent.Set();
947
- if (wres == 0)
948
- wres = Common->StartEvent.Lock();
949
- if (wres != 0)
950
- return HRESULT_FROM_WIN32(wres);
951
- if (Common->ExitMode)
952
- return S_OK;
953
- }
954
- else
955
- #endif
956
- {
957
- CBenchProgressInfo *bpi = progressInfoSpec[0];
958
- bpi->SetStartTime();
959
- }
960
-
961
-
962
- CBenchInfo &bi = progressInfoSpec[0]->BenchInfo;
963
- bi.UnpackSize = 0;
964
- bi.PackSize = 0;
965
- CMyComPtr<ICryptoProperties> cp;
966
- CMyComPtr<IUnknown> coder;
967
- if (_encoderFilter)
968
- coder = _encoderFilter;
969
- else
970
- coder = _encoder;
971
- coder.QueryInterface(IID_ICryptoProperties, &cp);
972
- CBenchmarkInStream *inStreamSpec = new CBenchmarkInStream;
973
- CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
974
- UInt64 prev = 0;
975
-
976
- UInt32 crcPrev = 0;
977
-
978
- if (cp)
979
- {
980
- RINOK(cp->SetKey(_key, sizeof(_key)));
981
- RINOK(cp->SetInitVector(_iv, sizeof(_iv)));
982
- }
983
-
984
- for (UInt64 i = 0; i < NumIterations; i++)
985
- {
986
- if (printCallback && bi.UnpackSize - prev > (1 << 20))
987
- {
988
- RINOK(printCallback->CheckBreak());
989
- prev = bi.UnpackSize;
990
- }
991
-
992
- bool isLast = (i == NumIterations - 1);
993
- bool calcCrc = ((isLast || (i & 0x7F) == 0 || CheckCrc_Enc) && NumIterations != 1);
994
- outStreamSpec->Init(isLast, calcCrc);
995
-
996
- if (_encoderFilter)
997
- {
998
- memcpy((Byte *)rgCopy, uncompressedDataPtr, kBufferSize);
999
- _encoderFilter->Init();
1000
- My_FilterBench(_encoderFilter, (Byte *)rgCopy, kBufferSize);
1001
- RINOK(WriteStream(outStream, (const Byte *)rgCopy, kBufferSize));
1002
- }
1003
- else
1004
- {
1005
- inStreamSpec->Init(uncompressedDataPtr, kBufferSize);
1006
- RINOK(_encoder->Code(inStream, outStream, NULL, NULL, progressInfo[0]));
1007
- }
1008
-
1009
- // outStreamSpec->Print();
1010
-
1011
- UInt32 crcNew = CRC_GET_DIGEST(outStreamSpec->Crc);
1012
- if (i == 0)
1013
- crcPrev = crcNew;
1014
- else if (calcCrc && crcPrev != crcNew)
1015
- return E_FAIL;
1016
-
1017
- compressedSize = outStreamSpec->Pos;
1018
- bi.UnpackSize += kBufferSize;
1019
- bi.PackSize += compressedSize;
1020
- }
1021
-
1022
- _encoder.Release();
1023
- _encoderFilter.Release();
1024
- return S_OK;
1025
- }
1026
-
1027
-
1028
- HRESULT CEncoderInfo::Decode(UInt32 decoderIndex)
1029
- {
1030
- CBenchmarkInStream *inStreamSpec = new CBenchmarkInStream;
1031
- CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
1032
- CMyComPtr<ICompressCoder> &decoder = _decoders[decoderIndex];
1033
- CMyComPtr<IUnknown> coder;
1034
- if (_decoderFilter)
1035
- {
1036
- if (decoderIndex != 0)
1037
- return E_FAIL;
1038
- coder = _decoderFilter;
1039
- }
1040
- else
1041
- coder = decoder;
1042
-
1043
- CMyComPtr<ICompressSetDecoderProperties2> setDecProps;
1044
- coder.QueryInterface(IID_ICompressSetDecoderProperties2, &setDecProps);
1045
- if (!setDecProps && propStreamSpec->Pos != 0)
1046
- return E_FAIL;
1047
-
1048
- CCrcOutStream *crcOutStreamSpec = new CCrcOutStream;
1049
- CMyComPtr<ISequentialOutStream> crcOutStream = crcOutStreamSpec;
1050
-
1051
- CBenchProgressInfo *pi = progressInfoSpec[decoderIndex];
1052
- pi->BenchInfo.UnpackSize = 0;
1053
- pi->BenchInfo.PackSize = 0;
1054
-
1055
- #ifndef _7ZIP_ST
1056
- {
1057
- CMyComPtr<ICompressSetCoderMt> setCoderMt;
1058
- coder.QueryInterface(IID_ICompressSetCoderMt, &setCoderMt);
1059
- if (setCoderMt)
1060
- {
1061
- RINOK(setCoderMt->SetNumberOfThreads(NumDecoderSubThreads));
1062
- }
1063
- }
1064
- #endif
1065
-
1066
- CMyComPtr<ICompressSetCoderProperties> scp;
1067
- coder.QueryInterface(IID_ICompressSetCoderProperties, &scp);
1068
- if (scp)
1069
- {
1070
- UInt64 reduceSize = _uncompressedDataSize;
1071
- RINOK(_method.SetCoderProps(scp, &reduceSize));
1072
- }
1073
-
1074
- CMyComPtr<ICryptoProperties> cp;
1075
- coder.QueryInterface(IID_ICryptoProperties, &cp);
1076
-
1077
- if (setDecProps)
1078
- {
1079
- RINOK(setDecProps->SetDecoderProperties2((const Byte *)*propStreamSpec, (UInt32)propStreamSpec->Pos));
1080
- }
1081
-
1082
- {
1083
- CMyComPtr<ICryptoSetPassword> sp;
1084
- coder.QueryInterface(IID_ICryptoSetPassword, &sp);
1085
- if (sp)
1086
- {
1087
- RINOK(sp->CryptoSetPassword(_psw, sizeof(_psw)));
1088
- }
1089
- }
1090
-
1091
- UInt64 prev = 0;
1092
-
1093
- if (cp)
1094
- {
1095
- RINOK(cp->SetKey(_key, sizeof(_key)));
1096
- RINOK(cp->SetInitVector(_iv, sizeof(_iv)));
1097
- }
1098
-
1099
- for (UInt64 i = 0; i < NumIterations; i++)
1100
- {
1101
- if (printCallback && pi->BenchInfo.UnpackSize - prev > (1 << 20))
1102
- {
1103
- RINOK(printCallback->CheckBreak());
1104
- prev = pi->BenchInfo.UnpackSize;
1105
- }
1106
-
1107
- inStreamSpec->Init((const Byte *)*outStreamSpec, compressedSize);
1108
- crcOutStreamSpec->Init();
1109
-
1110
- UInt64 outSize = kBufferSize;
1111
- crcOutStreamSpec->CalcCrc = ((i & 0x7F) == 0 || CheckCrc_Dec);
1112
-
1113
- if (_decoderFilter)
1114
- {
1115
- if (compressedSize > rgCopy.Size())
1116
- return E_FAIL;
1117
- memcpy((Byte *)rgCopy, (const Byte *)*outStreamSpec, compressedSize);
1118
- _decoderFilter->Init();
1119
- My_FilterBench(_decoderFilter, (Byte *)rgCopy, compressedSize);
1120
- RINOK(WriteStream(crcOutStream, (const Byte *)rgCopy, compressedSize));
1121
- }
1122
- else
1123
- {
1124
- RINOK(decoder->Code(inStream, crcOutStream, 0, &outSize, progressInfo[decoderIndex]));
1125
- }
1126
-
1127
- if (crcOutStreamSpec->CalcCrc && CRC_GET_DIGEST(crcOutStreamSpec->Crc) != crc)
1128
- return S_FALSE;
1129
- pi->BenchInfo.UnpackSize += kBufferSize;
1130
- pi->BenchInfo.PackSize += compressedSize;
1131
- }
1132
-
1133
- decoder.Release();
1134
- _decoderFilter.Release();
1135
- return S_OK;
1136
- }
1137
-
1138
-
1139
- static const UInt32 kNumThreadsMax = (1 << 12);
1140
-
1141
- struct CBenchEncoders
1142
- {
1143
- CEncoderInfo *encoders;
1144
- CBenchEncoders(UInt32 num): encoders(NULL) { encoders = new CEncoderInfo[num]; }
1145
- ~CBenchEncoders() { delete []encoders; }
1146
- };
1147
-
1148
-
1149
- static UInt64 GetNumIterations(UInt64 numCommands, UInt64 complexInCommands)
1150
- {
1151
- if (numCommands < (1 << 4))
1152
- numCommands = (1 << 4);
1153
- UInt64 res = complexInCommands / numCommands;
1154
- return (res == 0 ? 1 : res);
1155
- }
1156
-
1157
-
1158
-
1159
- #ifndef _7ZIP_ST
1160
-
1161
- // ---------- CBenchThreadsFlusher ----------
1162
-
1163
- struct CBenchThreadsFlusher
1164
- {
1165
- CBenchEncoders *EncodersSpec;
1166
- CBenchSyncCommon Common;
1167
- unsigned NumThreads;
1168
- bool NeedClose;
1169
-
1170
- CBenchThreadsFlusher(): NumThreads(0), NeedClose(false) {}
1171
-
1172
- ~CBenchThreadsFlusher()
1173
- {
1174
- StartAndWait(true);
1175
- }
1176
-
1177
- WRes StartAndWait(bool exitMode = false);
1178
- };
1179
-
1180
-
1181
- WRes CBenchThreadsFlusher::StartAndWait(bool exitMode)
1182
- {
1183
- if (!NeedClose)
1184
- return 0;
1185
-
1186
- Common.ExitMode = exitMode;
1187
- WRes res = Common.StartEvent.Set();
1188
-
1189
- for (unsigned i = 0; i < NumThreads; i++)
1190
- {
1191
- NWindows::CThread &t = EncodersSpec->encoders[i].thread[0];
1192
- if (t.IsCreated())
1193
- {
1194
- WRes res2 = t.Wait();
1195
- if (res2 == 0)
1196
- res2 = t.Close();
1197
- if (res == S_OK)
1198
- res = res2;
1199
- }
1200
- }
1201
- NeedClose = false;
1202
- return res;
1203
- }
1204
-
1205
- #endif
1206
-
1207
-
1208
-
1209
- static HRESULT MethodBench(
1210
- DECL_EXTERNAL_CODECS_LOC_VARS
1211
- UInt64 complexInCommands,
1212
- bool
1213
- #ifndef _7ZIP_ST
1214
- oldLzmaBenchMode
1215
- #endif
1216
- ,
1217
- UInt32
1218
- #ifndef _7ZIP_ST
1219
- numThreads
1220
- #endif
1221
- ,
1222
- const COneMethodInfo &method2,
1223
- size_t uncompressedDataSize,
1224
- const Byte *fileData,
1225
- unsigned generateDictBits,
1226
-
1227
- IBenchPrintCallback *printCallback,
1228
- IBenchCallback *callback,
1229
- CBenchProps *benchProps)
1230
- {
1231
- COneMethodInfo method = method2;
1232
- UInt64 methodId;
1233
- UInt32 numStreams;
1234
- int codecIndex = FindMethod_Index(
1235
- EXTERNAL_CODECS_LOC_VARS
1236
- method.MethodName, true,
1237
- methodId, numStreams);
1238
- if (codecIndex < 0)
1239
- return E_NOTIMPL;
1240
- if (numStreams != 1)
1241
- return E_INVALIDARG;
1242
-
1243
- UInt32 numEncoderThreads = 1;
1244
- UInt32 numSubDecoderThreads = 1;
1245
-
1246
- #ifndef _7ZIP_ST
1247
- numEncoderThreads = numThreads;
1248
-
1249
- if (oldLzmaBenchMode && methodId == k_LZMA)
1250
- {
1251
- if (numThreads == 1 && method.Get_NumThreads() < 0)
1252
- method.AddProp_NumThreads(1);
1253
- const UInt32 numLzmaThreads = method.Get_Lzma_NumThreads();
1254
- if (numThreads > 1 && numLzmaThreads > 1)
1255
- {
1256
- numEncoderThreads = numThreads / 2;
1257
- numSubDecoderThreads = 2;
1258
- }
1259
- }
1260
-
1261
- bool mtEncMode = (numEncoderThreads > 1);
1262
- #endif
1263
-
1264
- CBenchEncoders encodersSpec(numEncoderThreads);
1265
- CEncoderInfo *encoders = encodersSpec.encoders;
1266
-
1267
- UInt32 i;
1268
-
1269
- for (i = 0; i < numEncoderThreads; i++)
1270
- {
1271
- CEncoderInfo &encoder = encoders[i];
1272
- encoder.callback = (i == 0) ? callback : 0;
1273
- encoder.printCallback = printCallback;
1274
-
1275
- {
1276
- CCreatedCoder cod;
1277
- RINOK(CreateCoder_Index(EXTERNAL_CODECS_LOC_VARS codecIndex, true, encoder._encoderFilter, cod));
1278
- encoder._encoder = cod.Coder;
1279
- if (!encoder._encoder && !encoder._encoderFilter)
1280
- return E_NOTIMPL;
1281
- }
1282
-
1283
- encoder.CheckCrc_Enc = (benchProps->EncComplex) > 30 ;
1284
- encoder.CheckCrc_Dec = (benchProps->DecComplexCompr + benchProps->DecComplexUnc) > 30 ;
1285
-
1286
- memset(encoder._iv, 0, sizeof(encoder._iv));
1287
- memset(encoder._key, 0, sizeof(encoder._key));
1288
- memset(encoder._psw, 0, sizeof(encoder._psw));
1289
-
1290
- for (UInt32 j = 0; j < numSubDecoderThreads; j++)
1291
- {
1292
- CCreatedCoder cod;
1293
- CMyComPtr<ICompressCoder> &decoder = encoder._decoders[j];
1294
- RINOK(CreateCoder_Id(EXTERNAL_CODECS_LOC_VARS methodId, false, encoder._decoderFilter, cod));
1295
- decoder = cod.Coder;
1296
- if (!encoder._decoderFilter && !decoder)
1297
- return E_NOTIMPL;
1298
- }
1299
- }
1300
-
1301
- UInt32 crc = 0;
1302
- if (fileData)
1303
- crc = CrcCalc(fileData, uncompressedDataSize);
1304
-
1305
- for (i = 0; i < numEncoderThreads; i++)
1306
- {
1307
- CEncoderInfo &encoder = encoders[i];
1308
- encoder._method = method;
1309
- encoder.generateDictBits = generateDictBits;
1310
- encoder._uncompressedDataSize = uncompressedDataSize;
1311
- encoder.kBufferSize = uncompressedDataSize;
1312
- encoder.fileData = fileData;
1313
- encoder.crc = crc;
1314
- }
1315
-
1316
- CBenchProgressStatus status;
1317
- status.Res = S_OK;
1318
- status.EncodeMode = true;
1319
-
1320
- #ifndef _7ZIP_ST
1321
- CBenchThreadsFlusher encoderFlusher;
1322
- if (mtEncMode)
1323
- {
1324
- WRes wres = encoderFlusher.Common.StartEvent.Create();
1325
- if (wres != 0)
1326
- return HRESULT_FROM_WIN32(wres);
1327
- encoderFlusher.NumThreads = numEncoderThreads;
1328
- encoderFlusher.EncodersSpec = &encodersSpec;
1329
- encoderFlusher.NeedClose = true;
1330
- }
1331
- #endif
1332
-
1333
- for (i = 0; i < numEncoderThreads; i++)
1334
- {
1335
- CEncoderInfo &encoder = encoders[i];
1336
- encoder.NumIterations = GetNumIterations(benchProps->GeComprCommands(uncompressedDataSize), complexInCommands);
1337
- encoder.Salt = g_CrcTable[i & 0xFF];
1338
- encoder.Salt ^= (g_CrcTable[(i >> 8) & 0xFF] << 3);
1339
- // (g_CrcTable[0] == 0), and (encoder.Salt == 0) for first thread
1340
- // printf(" %8x", encoder.Salt);
1341
-
1342
- for (int j = 0; j < 2; j++)
1343
- {
1344
- CBenchProgressInfo *spec = new CBenchProgressInfo;
1345
- encoder.progressInfoSpec[j] = spec;
1346
- encoder.progressInfo[j] = spec;
1347
- spec->Status = &status;
1348
- }
1349
-
1350
- if (i == 0)
1351
- {
1352
- CBenchProgressInfo *bpi = encoder.progressInfoSpec[0];
1353
- bpi->Callback = callback;
1354
- bpi->BenchInfo.NumIterations = numEncoderThreads;
1355
- }
1356
-
1357
- #ifndef _7ZIP_ST
1358
- if (mtEncMode)
1359
- {
1360
- #ifdef USE_ALLOCA
1361
- encoder.AllocaSize = (i * 16 * 21) & 0x7FF;
1362
- #endif
1363
-
1364
- encoder.Common = &encoderFlusher.Common;
1365
- RINOK(encoder.CreateEncoderThread())
1366
- }
1367
- #endif
1368
- }
1369
-
1370
- if (printCallback)
1371
- {
1372
- RINOK(printCallback->CheckBreak());
1373
- }
1374
-
1375
- #ifndef _7ZIP_ST
1376
- if (mtEncMode)
1377
- {
1378
- for (i = 0; i < numEncoderThreads; i++)
1379
- {
1380
- CEncoderInfo &encoder = encoders[i];
1381
- WRes wres = encoder.ReadyEvent.Lock();
1382
- if (wres != 0)
1383
- return HRESULT_FROM_WIN32(wres);
1384
- RINOK(encoder.Results[0]);
1385
- }
1386
-
1387
- CBenchProgressInfo *bpi = encoders[0].progressInfoSpec[0];
1388
- bpi->SetStartTime();
1389
-
1390
- WRes wres = encoderFlusher.StartAndWait();
1391
- if (status.Res == 0 && wres != 0)
1392
- return HRESULT_FROM_WIN32(wres);
1393
- }
1394
- else
1395
- #endif
1396
- {
1397
- RINOK(encoders[0].Encode());
1398
- }
1399
-
1400
- RINOK(status.Res);
1401
-
1402
- CBenchInfo info;
1403
-
1404
- encoders[0].progressInfoSpec[0]->SetFinishTime(info);
1405
- info.UnpackSize = 0;
1406
- info.PackSize = 0;
1407
- info.NumIterations = encoders[0].NumIterations;
1408
-
1409
- for (i = 0; i < numEncoderThreads; i++)
1410
- {
1411
- CEncoderInfo &encoder = encoders[i];
1412
- info.UnpackSize += encoder.kBufferSize;
1413
- info.PackSize += encoder.compressedSize;
1414
- // printf("\n%7d\n", encoder.compressedSize);
1415
- }
1416
-
1417
- RINOK(callback->SetEncodeResult(info, true));
1418
-
1419
-
1420
-
1421
-
1422
- // ---------- Decode ----------
1423
-
1424
- status.Res = S_OK;
1425
- status.EncodeMode = false;
1426
-
1427
- UInt32 numDecoderThreads = numEncoderThreads * numSubDecoderThreads;
1428
-
1429
- for (i = 0; i < numEncoderThreads; i++)
1430
- {
1431
- CEncoderInfo &encoder = encoders[i];
1432
-
1433
- if (i == 0)
1434
- {
1435
- encoder.NumIterations = GetNumIterations(benchProps->GeDecomprCommands(encoder.compressedSize, encoder.kBufferSize), complexInCommands);
1436
- CBenchProgressInfo *bpi = encoder.progressInfoSpec[0];
1437
- bpi->Callback = callback;
1438
- bpi->BenchInfo.NumIterations = numDecoderThreads;
1439
- bpi->SetStartTime();
1440
- }
1441
- else
1442
- encoder.NumIterations = encoders[0].NumIterations;
1443
-
1444
- #ifndef _7ZIP_ST
1445
- {
1446
- int numSubThreads = method.Get_NumThreads();
1447
- encoder.NumDecoderSubThreads = (numSubThreads <= 0) ? 1 : numSubThreads;
1448
- }
1449
- if (numDecoderThreads > 1)
1450
- {
1451
- for (UInt32 j = 0; j < numSubDecoderThreads; j++)
1452
- {
1453
- HRESULT res = encoder.CreateDecoderThread(j, (i == 0 && j == 0)
1454
- #ifdef USE_ALLOCA
1455
- , ((i * numSubDecoderThreads + j) * 16 * 21) & 0x7FF
1456
- #endif
1457
- );
1458
- RINOK(res);
1459
- }
1460
- }
1461
- else
1462
- #endif
1463
- {
1464
- RINOK(encoder.Decode(0));
1465
- }
1466
- }
1467
-
1468
- #ifndef _7ZIP_ST
1469
- HRESULT res = S_OK;
1470
- if (numDecoderThreads > 1)
1471
- for (i = 0; i < numEncoderThreads; i++)
1472
- for (UInt32 j = 0; j < numSubDecoderThreads; j++)
1473
- {
1474
- CEncoderInfo &encoder = encoders[i];
1475
- encoder.thread[j].Wait();
1476
- if (encoder.Results[j] != S_OK)
1477
- res = encoder.Results[j];
1478
- }
1479
- RINOK(res);
1480
- #endif
1481
-
1482
- RINOK(status.Res);
1483
- encoders[0].progressInfoSpec[0]->SetFinishTime(info);
1484
-
1485
- #ifndef _7ZIP_ST
1486
- #ifdef UNDER_CE
1487
- if (numDecoderThreads > 1)
1488
- for (i = 0; i < numEncoderThreads; i++)
1489
- for (UInt32 j = 0; j < numSubDecoderThreads; j++)
1490
- {
1491
- FILETIME creationTime, exitTime, kernelTime, userTime;
1492
- if (::GetThreadTimes(encoders[i].thread[j], &creationTime, &exitTime, &kernelTime, &userTime) != 0)
1493
- info.UserTime += GetTime64(userTime) + GetTime64(kernelTime);
1494
- }
1495
- #endif
1496
- #endif
1497
-
1498
- info.UnpackSize = 0;
1499
- info.PackSize = 0;
1500
- info.NumIterations = numSubDecoderThreads * encoders[0].NumIterations;
1501
-
1502
- for (i = 0; i < numEncoderThreads; i++)
1503
- {
1504
- CEncoderInfo &encoder = encoders[i];
1505
- info.UnpackSize += encoder.kBufferSize;
1506
- info.PackSize += encoder.compressedSize;
1507
- }
1508
-
1509
- RINOK(callback->SetDecodeResult(info, false));
1510
- RINOK(callback->SetDecodeResult(info, true));
1511
-
1512
- return S_OK;
1513
- }
1514
-
1515
-
1516
- static inline UInt64 GetLZMAUsage(bool multiThread, UInt32 dictionary)
1517
- {
1518
- UInt32 hs = dictionary - 1;
1519
- hs |= (hs >> 1);
1520
- hs |= (hs >> 2);
1521
- hs |= (hs >> 4);
1522
- hs |= (hs >> 8);
1523
- hs >>= 1;
1524
- hs |= 0xFFFF;
1525
- if (hs > (1 << 24))
1526
- hs >>= 1;
1527
- hs++;
1528
- return ((hs + (1 << 16)) + (UInt64)dictionary * 2) * 4 + (UInt64)dictionary * 3 / 2 +
1529
- (1 << 20) + (multiThread ? (6 << 20) : 0);
1530
- }
1531
-
1532
- UInt64 GetBenchMemoryUsage(UInt32 numThreads, UInt32 dictionary, bool totalBench)
1533
- {
1534
- const UInt32 kBufferSize = dictionary;
1535
- const UInt32 kCompressedBufferSize = kBufferSize; // / 2;
1536
- bool lzmaMt = (totalBench || numThreads > 1);
1537
- UInt32 numBigThreads = numThreads;
1538
- if (!totalBench && lzmaMt)
1539
- numBigThreads /= 2;
1540
- return ((UInt64)kBufferSize + kCompressedBufferSize +
1541
- GetLZMAUsage(lzmaMt, dictionary) + (2 << 20)) * numBigThreads;
1542
- }
1543
-
1544
- static HRESULT CrcBig(const void *data, UInt32 size, UInt64 numIterations,
1545
- const UInt32 *checkSum, IHasher *hf,
1546
- IBenchPrintCallback *callback)
1547
- {
1548
- Byte hash[64];
1549
- UInt64 i;
1550
- for (i = 0; i < sizeof(hash); i++)
1551
- hash[i] = 0;
1552
- for (i = 0; i < numIterations; i++)
1553
- {
1554
- if (callback && (i & 0xFF) == 0)
1555
- {
1556
- RINOK(callback->CheckBreak());
1557
- }
1558
- hf->Init();
1559
- hf->Update(data, size);
1560
- hf->Final(hash);
1561
- UInt32 hashSize = hf->GetDigestSize();
1562
- if (hashSize > sizeof(hash))
1563
- return S_FALSE;
1564
- UInt32 sum = 0;
1565
- for (UInt32 j = 0; j < hashSize; j += 4)
1566
- sum ^= GetUi32(hash + j);
1567
- if (checkSum && sum != *checkSum)
1568
- {
1569
- return S_FALSE;
1570
- }
1571
- }
1572
- return S_OK;
1573
- }
1574
-
1575
- UInt32 g_BenchCpuFreqTemp = 1;
1576
-
1577
- #define YY1 sum += val; sum ^= val;
1578
- #define YY3 YY1 YY1 YY1 YY1
1579
- #define YY5 YY3 YY3 YY3 YY3
1580
- #define YY7 YY5 YY5 YY5 YY5
1581
- static const UInt32 kNumFreqCommands = 128;
1582
-
1583
- EXTERN_C_BEGIN
1584
-
1585
- static UInt32 CountCpuFreq(UInt32 sum, UInt32 num, UInt32 val)
1586
- {
1587
- for (UInt32 i = 0; i < num; i++)
1588
- {
1589
- YY7
1590
- }
1591
- return sum;
1592
- }
1593
-
1594
- EXTERN_C_END
1595
-
1596
-
1597
- #ifndef _7ZIP_ST
1598
-
1599
- struct CFreqInfo
1600
- {
1601
- NWindows::CThread Thread;
1602
- IBenchPrintCallback *Callback;
1603
- HRESULT CallbackRes;
1604
- UInt32 ValRes;
1605
- UInt32 Size;
1606
- UInt64 NumIterations;
1607
-
1608
- void Wait()
1609
- {
1610
- Thread.Wait();
1611
- Thread.Close();
1612
- }
1613
- };
1614
-
1615
- static THREAD_FUNC_DECL FreqThreadFunction(void *param)
1616
- {
1617
- CFreqInfo *p = (CFreqInfo *)param;
1618
-
1619
- UInt32 sum = g_BenchCpuFreqTemp;
1620
- for (UInt64 k = p->NumIterations; k > 0; k--)
1621
- {
1622
- p->CallbackRes = p->Callback->CheckBreak();
1623
- if (p->CallbackRes != S_OK)
1624
- return 0;
1625
- sum = CountCpuFreq(sum, p->Size, g_BenchCpuFreqTemp);
1626
- }
1627
- p->ValRes = sum;
1628
- return 0;
1629
- }
1630
-
1631
- struct CFreqThreads
1632
- {
1633
- CFreqInfo *Items;
1634
- UInt32 NumThreads;
1635
-
1636
- CFreqThreads(): Items(NULL), NumThreads(0) {}
1637
- void WaitAll()
1638
- {
1639
- for (UInt32 i = 0; i < NumThreads; i++)
1640
- Items[i].Wait();
1641
- NumThreads = 0;
1642
- }
1643
- ~CFreqThreads()
1644
- {
1645
- WaitAll();
1646
- delete []Items;
1647
- }
1648
- };
1649
-
1650
- struct CCrcInfo
1651
- {
1652
- NWindows::CThread Thread;
1653
- IBenchPrintCallback *Callback;
1654
- HRESULT CallbackRes;
1655
-
1656
- const Byte *Data;
1657
- UInt32 Size;
1658
- UInt64 NumIterations;
1659
- bool CheckSumDefined;
1660
- UInt32 CheckSum;
1661
- CMyComPtr<IHasher> Hasher;
1662
- HRESULT Res;
1663
-
1664
- #ifdef USE_ALLOCA
1665
- size_t AllocaSize;
1666
- #endif
1667
-
1668
- void Wait()
1669
- {
1670
- Thread.Wait();
1671
- Thread.Close();
1672
- }
1673
- };
1674
-
1675
- static THREAD_FUNC_DECL CrcThreadFunction(void *param)
1676
- {
1677
- CCrcInfo *p = (CCrcInfo *)param;
1678
-
1679
- #ifdef USE_ALLOCA
1680
- alloca(p->AllocaSize);
1681
- #endif
1682
-
1683
- p->Res = CrcBig(p->Data, p->Size, p->NumIterations,
1684
- p->CheckSumDefined ? &p->CheckSum : NULL, p->Hasher,
1685
- p->Callback);
1686
- return 0;
1687
- }
1688
-
1689
- struct CCrcThreads
1690
- {
1691
- CCrcInfo *Items;
1692
- UInt32 NumThreads;
1693
-
1694
- CCrcThreads(): Items(NULL), NumThreads(0) {}
1695
- void WaitAll()
1696
- {
1697
- for (UInt32 i = 0; i < NumThreads; i++)
1698
- Items[i].Wait();
1699
- NumThreads = 0;
1700
- }
1701
- ~CCrcThreads()
1702
- {
1703
- WaitAll();
1704
- delete []Items;
1705
- }
1706
- };
1707
-
1708
- #endif
1709
-
1710
- static UInt32 CrcCalc1(const Byte *buf, size_t size)
1711
- {
1712
- UInt32 crc = CRC_INIT_VAL;;
1713
- for (size_t i = 0; i < size; i++)
1714
- crc = CRC_UPDATE_BYTE(crc, buf[i]);
1715
- return CRC_GET_DIGEST(crc);
1716
- }
1717
-
1718
- static void RandGen(Byte *buf, size_t size, CBaseRandomGenerator &RG)
1719
- {
1720
- for (size_t i = 0; i < size; i++)
1721
- buf[i] = (Byte)RG.GetRnd();
1722
- }
1723
-
1724
- static UInt32 RandGenCrc(Byte *buf, size_t size, CBaseRandomGenerator &RG)
1725
- {
1726
- RandGen(buf, size, RG);
1727
- return CrcCalc1(buf, size);
1728
- }
1729
-
1730
- bool CrcInternalTest()
1731
- {
1732
- CAlignedBuffer buffer;
1733
- const size_t kBufferSize0 = (1 << 8);
1734
- const size_t kBufferSize1 = (1 << 10);
1735
- const unsigned kCheckSize = (1 << 5);
1736
- buffer.Alloc(kBufferSize0 + kBufferSize1);
1737
- if (!buffer.IsAllocated())
1738
- return false;
1739
- Byte *buf = (Byte *)buffer;
1740
- size_t i;
1741
- for (i = 0; i < kBufferSize0; i++)
1742
- buf[i] = (Byte)i;
1743
- UInt32 crc1 = CrcCalc1(buf, kBufferSize0);
1744
- if (crc1 != 0x29058C73)
1745
- return false;
1746
- CBaseRandomGenerator RG;
1747
- RandGen(buf + kBufferSize0, kBufferSize1, RG);
1748
- for (i = 0; i < kBufferSize0 + kBufferSize1 - kCheckSize; i++)
1749
- for (unsigned j = 0; j < kCheckSize; j++)
1750
- if (CrcCalc1(buf + i, j) != CrcCalc(buf + i, j))
1751
- return false;
1752
- return true;
1753
- }
1754
-
1755
- struct CBenchMethod
1756
- {
1757
- unsigned Weight;
1758
- unsigned DictBits;
1759
- UInt32 EncComplex;
1760
- UInt32 DecComplexCompr;
1761
- UInt32 DecComplexUnc;
1762
- const char *Name;
1763
- };
1764
-
1765
- static const CBenchMethod g_Bench[] =
1766
- {
1767
- { 40, 17, 357, 145, 20, "LZMA:x1" },
1768
- { 80, 24, 1220, 145, 20, "LZMA:x5:mt1" },
1769
- { 80, 24, 1220, 145, 20, "LZMA:x5:mt2" },
1770
-
1771
- { 10, 16, 124, 40, 14, "Deflate:x1" },
1772
- { 20, 16, 376, 40, 14, "Deflate:x5" },
1773
- { 10, 16, 1082, 40, 14, "Deflate:x7" },
1774
- { 10, 17, 422, 40, 14, "Deflate64:x5" },
1775
-
1776
- { 10, 15, 590, 69, 69, "BZip2:x1" },
1777
- { 20, 19, 815, 122, 122, "BZip2:x5" },
1778
- { 10, 19, 815, 122, 122, "BZip2:x5:mt2" },
1779
- { 10, 19, 2530, 122, 122, "BZip2:x7" },
1780
-
1781
- { 10, 18, 1010, 0, 1150, "PPMD:x1" },
1782
- { 10, 22, 1655, 0, 1830, "PPMD:x5" },
1783
-
1784
- { 2, 0, 6, 0, 6, "Delta:4" },
1785
- { 2, 0, 4, 0, 4, "BCJ" },
1786
-
1787
- { 10, 0, 24, 0, 24, "AES256CBC:1" },
1788
- { 2, 0, 8, 0, 2, "AES256CBC:2" }
1789
- };
1790
-
1791
- struct CBenchHash
1792
- {
1793
- unsigned Weight;
1794
- UInt32 Complex;
1795
- UInt32 CheckSum;
1796
- const char *Name;
1797
- };
1798
-
1799
- static const CBenchHash g_Hash[] =
1800
- {
1801
- { 1, 1820, 0x8F8FEDAB, "CRC32:1" },
1802
- { 10, 558, 0x8F8FEDAB, "CRC32:4" },
1803
- { 10, 339, 0x8F8FEDAB, "CRC32:8" },
1804
- { 10, 512, 0xDF1C17CC, "CRC64" },
1805
- { 10, 5100, 0x2D79FF2E, "SHA256" },
1806
- { 10, 2340, 0x4C25132B, "SHA1" },
1807
- { 2, 5500, 0xE084E913, "BLAKE2sp" }
1808
- };
1809
-
1810
- struct CTotalBenchRes
1811
- {
1812
- // UInt64 NumIterations1; // for Usage
1813
- UInt64 NumIterations2; // for Rating / RPU
1814
-
1815
- UInt64 Rating;
1816
- UInt64 Usage;
1817
- UInt64 RPU;
1818
-
1819
- void Init() { /* NumIterations1 = 0; */ NumIterations2 = 0; Rating = 0; Usage = 0; RPU = 0; }
1820
-
1821
- void SetSum(const CTotalBenchRes &r1, const CTotalBenchRes &r2)
1822
- {
1823
- Rating = (r1.Rating + r2.Rating);
1824
- Usage = (r1.Usage + r2.Usage);
1825
- RPU = (r1.RPU + r2.RPU);
1826
- // NumIterations1 = (r1.NumIterations1 + r2.NumIterations1);
1827
- NumIterations2 = (r1.NumIterations2 + r2.NumIterations2);
1828
- }
1829
- };
1830
-
1831
- static void PrintNumber(IBenchPrintCallback &f, UInt64 value, unsigned size)
1832
- {
1833
- char s[128];
1834
- unsigned startPos = (unsigned)sizeof(s) - 32;
1835
- memset(s, ' ', startPos);
1836
- ConvertUInt64ToString(value, s + startPos);
1837
- // if (withSpace)
1838
- {
1839
- startPos--;
1840
- size++;
1841
- }
1842
- unsigned len = (unsigned)strlen(s + startPos);
1843
- if (size > len)
1844
- {
1845
- startPos -= (size - len);
1846
- if (startPos < 0)
1847
- startPos = 0;
1848
- }
1849
- f.Print(s + startPos);
1850
- }
1851
-
1852
- static const unsigned kFieldSize_Name = 12;
1853
- static const unsigned kFieldSize_SmallName = 4;
1854
- static const unsigned kFieldSize_Speed = 9;
1855
- static const unsigned kFieldSize_Usage = 5;
1856
- static const unsigned kFieldSize_RU = 6;
1857
- static const unsigned kFieldSize_Rating = 6;
1858
- static const unsigned kFieldSize_EU = 5;
1859
- static const unsigned kFieldSize_Effec = 5;
1860
-
1861
- static const unsigned kFieldSize_TotalSize = 4 + kFieldSize_Speed + kFieldSize_Usage + kFieldSize_RU + kFieldSize_Rating;
1862
- static const unsigned kFieldSize_EUAndEffec = 2 + kFieldSize_EU + kFieldSize_Effec;
1863
-
1864
-
1865
- static void PrintRating(IBenchPrintCallback &f, UInt64 rating, unsigned size)
1866
- {
1867
- PrintNumber(f, (rating + 500000) / 1000000, size);
1868
- }
1869
-
1870
-
1871
- static void PrintPercents(IBenchPrintCallback &f, UInt64 val, UInt64 divider, unsigned size)
1872
- {
1873
- PrintNumber(f, (val * 100 + divider / 2) / divider, size);
1874
- }
1875
-
1876
- static void PrintChars(IBenchPrintCallback &f, char c, unsigned size)
1877
- {
1878
- char s[256];
1879
- memset(s, (Byte)c, size);
1880
- s[size] = 0;
1881
- f.Print(s);
1882
- }
1883
-
1884
- static void PrintSpaces(IBenchPrintCallback &f, unsigned size)
1885
- {
1886
- PrintChars(f, ' ', size);
1887
- }
1888
-
1889
- static void PrintResults(IBenchPrintCallback &f, UInt64 usage, UInt64 rpu, UInt64 rating, bool showFreq, UInt64 cpuFreq)
1890
- {
1891
- PrintNumber(f, (usage + 5000) / 10000, kFieldSize_Usage);
1892
- PrintRating(f, rpu, kFieldSize_RU);
1893
- PrintRating(f, rating, kFieldSize_Rating);
1894
- if (showFreq)
1895
- {
1896
- if (cpuFreq == 0)
1897
- PrintSpaces(f, kFieldSize_EUAndEffec);
1898
- else
1899
- {
1900
- UInt64 ddd = cpuFreq * usage / 100;
1901
- if (ddd == 0)
1902
- ddd = 1;
1903
- PrintPercents(f, (rating * 10000), ddd, kFieldSize_EU);
1904
- PrintPercents(f, rating, cpuFreq, kFieldSize_Effec);
1905
- }
1906
- }
1907
- }
1908
-
1909
- static void PrintResults(IBenchPrintCallback *f,
1910
- const CBenchInfo &info,
1911
- unsigned weight,
1912
- UInt64 rating,
1913
- bool showFreq, UInt64 cpuFreq,
1914
- CTotalBenchRes *res)
1915
- {
1916
- UInt64 speed = info.GetSpeed(info.UnpackSize * info.NumIterations);
1917
- if (f)
1918
- {
1919
- if (speed != 0)
1920
- PrintNumber(*f, speed / 1024, kFieldSize_Speed);
1921
- else
1922
- PrintSpaces(*f, 1 + kFieldSize_Speed);
1923
- }
1924
- UInt64 usage = info.GetUsage();
1925
- UInt64 rpu = info.GetRatingPerUsage(rating);
1926
- if (f)
1927
- {
1928
- PrintResults(*f, usage, rpu, rating, showFreq, cpuFreq);
1929
- }
1930
-
1931
- if (res)
1932
- {
1933
- // res->NumIterations1++;
1934
- res->NumIterations2 += weight;
1935
- res->RPU += (rpu * weight);
1936
- res->Rating += (rating * weight);
1937
- res->Usage += (usage * weight);
1938
- }
1939
- }
1940
-
1941
- static void PrintTotals(IBenchPrintCallback &f, bool showFreq, UInt64 cpuFreq, const CTotalBenchRes &res)
1942
- {
1943
- PrintSpaces(f, 1 + kFieldSize_Speed);
1944
- // UInt64 numIterations1 = res.NumIterations1; if (numIterations1 == 0) numIterations1 = 1;
1945
- UInt64 numIterations2 = res.NumIterations2; if (numIterations2 == 0) numIterations2 = 1;
1946
- PrintResults(f, res.Usage / numIterations2, res.RPU / numIterations2, res.Rating / numIterations2, showFreq, cpuFreq);
1947
- }
1948
-
1949
-
1950
- static void PrintHex(AString &s, UInt64 v)
1951
- {
1952
- char temp[32];
1953
- ConvertUInt64ToHex(v, temp);
1954
- s += temp;
1955
- }
1956
-
1957
- AString GetProcessThreadsInfo(const NSystem::CProcessAffinity &ti)
1958
- {
1959
- AString s;
1960
- // s.Add_UInt32(ti.numProcessThreads);
1961
- if (ti.processAffinityMask != ti.systemAffinityMask)
1962
- {
1963
- // if (ti.numProcessThreads != ti.numSysThreads)
1964
- {
1965
- s += " / ";
1966
- s.Add_UInt32(ti.GetNumSystemThreads());
1967
- }
1968
- s += " : ";
1969
- PrintHex(s, ti.processAffinityMask);
1970
- s += " / ";
1971
- PrintHex(s, ti.systemAffinityMask);
1972
- }
1973
- return s;
1974
- }
1975
-
1976
-
1977
- static void PrintSize(AString &s, UInt64 v)
1978
- {
1979
- char c = 0;
1980
- if ((v & 0x3FF) == 0) { v >>= 10; c = 'K';
1981
- if ((v & 0x3FF) == 0) { v >>= 10; c = 'M';
1982
- if ((v & 0x3FF) == 0) { v >>= 10; c = 'G';
1983
- if ((v & 0x3FF) == 0) { v >>= 10; c = 'T';
1984
- }}}}
1985
- else
1986
- {
1987
- PrintHex(s, v);
1988
- return;
1989
- }
1990
- char temp[32];
1991
- ConvertUInt64ToString(v, temp);
1992
- s += temp;
1993
- if (c)
1994
- s += c;
1995
- }
1996
-
1997
-
1998
- #ifdef _7ZIP_LARGE_PAGES
1999
-
2000
- extern bool g_LargePagesMode;
2001
-
2002
- extern "C"
2003
- {
2004
- extern SIZE_T g_LargePageSize;
2005
- }
2006
-
2007
- void Add_LargePages_String(AString &s)
2008
- {
2009
- if (g_LargePagesMode || g_LargePageSize != 0)
2010
- {
2011
- s += " (LP-";
2012
- PrintSize(s, g_LargePageSize);
2013
- #ifdef MY_CPU_X86_OR_AMD64
2014
- if (CPU_IsSupported_PageGB())
2015
- s += "-1G";
2016
- #endif
2017
- if (!g_LargePagesMode)
2018
- s += "-NA";
2019
- s += ")";
2020
- }
2021
- }
2022
-
2023
- #endif
2024
-
2025
-
2026
-
2027
- static void PrintRequirements(IBenchPrintCallback &f, const char *sizeString,
2028
- bool size_Defined, UInt64 size, const char *threadsString, UInt32 numThreads)
2029
- {
2030
- f.Print("RAM ");
2031
- f.Print(sizeString);
2032
- if (size_Defined)
2033
- PrintNumber(f, (size >> 20), 6);
2034
- else
2035
- f.Print(" ?");
2036
- f.Print(" MB");
2037
-
2038
- #ifdef _7ZIP_LARGE_PAGES
2039
- {
2040
- AString s;
2041
- Add_LargePages_String(s);
2042
- f.Print(s);
2043
- }
2044
- #endif
2045
-
2046
- f.Print(", # ");
2047
- f.Print(threadsString);
2048
- PrintNumber(f, numThreads, 3);
2049
- }
2050
-
2051
-
2052
-
2053
- struct CBenchCallbackToPrint: public IBenchCallback
2054
- {
2055
- CBenchProps BenchProps;
2056
- CTotalBenchRes EncodeRes;
2057
- CTotalBenchRes DecodeRes;
2058
- IBenchPrintCallback *_file;
2059
- UInt32 DictSize;
2060
-
2061
- bool Use2Columns;
2062
- unsigned NameFieldSize;
2063
-
2064
- bool ShowFreq;
2065
- UInt64 CpuFreq;
2066
-
2067
- unsigned EncodeWeight;
2068
- unsigned DecodeWeight;
2069
-
2070
- CBenchCallbackToPrint():
2071
- Use2Columns(false),
2072
- NameFieldSize(0),
2073
- ShowFreq(false),
2074
- CpuFreq(0),
2075
- EncodeWeight(1),
2076
- DecodeWeight(1)
2077
- {}
2078
-
2079
- void Init() { EncodeRes.Init(); DecodeRes.Init(); }
2080
- void Print(const char *s);
2081
- void NewLine();
2082
-
2083
- HRESULT SetFreq(bool showFreq, UInt64 cpuFreq);
2084
- HRESULT SetEncodeResult(const CBenchInfo &info, bool final);
2085
- HRESULT SetDecodeResult(const CBenchInfo &info, bool final);
2086
- };
2087
-
2088
- HRESULT CBenchCallbackToPrint::SetFreq(bool showFreq, UInt64 cpuFreq)
2089
- {
2090
- ShowFreq = showFreq;
2091
- CpuFreq = cpuFreq;
2092
- return S_OK;
2093
- }
2094
-
2095
- HRESULT CBenchCallbackToPrint::SetEncodeResult(const CBenchInfo &info, bool final)
2096
- {
2097
- RINOK(_file->CheckBreak());
2098
- if (final)
2099
- {
2100
- UInt64 rating = BenchProps.GetCompressRating(DictSize, info.GlobalTime, info.GlobalFreq, info.UnpackSize * info.NumIterations);
2101
- PrintResults(_file, info,
2102
- EncodeWeight, rating,
2103
- ShowFreq, CpuFreq, &EncodeRes);
2104
- if (!Use2Columns)
2105
- _file->NewLine();
2106
- }
2107
- return S_OK;
2108
- }
2109
-
2110
- static const char * const kSep = " | ";
2111
-
2112
- HRESULT CBenchCallbackToPrint::SetDecodeResult(const CBenchInfo &info, bool final)
2113
- {
2114
- RINOK(_file->CheckBreak());
2115
- if (final)
2116
- {
2117
- UInt64 rating = BenchProps.GetDecompressRating(info.GlobalTime, info.GlobalFreq, info.UnpackSize, info.PackSize, info.NumIterations);
2118
- if (Use2Columns)
2119
- _file->Print(kSep);
2120
- else
2121
- PrintSpaces(*_file, NameFieldSize);
2122
- CBenchInfo info2 = info;
2123
- info2.UnpackSize *= info2.NumIterations;
2124
- info2.PackSize *= info2.NumIterations;
2125
- info2.NumIterations = 1;
2126
- PrintResults(_file, info2,
2127
- DecodeWeight, rating,
2128
- ShowFreq, CpuFreq, &DecodeRes);
2129
- }
2130
- return S_OK;
2131
- }
2132
-
2133
- void CBenchCallbackToPrint::Print(const char *s)
2134
- {
2135
- _file->Print(s);
2136
- }
2137
-
2138
- void CBenchCallbackToPrint::NewLine()
2139
- {
2140
- _file->NewLine();
2141
- }
2142
-
2143
- void PrintLeft(IBenchPrintCallback &f, const char *s, unsigned size)
2144
- {
2145
- f.Print(s);
2146
- int numSpaces = size - MyStringLen(s);
2147
- if (numSpaces > 0)
2148
- PrintSpaces(f, numSpaces);
2149
- }
2150
-
2151
- void PrintRight(IBenchPrintCallback &f, const char *s, unsigned size)
2152
- {
2153
- int numSpaces = size - MyStringLen(s);
2154
- if (numSpaces > 0)
2155
- PrintSpaces(f, numSpaces);
2156
- f.Print(s);
2157
- }
2158
-
2159
- static HRESULT TotalBench(
2160
- DECL_EXTERNAL_CODECS_LOC_VARS
2161
- UInt64 complexInCommands,
2162
- UInt32 numThreads,
2163
- bool forceUnpackSize,
2164
- size_t unpackSize,
2165
- const Byte *fileData,
2166
- IBenchPrintCallback *printCallback, CBenchCallbackToPrint *callback)
2167
- {
2168
- for (unsigned i = 0; i < ARRAY_SIZE(g_Bench); i++)
2169
- {
2170
- const CBenchMethod &bench = g_Bench[i];
2171
- PrintLeft(*callback->_file, bench.Name, kFieldSize_Name);
2172
- callback->BenchProps.DecComplexUnc = bench.DecComplexUnc;
2173
- callback->BenchProps.DecComplexCompr = bench.DecComplexCompr;
2174
- callback->BenchProps.EncComplex = bench.EncComplex;
2175
-
2176
- COneMethodInfo method;
2177
- NCOM::CPropVariant propVariant;
2178
- propVariant = bench.Name;
2179
- RINOK(method.ParseMethodFromPROPVARIANT(UString(), propVariant));
2180
-
2181
- size_t unpackSize2 = unpackSize;
2182
- if (!forceUnpackSize && bench.DictBits == 0)
2183
- unpackSize2 = kFilterUnpackSize;
2184
-
2185
- callback->EncodeWeight = bench.Weight;
2186
- callback->DecodeWeight = bench.Weight;
2187
-
2188
- HRESULT res = MethodBench(
2189
- EXTERNAL_CODECS_LOC_VARS
2190
- complexInCommands,
2191
- false, numThreads, method,
2192
- unpackSize2, fileData,
2193
- bench.DictBits,
2194
- printCallback, callback, &callback->BenchProps);
2195
-
2196
- if (res == E_NOTIMPL)
2197
- {
2198
- // callback->Print(" ---");
2199
- // we need additional empty line as line for decompression results
2200
- if (!callback->Use2Columns)
2201
- callback->NewLine();
2202
- }
2203
- else
2204
- {
2205
- RINOK(res);
2206
- }
2207
-
2208
- callback->NewLine();
2209
- }
2210
- return S_OK;
2211
- }
2212
-
2213
-
2214
- static HRESULT FreqBench(
2215
- UInt64 complexInCommands,
2216
- UInt32 numThreads,
2217
- IBenchPrintCallback *_file,
2218
- bool showFreq,
2219
- UInt64 specifiedFreq,
2220
- UInt64 &cpuFreq,
2221
- UInt32 &res)
2222
- {
2223
- res = 0;
2224
- cpuFreq = 0;
2225
-
2226
- UInt32 bufferSize = 1 << 20;
2227
- UInt32 complexity = kNumFreqCommands;
2228
- if (numThreads == 0)
2229
- numThreads = 1;
2230
-
2231
- #ifdef _7ZIP_ST
2232
- numThreads = 1;
2233
- #endif
2234
-
2235
- UInt32 bsize = (bufferSize == 0 ? 1 : bufferSize);
2236
- UInt64 numIterations = complexInCommands / complexity / bsize;
2237
- if (numIterations == 0)
2238
- numIterations = 1;
2239
-
2240
- CBenchInfoCalc progressInfoSpec;
2241
-
2242
- #ifndef _7ZIP_ST
2243
- CFreqThreads threads;
2244
- if (numThreads > 1)
2245
- {
2246
- threads.Items = new CFreqInfo[numThreads];
2247
- UInt32 i;
2248
- for (i = 0; i < numThreads; i++)
2249
- {
2250
- CFreqInfo &info = threads.Items[i];
2251
- info.Callback = _file;
2252
- info.CallbackRes = S_OK;
2253
- info.NumIterations = numIterations;
2254
- info.Size = bufferSize;
2255
- }
2256
- progressInfoSpec.SetStartTime();
2257
- for (i = 0; i < numThreads; i++)
2258
- {
2259
- CFreqInfo &info = threads.Items[i];
2260
- RINOK(info.Thread.Create(FreqThreadFunction, &info));
2261
- threads.NumThreads++;
2262
- }
2263
- threads.WaitAll();
2264
- for (i = 0; i < numThreads; i++)
2265
- {
2266
- RINOK(threads.Items[i].CallbackRes);
2267
- }
2268
- }
2269
- else
2270
- #endif
2271
- {
2272
- progressInfoSpec.SetStartTime();
2273
- UInt32 sum = g_BenchCpuFreqTemp;
2274
- for (UInt64 k = numIterations; k > 0; k--)
2275
- {
2276
- RINOK(_file->CheckBreak());
2277
- sum = CountCpuFreq(sum, bufferSize, g_BenchCpuFreqTemp);
2278
- }
2279
- res += sum;
2280
- }
2281
-
2282
- CBenchInfo info;
2283
- progressInfoSpec.SetFinishTime(info);
2284
-
2285
- info.UnpackSize = 0;
2286
- info.PackSize = 0;
2287
- info.NumIterations = 1;
2288
-
2289
- if (_file)
2290
- {
2291
- {
2292
- UInt64 numCommands = (UInt64)numIterations * bufferSize * numThreads * complexity;
2293
- UInt64 rating = info.GetSpeed(numCommands);
2294
- cpuFreq = rating / numThreads;
2295
- PrintResults(_file, info,
2296
- 0, // weight
2297
- rating,
2298
- showFreq, showFreq ? (specifiedFreq != 0 ? specifiedFreq : cpuFreq) : 0, NULL);
2299
- }
2300
- RINOK(_file->CheckBreak());
2301
- }
2302
-
2303
- return S_OK;
2304
- }
2305
-
2306
-
2307
-
2308
- static HRESULT CrcBench(
2309
- DECL_EXTERNAL_CODECS_LOC_VARS
2310
- UInt64 complexInCommands,
2311
- UInt32 numThreads, UInt32 bufferSize,
2312
- UInt64 &speed,
2313
- UInt32 complexity, unsigned benchWeight,
2314
- const UInt32 *checkSum,
2315
- const COneMethodInfo &method,
2316
- IBenchPrintCallback *_file,
2317
- CTotalBenchRes *encodeRes,
2318
- bool showFreq, UInt64 cpuFreq)
2319
- {
2320
- if (numThreads == 0)
2321
- numThreads = 1;
2322
-
2323
- #ifdef _7ZIP_ST
2324
- numThreads = 1;
2325
- #endif
2326
-
2327
- const AString &methodName = method.MethodName;
2328
- // methodName.RemoveChar(L'-');
2329
- CMethodId hashID;
2330
- if (!FindHashMethod(
2331
- EXTERNAL_CODECS_LOC_VARS
2332
- methodName, hashID))
2333
- return E_NOTIMPL;
2334
-
2335
- CAlignedBuffer buffer;
2336
- size_t totalSize = (size_t)bufferSize * numThreads;
2337
- if (totalSize / numThreads != bufferSize)
2338
- return E_OUTOFMEMORY;
2339
- ALLOC_WITH_HRESULT(&buffer, totalSize)
2340
-
2341
- Byte *buf = (Byte *)buffer;
2342
- CBaseRandomGenerator RG;
2343
- UInt32 bsize = (bufferSize == 0 ? 1 : bufferSize);
2344
- UInt64 numIterations = complexInCommands * 256 / complexity / bsize;
2345
- if (numIterations == 0)
2346
- numIterations = 1;
2347
-
2348
- CBenchInfoCalc progressInfoSpec;
2349
-
2350
- #ifndef _7ZIP_ST
2351
- CCrcThreads threads;
2352
- if (numThreads > 1)
2353
- {
2354
- threads.Items = new CCrcInfo[numThreads];
2355
-
2356
- UInt32 i;
2357
- for (i = 0; i < numThreads; i++)
2358
- {
2359
- CCrcInfo &info = threads.Items[i];
2360
- AString name;
2361
- RINOK(CreateHasher(EXTERNAL_CODECS_LOC_VARS hashID, name, info.Hasher));
2362
- if (!info.Hasher)
2363
- return E_NOTIMPL;
2364
- CMyComPtr<ICompressSetCoderProperties> scp;
2365
- info.Hasher.QueryInterface(IID_ICompressSetCoderProperties, &scp);
2366
- if (scp)
2367
- {
2368
- UInt64 reduceSize = 1;
2369
- RINOK(method.SetCoderProps(scp, &reduceSize));
2370
- }
2371
-
2372
- Byte *data = buf + (size_t)bufferSize * i;
2373
- info.Callback = _file;
2374
- info.Data = data;
2375
- info.NumIterations = numIterations;
2376
- info.Size = bufferSize;
2377
- /* info.Crc = */ RandGenCrc(data, bufferSize, RG);
2378
- info.CheckSumDefined = false;
2379
- if (checkSum)
2380
- {
2381
- info.CheckSum = *checkSum;
2382
- info.CheckSumDefined = (checkSum && (i == 0));
2383
- }
2384
-
2385
- #ifdef USE_ALLOCA
2386
- info.AllocaSize = (i * 16 * 21) & 0x7FF;
2387
- #endif
2388
- }
2389
-
2390
- progressInfoSpec.SetStartTime();
2391
-
2392
- for (i = 0; i < numThreads; i++)
2393
- {
2394
- CCrcInfo &info = threads.Items[i];
2395
- RINOK(info.Thread.Create(CrcThreadFunction, &info));
2396
- threads.NumThreads++;
2397
- }
2398
- threads.WaitAll();
2399
- for (i = 0; i < numThreads; i++)
2400
- {
2401
- RINOK(threads.Items[i].Res);
2402
- }
2403
- }
2404
- else
2405
- #endif
2406
- {
2407
- /* UInt32 crc = */ RandGenCrc(buf, bufferSize, RG);
2408
- progressInfoSpec.SetStartTime();
2409
- CMyComPtr<IHasher> hasher;
2410
- AString name;
2411
- RINOK(CreateHasher(EXTERNAL_CODECS_LOC_VARS hashID, name, hasher));
2412
- if (!hasher)
2413
- return E_NOTIMPL;
2414
- CMyComPtr<ICompressSetCoderProperties> scp;
2415
- hasher.QueryInterface(IID_ICompressSetCoderProperties, &scp);
2416
- if (scp)
2417
- {
2418
- UInt64 reduceSize = 1;
2419
- RINOK(method.SetCoderProps(scp, &reduceSize));
2420
- }
2421
- RINOK(CrcBig(buf, bufferSize, numIterations, checkSum, hasher, _file));
2422
- }
2423
-
2424
- CBenchInfo info;
2425
- progressInfoSpec.SetFinishTime(info);
2426
-
2427
- UInt64 unpSize = numIterations * bufferSize;
2428
- UInt64 unpSizeThreads = unpSize * numThreads;
2429
- info.UnpackSize = unpSizeThreads;
2430
- info.PackSize = unpSizeThreads;
2431
- info.NumIterations = 1;
2432
-
2433
- if (_file)
2434
- {
2435
- {
2436
- UInt64 numCommands = unpSizeThreads * complexity / 256;
2437
- UInt64 rating = info.GetSpeed(numCommands);
2438
- PrintResults(_file, info,
2439
- benchWeight, rating,
2440
- showFreq, cpuFreq, encodeRes);
2441
- }
2442
- RINOK(_file->CheckBreak());
2443
- }
2444
-
2445
- speed = info.GetSpeed(unpSizeThreads);
2446
-
2447
- return S_OK;
2448
- }
2449
-
2450
- static HRESULT TotalBench_Hash(
2451
- DECL_EXTERNAL_CODECS_LOC_VARS
2452
- UInt64 complexInCommands,
2453
- UInt32 numThreads, UInt32 bufSize,
2454
- IBenchPrintCallback *printCallback, CBenchCallbackToPrint *callback,
2455
- CTotalBenchRes *encodeRes,
2456
- bool showFreq, UInt64 cpuFreq)
2457
- {
2458
- for (unsigned i = 0; i < ARRAY_SIZE(g_Hash); i++)
2459
- {
2460
- const CBenchHash &bench = g_Hash[i];
2461
- PrintLeft(*callback->_file, bench.Name, kFieldSize_Name);
2462
- // callback->BenchProps.DecComplexUnc = bench.DecComplexUnc;
2463
- // callback->BenchProps.DecComplexCompr = bench.DecComplexCompr;
2464
- // callback->BenchProps.EncComplex = bench.EncComplex;
2465
-
2466
- COneMethodInfo method;
2467
- NCOM::CPropVariant propVariant;
2468
- propVariant = bench.Name;
2469
- RINOK(method.ParseMethodFromPROPVARIANT(UString(), propVariant));
2470
-
2471
- UInt64 speed;
2472
- HRESULT res = CrcBench(
2473
- EXTERNAL_CODECS_LOC_VARS
2474
- complexInCommands,
2475
- numThreads, bufSize,
2476
- speed,
2477
- bench.Complex, bench.Weight,
2478
- &bench.CheckSum, method,
2479
- printCallback, encodeRes, showFreq, cpuFreq);
2480
- if (res == E_NOTIMPL)
2481
- {
2482
- // callback->Print(" ---");
2483
- }
2484
- else
2485
- {
2486
- RINOK(res);
2487
- }
2488
- callback->NewLine();
2489
- }
2490
- return S_OK;
2491
- }
2492
-
2493
- struct CTempValues
2494
- {
2495
- UInt64 *Values;
2496
- CTempValues(UInt32 num) { Values = new UInt64[num]; }
2497
- ~CTempValues() { delete []Values; }
2498
- };
2499
-
2500
- static void ParseNumberString(const UString &s, NCOM::CPropVariant &prop)
2501
- {
2502
- const wchar_t *end;
2503
- UInt64 result = ConvertStringToUInt64(s, &end);
2504
- if (*end != 0 || s.IsEmpty())
2505
- prop = s;
2506
- else if (result <= (UInt32)0xFFFFFFFF)
2507
- prop = (UInt32)result;
2508
- else
2509
- prop = result;
2510
- }
2511
-
2512
- static UInt32 GetNumThreadsNext(unsigned i, UInt32 numThreads)
2513
- {
2514
- if (i < 2)
2515
- return i + 1;
2516
- i -= 1;
2517
- UInt32 num = (UInt32)(2 + (i & 1)) << (i >> 1);
2518
- return (num <= numThreads) ? num : numThreads;
2519
- }
2520
-
2521
- static bool AreSameMethodNames(const char *fullName, const char *shortName)
2522
- {
2523
- return StringsAreEqualNoCase_Ascii(fullName, shortName);
2524
- }
2525
-
2526
-
2527
- #ifdef MY_CPU_X86_OR_AMD64
2528
-
2529
- static void PrintCpuChars(AString &s, UInt32 v)
2530
- {
2531
- for (int j = 0; j < 4; j++)
2532
- {
2533
- Byte b = (Byte)(v & 0xFF);
2534
- v >>= 8;
2535
- if (b == 0)
2536
- break;
2537
- s += (char)b;
2538
- }
2539
- }
2540
-
2541
- static void x86cpuid_to_String(const Cx86cpuid &c, AString &s)
2542
- {
2543
- s.Empty();
2544
-
2545
- UInt32 maxFunc2 = 0;
2546
- UInt32 t[3];
2547
-
2548
- MyCPUID(0x80000000, &maxFunc2, &t[0], &t[1], &t[2]);
2549
-
2550
- bool fullNameIsAvail = (maxFunc2 >= 0x80000004);
2551
-
2552
- if (!fullNameIsAvail)
2553
- {
2554
- for (int i = 0; i < 3; i++)
2555
- PrintCpuChars(s, c.vendor[i]);
2556
- }
2557
- else
2558
- {
2559
- for (int i = 0; i < 3; i++)
2560
- {
2561
- UInt32 d[4] = { 0 };
2562
- MyCPUID(0x80000002 + i, &d[0], &d[1], &d[2], &d[3]);
2563
- for (int j = 0; j < 4; j++)
2564
- PrintCpuChars(s, d[j]);
2565
- }
2566
- }
2567
-
2568
- s.Add_Space_if_NotEmpty();
2569
- {
2570
- char temp[32];
2571
- ConvertUInt32ToHex(c.ver, temp);
2572
- s += '(';
2573
- s += temp;
2574
- s += ')';
2575
- }
2576
- }
2577
-
2578
- #endif
2579
-
2580
-
2581
-
2582
- static const char * const k_PROCESSOR_ARCHITECTURE[] =
2583
- {
2584
- "x86" // "INTEL"
2585
- , "MIPS"
2586
- , "ALPHA"
2587
- , "PPC"
2588
- , "SHX"
2589
- , "ARM"
2590
- , "IA64"
2591
- , "ALPHA64"
2592
- , "MSIL"
2593
- , "x64" // "AMD64"
2594
- , "IA32_ON_WIN64"
2595
- , "NEUTRAL"
2596
- , "ARM64"
2597
- , "ARM32_ON_WIN64"
2598
- };
2599
-
2600
- #define MY__PROCESSOR_ARCHITECTURE_INTEL 0
2601
- #define MY__PROCESSOR_ARCHITECTURE_AMD64 9
2602
-
2603
-
2604
- #define MY__PROCESSOR_INTEL_PENTIUM 586
2605
- #define MY__PROCESSOR_AMD_X8664 8664
2606
-
2607
- /*
2608
- static const CUInt32PCharPair k_PROCESSOR[] =
2609
- {
2610
- { 2200, "IA64" },
2611
- { 8664, "x64" }
2612
- };
2613
-
2614
- #define PROCESSOR_INTEL_386 386
2615
- #define PROCESSOR_INTEL_486 486
2616
- #define PROCESSOR_INTEL_PENTIUM 586
2617
- #define PROCESSOR_INTEL_860 860
2618
- #define PROCESSOR_INTEL_IA64 2200
2619
- #define PROCESSOR_AMD_X8664 8664
2620
- #define PROCESSOR_MIPS_R2000 2000
2621
- #define PROCESSOR_MIPS_R3000 3000
2622
- #define PROCESSOR_MIPS_R4000 4000
2623
- #define PROCESSOR_ALPHA_21064 21064
2624
- #define PROCESSOR_PPC_601 601
2625
- #define PROCESSOR_PPC_603 603
2626
- #define PROCESSOR_PPC_604 604
2627
- #define PROCESSOR_PPC_620 620
2628
- #define PROCESSOR_HITACHI_SH3 10003
2629
- #define PROCESSOR_HITACHI_SH3E 10004
2630
- #define PROCESSOR_HITACHI_SH4 10005
2631
- #define PROCESSOR_MOTOROLA_821 821
2632
- #define PROCESSOR_SHx_SH3 103
2633
- #define PROCESSOR_SHx_SH4 104
2634
- #define PROCESSOR_STRONGARM 2577 // 0xA11
2635
- #define PROCESSOR_ARM720 1824 // 0x720
2636
- #define PROCESSOR_ARM820 2080 // 0x820
2637
- #define PROCESSOR_ARM920 2336 // 0x920
2638
- #define PROCESSOR_ARM_7TDMI 70001
2639
- #define PROCESSOR_OPTIL 18767 // 0x494f
2640
- */
2641
-
2642
- #ifdef _WIN32
2643
-
2644
- static const char * const k_PF[] =
2645
- {
2646
- "FP_ERRATA"
2647
- , "FP_EMU"
2648
- , "CMPXCHG"
2649
- , "MMX"
2650
- , "PPC_MOVEMEM_64BIT"
2651
- , "ALPHA_BYTE"
2652
- , "SSE"
2653
- , "3DNOW"
2654
- , "RDTSC"
2655
- , "PAE"
2656
- , "SSE2"
2657
- , "SSE_DAZ"
2658
- , "NX"
2659
- , "SSE3"
2660
- , "CMPXCHG16B"
2661
- , "CMP8XCHG16"
2662
- , "CHANNELS"
2663
- , "XSAVE"
2664
- , "ARM_VFP_32"
2665
- , "ARM_NEON"
2666
- , "L2AT"
2667
- , "VIRT_FIRMWARE"
2668
- , "RDWRFSGSBASE"
2669
- , "FASTFAIL"
2670
- , "ARM_DIVIDE"
2671
- , "ARM_64BIT_LOADSTORE_ATOMIC"
2672
- , "ARM_EXTERNAL_CACHE"
2673
- , "ARM_FMAC"
2674
- , "RDRAND"
2675
- , "ARM_V8"
2676
- , "ARM_V8_CRYPTO"
2677
- , "ARM_V8_CRC32"
2678
- , "RDTSCP"
2679
- };
2680
-
2681
- #endif
2682
-
2683
-
2684
-
2685
-
2686
- static void PrintPage(AString &s, UInt32 v)
2687
- {
2688
- if ((v & 0x3FF) == 0)
2689
- {
2690
- s.Add_UInt32(v >> 10);
2691
- s += "K";
2692
- }
2693
- else
2694
- s.Add_UInt32(v >> 10);
2695
- }
2696
-
2697
- static AString TypeToString2(const char * const table[], unsigned num, UInt32 value)
2698
- {
2699
- char sz[16];
2700
- const char *p = NULL;
2701
- if (value < num)
2702
- p = table[value];
2703
- if (!p)
2704
- {
2705
- ConvertUInt32ToString(value, sz);
2706
- p = sz;
2707
- }
2708
- return (AString)p;
2709
- }
2710
-
2711
- #ifdef _WIN32
2712
-
2713
- static void SysInfo_To_String(AString &s, const SYSTEM_INFO &si)
2714
- {
2715
- s += TypeToString2(k_PROCESSOR_ARCHITECTURE, ARRAY_SIZE(k_PROCESSOR_ARCHITECTURE), si.wProcessorArchitecture);
2716
-
2717
- if (!( si.wProcessorArchitecture == MY__PROCESSOR_ARCHITECTURE_INTEL && si.dwProcessorType == MY__PROCESSOR_INTEL_PENTIUM
2718
- || si.wProcessorArchitecture == MY__PROCESSOR_ARCHITECTURE_AMD64 && si.dwProcessorType == MY__PROCESSOR_AMD_X8664))
2719
- {
2720
- s += " ";
2721
- // s += TypePairToString(k_PROCESSOR, ARRAY_SIZE(k_PROCESSOR), si.dwProcessorType);
2722
- s.Add_UInt32(si.dwProcessorType);
2723
- }
2724
- s += " ";
2725
- PrintHex(s, si.wProcessorLevel);
2726
- s += ".";
2727
- PrintHex(s, si.wProcessorRevision);
2728
- if ((UInt64)si.dwActiveProcessorMask + 1 != ((UInt64)1 << si.dwNumberOfProcessors))
2729
- if ((UInt64)si.dwActiveProcessorMask + 1 != 0 || si.dwNumberOfProcessors != sizeof(UInt64) * 8)
2730
- {
2731
- s += " act:";
2732
- PrintHex(s, si.dwActiveProcessorMask);
2733
- }
2734
- s += " cpus:";
2735
- s.Add_UInt32(si.dwNumberOfProcessors);
2736
- if (si.dwPageSize != 1 << 12)
2737
- {
2738
- s += " page:";
2739
- PrintPage(s, si.dwPageSize);
2740
- }
2741
- if (si.dwAllocationGranularity != 1 << 16)
2742
- {
2743
- s += " gran:";
2744
- PrintPage(s, si.dwAllocationGranularity);
2745
- }
2746
- s += " ";
2747
-
2748
- DWORD_PTR minAdd = (DWORD_PTR)si.lpMinimumApplicationAddress;
2749
- UInt64 maxSize = (UInt64)(DWORD_PTR)si.lpMaximumApplicationAddress + 1;
2750
- const UInt32 kReserveSize = ((UInt32)1 << 16);
2751
- if (minAdd != kReserveSize)
2752
- {
2753
- PrintSize(s, minAdd);
2754
- s += "-";
2755
- }
2756
- else
2757
- {
2758
- if ((maxSize & (kReserveSize - 1)) == 0)
2759
- maxSize += kReserveSize;
2760
- }
2761
- PrintSize(s, maxSize);
2762
- }
2763
-
2764
- #ifndef _WIN64
2765
- typedef VOID (WINAPI *Func_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
2766
- #endif
2767
-
2768
- #endif
2769
-
2770
- void GetSysInfo(AString &s1, AString &s2)
2771
- {
2772
- s1.Empty();
2773
- s2.Empty();
2774
-
2775
- #ifdef _WIN32
2776
- SYSTEM_INFO si;
2777
- GetSystemInfo(&si);
2778
- {
2779
- SysInfo_To_String(s1, si);
2780
- // s += " : ";
2781
- }
2782
-
2783
- #if !defined(_WIN64) && !defined(UNDER_CE)
2784
- Func_GetNativeSystemInfo fn_GetNativeSystemInfo = (Func_GetNativeSystemInfo)GetProcAddress(
2785
- GetModuleHandleA("kernel32.dll"), "GetNativeSystemInfo");
2786
- if (fn_GetNativeSystemInfo)
2787
- {
2788
- SYSTEM_INFO si2;
2789
- fn_GetNativeSystemInfo(&si2);
2790
- // if (memcmp(&si, &si2, sizeof(si)) != 0)
2791
- {
2792
- // s += " - ";
2793
- SysInfo_To_String(s2, si2);
2794
- }
2795
- }
2796
- #endif
2797
- #endif
2798
- }
2799
-
2800
-
2801
- void GetCpuName(AString &s)
2802
- {
2803
- s.Empty();
2804
-
2805
- #ifdef MY_CPU_X86_OR_AMD64
2806
- {
2807
- Cx86cpuid cpuid;
2808
- if (x86cpuid_CheckAndRead(&cpuid))
2809
- {
2810
- AString s2;
2811
- x86cpuid_to_String(cpuid, s2);
2812
- s += s2;
2813
- }
2814
- else
2815
- {
2816
- #ifdef MY_CPU_AMD64
2817
- s += "x64";
2818
- #else
2819
- s += "x86";
2820
- #endif
2821
- }
2822
- }
2823
- #else
2824
-
2825
- #ifdef MY_CPU_LE
2826
- s += "LE";
2827
- #elif defined(MY_CPU_BE)
2828
- s += "BE";
2829
- #endif
2830
-
2831
- #endif
2832
-
2833
- #ifdef _7ZIP_LARGE_PAGES
2834
- Add_LargePages_String(s);
2835
- #endif
2836
- }
2837
-
2838
-
2839
- void GetCpuFeatures(AString &s)
2840
- {
2841
- s.Empty();
2842
-
2843
- #ifdef _WIN32
2844
- const unsigned kNumFeatures_Extra = 32; // we check also for unknown features
2845
- const unsigned kNumFeatures = ARRAY_SIZE(k_PF) + kNumFeatures_Extra;
2846
- for (unsigned i = 0; i < kNumFeatures; i++)
2847
- {
2848
- if (IsProcessorFeaturePresent(i))
2849
- {
2850
- s.Add_Space_if_NotEmpty();
2851
- s += TypeToString2(k_PF, ARRAY_SIZE(k_PF), i);
2852
- }
2853
- }
2854
- #endif
2855
- }
2856
-
2857
-
2858
- #ifdef _WIN32
2859
- #ifndef UNDER_CE
2860
-
2861
- typedef void (WINAPI * Func_RtlGetVersion) (OSVERSIONINFOEXW *);
2862
-
2863
- static BOOL My_RtlGetVersion(OSVERSIONINFOEXW *vi)
2864
- {
2865
- HMODULE ntdll = ::GetModuleHandleW(L"ntdll.dll");
2866
- if (!ntdll)
2867
- return FALSE;
2868
- Func_RtlGetVersion func = (Func_RtlGetVersion)GetProcAddress(ntdll, "RtlGetVersion");
2869
- if (!func)
2870
- return FALSE;
2871
- func(vi);
2872
- return TRUE;
2873
- }
2874
-
2875
- #endif
2876
- #endif
2877
-
2878
-
2879
- HRESULT Bench(
2880
- DECL_EXTERNAL_CODECS_LOC_VARS
2881
- IBenchPrintCallback *printCallback,
2882
- IBenchCallback *benchCallback,
2883
- // IBenchFreqCallback *freqCallback,
2884
- const CObjectVector<CProperty> &props,
2885
- UInt32 numIterations,
2886
- bool multiDict)
2887
- {
2888
- if (!CrcInternalTest())
2889
- return E_FAIL;
2890
-
2891
- UInt32 numCPUs = 1;
2892
- UInt64 ramSize = (UInt64)(sizeof(size_t)) << 29;
2893
-
2894
- NSystem::CProcessAffinity threadsInfo;
2895
- threadsInfo.InitST();
2896
-
2897
- #ifndef _7ZIP_ST
2898
-
2899
- if (threadsInfo.Get() && threadsInfo.processAffinityMask != 0)
2900
- numCPUs = threadsInfo.GetNumProcessThreads();
2901
- else
2902
- numCPUs = NSystem::GetNumberOfProcessors();
2903
-
2904
- #endif
2905
-
2906
- bool ramSize_Defined = NSystem::GetRamSize(ramSize);
2907
-
2908
- UInt32 numThreadsSpecified = numCPUs;
2909
-
2910
- UInt32 testTime = kComplexInSeconds;
2911
-
2912
- UInt64 specifiedFreq = 0;
2913
-
2914
- bool multiThreadTests = false;
2915
-
2916
- COneMethodInfo method;
2917
-
2918
- CAlignedBuffer fileDataBuffer;
2919
-
2920
- {
2921
- unsigned i;
2922
- for (i = 0; i < props.Size(); i++)
2923
- {
2924
- const CProperty &property = props[i];
2925
- UString name (property.Name);
2926
- name.MakeLower_Ascii();
2927
-
2928
- if (name.IsEqualTo("file"))
2929
- {
2930
- if (property.Value.IsEmpty())
2931
- return E_INVALIDARG;
2932
-
2933
- #ifdef USE_WIN_FILE
2934
-
2935
- NFile::NIO::CInFile file;
2936
- if (!file.Open(us2fs(property.Value)))
2937
- return E_INVALIDARG;
2938
- UInt64 len;
2939
- if (!file.GetLength(len))
2940
- return E_FAIL;
2941
- if (len >= ((UInt32)1 << 31) || len == 0)
2942
- return E_INVALIDARG;
2943
- ALLOC_WITH_HRESULT(&fileDataBuffer, (size_t)len);
2944
- UInt32 processedSize;
2945
- file.Read((Byte *)fileDataBuffer, (UInt32)len, processedSize);
2946
- if (processedSize != len)
2947
- return E_FAIL;
2948
- if (printCallback)
2949
- {
2950
- printCallback->Print("file size =");
2951
- PrintNumber(*printCallback, len, 0);
2952
- printCallback->NewLine();
2953
- }
2954
- continue;
2955
-
2956
- #else
2957
-
2958
- return E_NOTIMPL;
2959
-
2960
- #endif
2961
- }
2962
-
2963
- NCOM::CPropVariant propVariant;
2964
- if (!property.Value.IsEmpty())
2965
- ParseNumberString(property.Value, propVariant);
2966
-
2967
- if (name.IsEqualTo("time"))
2968
- {
2969
- RINOK(ParsePropToUInt32(UString(), propVariant, testTime));
2970
- continue;
2971
- }
2972
-
2973
- if (name.IsEqualTo("freq"))
2974
- {
2975
- UInt32 freq32 = 0;
2976
- RINOK(ParsePropToUInt32(UString(), propVariant, freq32));
2977
- if (freq32 == 0)
2978
- return E_INVALIDARG;
2979
- specifiedFreq = (UInt64)freq32 * 1000000;
2980
-
2981
- if (printCallback)
2982
- {
2983
- printCallback->Print("freq=");
2984
- PrintNumber(*printCallback, freq32, 0);
2985
- printCallback->NewLine();
2986
- }
2987
-
2988
- continue;
2989
- }
2990
-
2991
- if (name.IsPrefixedBy_Ascii_NoCase("mt"))
2992
- {
2993
- UString s = name.Ptr(2);
2994
- if (s.IsEqualTo("*")
2995
- || s.IsEmpty() && propVariant.vt == VT_BSTR && StringsAreEqual_Ascii(propVariant.bstrVal, "*"))
2996
- {
2997
- multiThreadTests = true;
2998
- continue;
2999
- }
3000
- #ifndef _7ZIP_ST
3001
- RINOK(ParseMtProp(s, propVariant, numCPUs, numThreadsSpecified));
3002
- #endif
3003
- continue;
3004
- }
3005
-
3006
- RINOK(method.ParseMethodFromPROPVARIANT(name, propVariant));
3007
- }
3008
- }
3009
-
3010
- if (printCallback)
3011
- {
3012
- #ifdef _WIN32
3013
- #ifndef UNDER_CE
3014
- {
3015
- AString s;
3016
- // OSVERSIONINFO vi;
3017
- OSVERSIONINFOEXW vi;
3018
- vi.dwOSVersionInfoSize = sizeof(vi);
3019
- // if (::GetVersionEx(&vi))
3020
- if (My_RtlGetVersion(&vi))
3021
- {
3022
- s += "Windows";
3023
- if (vi.dwPlatformId != VER_PLATFORM_WIN32_NT)
3024
- s.Add_UInt32(vi.dwPlatformId);
3025
- s += " "; s.Add_UInt32(vi.dwMajorVersion);
3026
- s += "."; s.Add_UInt32(vi.dwMinorVersion);
3027
- s += " "; s.Add_UInt32(vi.dwBuildNumber);
3028
- // s += " "; s += GetAnsiString(vi.szCSDVersion);
3029
- }
3030
- printCallback->Print(s);
3031
- printCallback->NewLine();
3032
- }
3033
- #endif
3034
- #endif
3035
-
3036
- {
3037
- AString s1, s2;
3038
- GetSysInfo(s1, s2);
3039
- if (!s1.IsEmpty() || !s2.IsEmpty())
3040
- {
3041
- printCallback->Print(s1);
3042
- if (s1 != s2 && !s2.IsEmpty())
3043
- {
3044
- printCallback->Print(" - ");
3045
- printCallback->Print(s2);
3046
- }
3047
- printCallback->NewLine();
3048
- }
3049
- }
3050
- {
3051
- AString s;
3052
- GetCpuFeatures(s);
3053
- if (!s.IsEmpty())
3054
- {
3055
- printCallback->Print(s);
3056
- printCallback->NewLine();
3057
- }
3058
- }
3059
- {
3060
- AString s;
3061
- GetCpuName(s);
3062
- if (!s.IsEmpty())
3063
- {
3064
- printCallback->Print(s);
3065
- printCallback->NewLine();
3066
- }
3067
- }
3068
- }
3069
-
3070
- if (printCallback)
3071
- {
3072
- printCallback->Print("CPU Freq:");
3073
- }
3074
-
3075
- UInt64 complexInCommands = kComplexInCommands;
3076
-
3077
- if (printCallback /* || freqCallback */)
3078
- {
3079
- UInt64 numMilCommands = 1 << 6;
3080
- if (specifiedFreq != 0)
3081
- {
3082
- while (numMilCommands > 1 && specifiedFreq < (numMilCommands * 1000000))
3083
- numMilCommands >>= 1;
3084
- }
3085
-
3086
- for (int jj = 0;; jj++)
3087
- {
3088
- if (printCallback)
3089
- RINOK(printCallback->CheckBreak());
3090
-
3091
- UInt64 start = ::GetTimeCount();
3092
- UInt32 sum = (UInt32)start;
3093
- sum = CountCpuFreq(sum, (UInt32)(numMilCommands * 1000000 / kNumFreqCommands), g_BenchCpuFreqTemp);
3094
- if (sum == 0xF1541213)
3095
- if (printCallback)
3096
- printCallback->Print("");
3097
- const UInt64 realDelta = ::GetTimeCount() - start;
3098
- start = realDelta;
3099
- if (start == 0)
3100
- start = 1;
3101
- UInt64 freq = GetFreq();
3102
- // mips is constant in some compilers
3103
- const UInt64 mipsVal = numMilCommands * freq / start;
3104
- if (printCallback)
3105
- {
3106
- if (realDelta == 0)
3107
- {
3108
- printCallback->Print(" -");
3109
- }
3110
- else
3111
- {
3112
- // PrintNumber(*printCallback, start, 0);
3113
- PrintNumber(*printCallback, mipsVal, 5);
3114
- }
3115
- }
3116
- /*
3117
- if (freqCallback)
3118
- freqCallback->AddCpuFreq(mipsVal);
3119
- */
3120
-
3121
- if (jj >= 3)
3122
- {
3123
- SetComplexCommands(testTime, false, mipsVal * 1000000, complexInCommands);
3124
- if (jj >= 8 || start >= freq)
3125
- break;
3126
- // break; // change it
3127
- numMilCommands <<= 1;
3128
- }
3129
- }
3130
- }
3131
-
3132
- if (printCallback)
3133
- {
3134
- printCallback->NewLine();
3135
- printCallback->NewLine();
3136
- PrintRequirements(*printCallback, "size: ", ramSize_Defined, ramSize, "CPU hardware threads:", numCPUs);
3137
- printCallback->Print(GetProcessThreadsInfo(threadsInfo));
3138
- printCallback->NewLine();
3139
- }
3140
-
3141
- if (numThreadsSpecified < 1 || numThreadsSpecified > kNumThreadsMax)
3142
- return E_INVALIDARG;
3143
-
3144
- UInt32 dict;
3145
- bool dictIsDefined = method.Get_DicSize(dict);
3146
-
3147
- if (method.MethodName.IsEmpty())
3148
- method.MethodName = "LZMA";
3149
-
3150
- if (benchCallback)
3151
- {
3152
- CBenchProps benchProps;
3153
- benchProps.SetLzmaCompexity();
3154
- UInt32 dictSize = method.Get_Lzma_DicSize();
3155
- UInt32 uncompressedDataSize = kAdditionalSize + dictSize;
3156
- return MethodBench(
3157
- EXTERNAL_CODECS_LOC_VARS
3158
- complexInCommands,
3159
- true, numThreadsSpecified,
3160
- method,
3161
- uncompressedDataSize, (const Byte *)fileDataBuffer,
3162
- kOldLzmaDictBits, printCallback, benchCallback, &benchProps);
3163
- }
3164
-
3165
- AString methodName (method.MethodName);
3166
- if (methodName.IsEqualTo_Ascii_NoCase("CRC"))
3167
- methodName = "crc32";
3168
- method.MethodName = methodName;
3169
- CMethodId hashID;
3170
-
3171
- if (FindHashMethod(EXTERNAL_CODECS_LOC_VARS methodName, hashID))
3172
- {
3173
- if (!printCallback)
3174
- return S_FALSE;
3175
- IBenchPrintCallback &f = *printCallback;
3176
- if (!dictIsDefined)
3177
- dict = (1 << 24);
3178
-
3179
-
3180
- // methhodName.RemoveChar(L'-');
3181
- UInt32 complexity = 10000;
3182
- const UInt32 *checkSum = NULL;
3183
- {
3184
- unsigned i;
3185
- for (i = 0; i < ARRAY_SIZE(g_Hash); i++)
3186
- {
3187
- const CBenchHash &h = g_Hash[i];
3188
- AString benchMethod (h.Name);
3189
- AString benchProps;
3190
- int propPos = benchMethod.Find(':');
3191
- if (propPos >= 0)
3192
- {
3193
- benchProps = benchMethod.Ptr(propPos + 1);
3194
- benchMethod.DeleteFrom(propPos);
3195
- }
3196
-
3197
- if (AreSameMethodNames(benchMethod, methodName))
3198
- {
3199
- if (benchProps.IsEmpty()
3200
- || benchMethod.IsEqualTo_Ascii_NoCase("crc32") && benchProps == "8" && method.PropsString.IsEmpty()
3201
- || method.PropsString.IsPrefixedBy_Ascii_NoCase(benchProps))
3202
- {
3203
- complexity = h.Complex;
3204
- checkSum = &h.CheckSum;
3205
- if (method.PropsString.IsEqualTo_Ascii_NoCase(benchProps))
3206
- break;
3207
- }
3208
- }
3209
- }
3210
- if (i == ARRAY_SIZE(g_Hash))
3211
- return E_NOTIMPL;
3212
- }
3213
-
3214
- f.NewLine();
3215
- f.Print("Size");
3216
- const unsigned kFieldSize_CrcSpeed = 6;
3217
- unsigned numThreadsTests = 0;
3218
- for (;;)
3219
- {
3220
- UInt32 t = GetNumThreadsNext(numThreadsTests, numThreadsSpecified);
3221
- PrintNumber(f, t, kFieldSize_CrcSpeed);
3222
- numThreadsTests++;
3223
- if (t >= numThreadsSpecified)
3224
- break;
3225
- }
3226
- f.NewLine();
3227
- f.NewLine();
3228
- CTempValues speedTotals(numThreadsTests);
3229
- {
3230
- for (unsigned ti = 0; ti < numThreadsTests; ti++)
3231
- speedTotals.Values[ti] = 0;
3232
- }
3233
-
3234
- UInt64 numSteps = 0;
3235
- for (UInt32 i = 0; i < numIterations; i++)
3236
- {
3237
- for (unsigned pow = 10; pow < 32; pow++)
3238
- {
3239
- UInt32 bufSize = (UInt32)1 << pow;
3240
- if (bufSize > dict)
3241
- break;
3242
- char s[16];
3243
- ConvertUInt32ToString(pow, s);
3244
- unsigned pos = MyStringLen(s);
3245
- s[pos++] = ':';
3246
- s[pos++] = ' ';
3247
- s[pos] = 0;
3248
- f.Print(s);
3249
-
3250
- for (unsigned ti = 0; ti < numThreadsTests; ti++)
3251
- {
3252
- RINOK(f.CheckBreak());
3253
- UInt32 t = GetNumThreadsNext(ti, numThreadsSpecified);
3254
- UInt64 speed = 0;
3255
- RINOK(CrcBench(EXTERNAL_CODECS_LOC_VARS complexInCommands,
3256
- t, bufSize, speed,
3257
- complexity,
3258
- 1, // benchWeight,
3259
- (pow == kNumHashDictBits) ? checkSum : NULL, method, NULL, NULL, false, 0));
3260
- PrintNumber(f, (speed >> 20), kFieldSize_CrcSpeed);
3261
- speedTotals.Values[ti] += speed;
3262
- }
3263
- f.NewLine();
3264
- numSteps++;
3265
- }
3266
- }
3267
- if (numSteps != 0)
3268
- {
3269
- f.NewLine();
3270
- f.Print("Avg:");
3271
- for (unsigned ti = 0; ti < numThreadsTests; ti++)
3272
- {
3273
- PrintNumber(f, ((speedTotals.Values[ti] / numSteps) >> 20), kFieldSize_CrcSpeed);
3274
- }
3275
- f.NewLine();
3276
- }
3277
- return S_OK;
3278
- }
3279
-
3280
- bool use2Columns = false;
3281
-
3282
- bool totalBenchMode = (method.MethodName.IsEqualTo_Ascii_NoCase("*"));
3283
- bool onlyHashBench = false;
3284
- if (method.MethodName.IsEqualTo_Ascii_NoCase("hash"))
3285
- {
3286
- onlyHashBench = true;
3287
- totalBenchMode = true;
3288
- }
3289
-
3290
- // ---------- Threads loop ----------
3291
- for (unsigned threadsPassIndex = 0; threadsPassIndex < 3; threadsPassIndex++)
3292
- {
3293
-
3294
- UInt32 numThreads = numThreadsSpecified;
3295
-
3296
- if (!multiThreadTests)
3297
- {
3298
- if (threadsPassIndex != 0)
3299
- break;
3300
- }
3301
- else
3302
- {
3303
- numThreads = 1;
3304
- if (threadsPassIndex != 0)
3305
- {
3306
- if (numCPUs < 2)
3307
- break;
3308
- numThreads = numCPUs;
3309
- if (threadsPassIndex == 1)
3310
- {
3311
- if (numCPUs >= 4)
3312
- numThreads = numCPUs / 2;
3313
- }
3314
- else if (numCPUs < 4)
3315
- break;
3316
- }
3317
- }
3318
-
3319
- CBenchCallbackToPrint callback;
3320
- callback.Init();
3321
- callback._file = printCallback;
3322
-
3323
- IBenchPrintCallback &f = *printCallback;
3324
-
3325
- if (threadsPassIndex > 0)
3326
- {
3327
- f.NewLine();
3328
- f.NewLine();
3329
- }
3330
-
3331
- if (!dictIsDefined)
3332
- {
3333
- const unsigned dicSizeLog_Main = (totalBenchMode ? 24 : 25);
3334
- unsigned dicSizeLog = dicSizeLog_Main;
3335
-
3336
- #ifdef UNDER_CE
3337
- dicSizeLog = (UInt64)1 << 20;
3338
- #endif
3339
-
3340
- if (ramSize_Defined)
3341
- for (; dicSizeLog > kBenchMinDicLogSize; dicSizeLog--)
3342
- if (GetBenchMemoryUsage(numThreads, ((UInt32)1 << dicSizeLog), totalBenchMode) + (8 << 20) <= ramSize)
3343
- break;
3344
-
3345
- dict = (UInt32)1 << dicSizeLog;
3346
-
3347
- if (totalBenchMode && dicSizeLog != dicSizeLog_Main)
3348
- {
3349
- f.Print("Dictionary reduced to: ");
3350
- PrintNumber(f, dicSizeLog, 1);
3351
- f.NewLine();
3352
- }
3353
- }
3354
-
3355
- PrintRequirements(f, "usage:", true, GetBenchMemoryUsage(numThreads, dict, totalBenchMode), "Benchmark threads: ", numThreads);
3356
- f.NewLine();
3357
-
3358
- f.NewLine();
3359
-
3360
- if (totalBenchMode)
3361
- {
3362
- callback.NameFieldSize = kFieldSize_Name;
3363
- use2Columns = false;
3364
- }
3365
- else
3366
- {
3367
- callback.NameFieldSize = kFieldSize_SmallName;
3368
- use2Columns = true;
3369
- }
3370
- callback.Use2Columns = use2Columns;
3371
-
3372
- bool showFreq = false;
3373
- UInt64 cpuFreq = 0;
3374
-
3375
- if (totalBenchMode)
3376
- {
3377
- showFreq = true;
3378
- }
3379
-
3380
- unsigned fileldSize = kFieldSize_TotalSize;
3381
- if (showFreq)
3382
- fileldSize += kFieldSize_EUAndEffec;
3383
-
3384
- if (use2Columns)
3385
- {
3386
- PrintSpaces(f, callback.NameFieldSize);
3387
- PrintRight(f, "Compressing", fileldSize);
3388
- f.Print(kSep);
3389
- PrintRight(f, "Decompressing", fileldSize);
3390
- }
3391
- f.NewLine();
3392
- PrintLeft(f, totalBenchMode ? "Method" : "Dict", callback.NameFieldSize);
3393
-
3394
- int j;
3395
-
3396
- for (j = 0; j < 2; j++)
3397
- {
3398
- PrintRight(f, "Speed", kFieldSize_Speed + 1);
3399
- PrintRight(f, "Usage", kFieldSize_Usage + 1);
3400
- PrintRight(f, "R/U", kFieldSize_RU + 1);
3401
- PrintRight(f, "Rating", kFieldSize_Rating + 1);
3402
- if (showFreq)
3403
- {
3404
- PrintRight(f, "E/U", kFieldSize_EU + 1);
3405
- PrintRight(f, "Effec", kFieldSize_Effec + 1);
3406
- }
3407
- if (!use2Columns)
3408
- break;
3409
- if (j == 0)
3410
- f.Print(kSep);
3411
- }
3412
-
3413
- f.NewLine();
3414
- PrintSpaces(f, callback.NameFieldSize);
3415
-
3416
- for (j = 0; j < 2; j++)
3417
- {
3418
- PrintRight(f, "KiB/s", kFieldSize_Speed + 1);
3419
- PrintRight(f, "%", kFieldSize_Usage + 1);
3420
- PrintRight(f, "MIPS", kFieldSize_RU + 1);
3421
- PrintRight(f, "MIPS", kFieldSize_Rating + 1);
3422
- if (showFreq)
3423
- {
3424
- PrintRight(f, "%", kFieldSize_EU + 1);
3425
- PrintRight(f, "%", kFieldSize_Effec + 1);
3426
- }
3427
- if (!use2Columns)
3428
- break;
3429
- if (j == 0)
3430
- f.Print(kSep);
3431
- }
3432
-
3433
- f.NewLine();
3434
- f.NewLine();
3435
-
3436
- if (specifiedFreq != 0)
3437
- cpuFreq = specifiedFreq;
3438
-
3439
-
3440
- if (totalBenchMode)
3441
- {
3442
- for (UInt32 i = 0; i < numIterations; i++)
3443
- {
3444
- if (i != 0)
3445
- printCallback->NewLine();
3446
- HRESULT res;
3447
-
3448
- const unsigned kNumCpuTests = 3;
3449
- for (unsigned freqTest = 0; freqTest < kNumCpuTests; freqTest++)
3450
- {
3451
- PrintLeft(f, "CPU", kFieldSize_Name);
3452
- UInt32 resVal;
3453
- RINOK(FreqBench(complexInCommands, numThreads, printCallback,
3454
- (freqTest == kNumCpuTests - 1 || specifiedFreq != 0), // showFreq
3455
- specifiedFreq,
3456
- cpuFreq, resVal));
3457
- callback.NewLine();
3458
-
3459
- if (specifiedFreq != 0)
3460
- cpuFreq = specifiedFreq;
3461
-
3462
- if (freqTest == kNumCpuTests - 1)
3463
- SetComplexCommands(testTime, specifiedFreq != 0, cpuFreq, complexInCommands);
3464
- }
3465
- callback.NewLine();
3466
-
3467
- callback.SetFreq(true, cpuFreq);
3468
-
3469
- if (!onlyHashBench)
3470
- {
3471
- res = TotalBench(EXTERNAL_CODECS_LOC_VARS
3472
- complexInCommands, numThreads,
3473
- dictIsDefined || fileDataBuffer.IsAllocated(), // forceUnpackSize
3474
- fileDataBuffer.IsAllocated() ? fileDataBuffer.Size() : dict,
3475
- (const Byte *)fileDataBuffer,
3476
- printCallback, &callback);
3477
- RINOK(res);
3478
- }
3479
-
3480
- res = TotalBench_Hash(EXTERNAL_CODECS_LOC_VARS complexInCommands, numThreads,
3481
- 1 << kNumHashDictBits, printCallback, &callback, &callback.EncodeRes, true, cpuFreq);
3482
- RINOK(res);
3483
-
3484
- callback.NewLine();
3485
- {
3486
- PrintLeft(f, "CPU", kFieldSize_Name);
3487
- UInt32 resVal;
3488
- UInt64 cpuFreqLastTemp = cpuFreq;
3489
- RINOK(FreqBench(complexInCommands, numThreads, printCallback,
3490
- specifiedFreq != 0, // showFreq
3491
- specifiedFreq,
3492
- cpuFreqLastTemp, resVal));
3493
- callback.NewLine();
3494
- }
3495
- }
3496
- }
3497
- else
3498
- {
3499
- bool needSetComplexity = true;
3500
- if (!methodName.IsEqualTo_Ascii_NoCase("LZMA"))
3501
- {
3502
- unsigned i;
3503
- for (i = 0; i < ARRAY_SIZE(g_Bench); i++)
3504
- {
3505
- const CBenchMethod &h = g_Bench[i];
3506
- AString benchMethod (h.Name);
3507
- AString benchProps;
3508
- int propPos = benchMethod.Find(':');
3509
- if (propPos >= 0)
3510
- {
3511
- benchProps = benchMethod.Ptr(propPos + 1);
3512
- benchMethod.DeleteFrom(propPos);
3513
- }
3514
-
3515
- if (AreSameMethodNames(benchMethod, methodName))
3516
- {
3517
- if (benchProps.IsEmpty()
3518
- || benchProps == "x5" && method.PropsString.IsEmpty()
3519
- || method.PropsString.IsPrefixedBy_Ascii_NoCase(benchProps))
3520
- {
3521
- callback.BenchProps.EncComplex = h.EncComplex;
3522
- callback.BenchProps.DecComplexCompr = h.DecComplexCompr;
3523
- callback.BenchProps.DecComplexUnc = h.DecComplexUnc;;
3524
- needSetComplexity = false;
3525
- break;
3526
- }
3527
- }
3528
- }
3529
- if (i == ARRAY_SIZE(g_Bench))
3530
- return E_NOTIMPL;
3531
- }
3532
- if (needSetComplexity)
3533
- callback.BenchProps.SetLzmaCompexity();
3534
-
3535
- for (unsigned i = 0; i < numIterations; i++)
3536
- {
3537
- const unsigned kStartDicLog = 22;
3538
- unsigned pow = (dict < ((UInt32)1 << kStartDicLog)) ? kBenchMinDicLogSize : kStartDicLog;
3539
- if (!multiDict)
3540
- pow = 31;
3541
- while (((UInt32)1 << pow) > dict && pow > 0)
3542
- pow--;
3543
- for (; ((UInt32)1 << pow) <= dict; pow++)
3544
- {
3545
- char s[16];
3546
- ConvertUInt32ToString(pow, s);
3547
- unsigned pos = MyStringLen(s);
3548
- s[pos++] = ':';
3549
- s[pos] = 0;
3550
- PrintLeft(f, s, kFieldSize_SmallName);
3551
- callback.DictSize = (UInt32)1 << pow;
3552
-
3553
- COneMethodInfo method2 = method;
3554
-
3555
- if (StringsAreEqualNoCase_Ascii(method2.MethodName, "LZMA"))
3556
- {
3557
- // We add dictionary size property.
3558
- // method2 can have two different dictionary size properties.
3559
- // And last property is main.
3560
- NCOM::CPropVariant propVariant = (UInt32)pow;
3561
- RINOK(method2.ParseMethodFromPROPVARIANT((UString)"d", propVariant));
3562
- }
3563
-
3564
- size_t uncompressedDataSize;
3565
- if (fileDataBuffer.IsAllocated())
3566
- {
3567
- uncompressedDataSize = fileDataBuffer.Size();
3568
- }
3569
- else
3570
- {
3571
- uncompressedDataSize = callback.DictSize;
3572
- if (uncompressedDataSize >= (1 << 18))
3573
- uncompressedDataSize += kAdditionalSize;
3574
- }
3575
-
3576
- HRESULT res = MethodBench(
3577
- EXTERNAL_CODECS_LOC_VARS
3578
- complexInCommands,
3579
- true, numThreads,
3580
- method2,
3581
- uncompressedDataSize, (const Byte *)fileDataBuffer,
3582
- kOldLzmaDictBits, printCallback, &callback, &callback.BenchProps);
3583
- f.NewLine();
3584
- RINOK(res);
3585
- if (!multiDict)
3586
- break;
3587
- }
3588
- }
3589
- }
3590
-
3591
- PrintChars(f, '-', callback.NameFieldSize + fileldSize);
3592
-
3593
- if (use2Columns)
3594
- {
3595
- f.Print(kSep);
3596
- PrintChars(f, '-', fileldSize);
3597
- }
3598
-
3599
- f.NewLine();
3600
-
3601
- if (use2Columns)
3602
- {
3603
- PrintLeft(f, "Avr:", callback.NameFieldSize);
3604
- PrintTotals(f, showFreq, cpuFreq, callback.EncodeRes);
3605
- f.Print(kSep);
3606
- PrintTotals(f, showFreq, cpuFreq, callback.DecodeRes);
3607
- f.NewLine();
3608
- }
3609
-
3610
- PrintLeft(f, "Tot:", callback.NameFieldSize);
3611
- CTotalBenchRes midRes;
3612
- midRes.SetSum(callback.EncodeRes, callback.DecodeRes);
3613
- PrintTotals(f, showFreq, cpuFreq, midRes);
3614
- f.NewLine();
3615
-
3616
- }
3617
- return S_OK;
3618
- }