react-native-update 10.34.7 → 10.34.8

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 (747) hide show
  1. package/.gitmodules +0 -6
  2. package/harmony/pushy/src/main/cpp/CMakeLists.txt +4 -2
  3. package/package.json +1 -1
  4. package/harmony/pushy/src/main/cpp/HDiffPatch/CHANGELOG.md +0 -153
  5. package/harmony/pushy/src/main/cpp/HDiffPatch/LICENSE +0 -48
  6. package/harmony/pushy/src/main/cpp/HDiffPatch/Makefile +0 -157
  7. package/harmony/pushy/src/main/cpp/HDiffPatch/README.md +0 -307
  8. package/harmony/pushy/src/main/cpp/HDiffPatch/_atosize.h +0 -83
  9. package/harmony/pushy/src/main/cpp/HDiffPatch/_clock_for_demo.h +0 -47
  10. package/harmony/pushy/src/main/cpp/HDiffPatch/_dir_ignore.h +0 -191
  11. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +0 -37
  12. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +0 -7
  13. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +0 -1
  14. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +0 -1
  15. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +0 -18
  16. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +0 -20
  17. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +0 -28
  18. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +0 -8
  19. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +0 -8
  20. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffZ.cbp +0 -219
  21. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HPatchZ.cbp +0 -156
  22. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/unitTest.cbp +0 -65
  23. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffPatch.sln +0 -105
  24. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj +0 -237
  25. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +0 -3
  26. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj +0 -318
  27. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +0 -3
  28. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj +0 -182
  29. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj.user +0 -3
  30. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +0 -30
  31. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  32. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +0 -408
  33. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +0 -573
  34. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +0 -396
  35. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +0 -268
  36. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +0 -361
  37. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +0 -301
  38. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +0 -411
  39. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +0 -504
  40. package/harmony/pushy/src/main/cpp/HDiffPatch/checksum_plugin_demo.h +0 -344
  41. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_parallel.cpp +0 -166
  42. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_parallel.h +0 -59
  43. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_plugin_demo.h +0 -1152
  44. package/harmony/pushy/src/main/cpp/HDiffPatch/decompress_plugin_demo.h +0 -995
  45. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +0 -797
  46. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +0 -65
  47. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +0 -200
  48. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +0 -178
  49. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +0 -357
  50. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +0 -87
  51. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +0 -151
  52. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +0 -770
  53. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +0 -236
  54. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +0 -47
  55. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +0 -112
  56. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +0 -53
  57. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_types.h +0 -61
  58. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +0 -331
  59. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +0 -144
  60. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +0 -176
  61. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +0 -84
  62. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +0 -146
  63. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +0 -61
  64. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +0 -152
  65. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +0 -76
  66. package/harmony/pushy/src/main/cpp/HDiffPatch/file_for_patch.c +0 -524
  67. package/harmony/pushy/src/main/cpp/HDiffPatch/file_for_patch.h +0 -259
  68. package/harmony/pushy/src/main/cpp/HDiffPatch/hdiffz.cpp +0 -1570
  69. package/harmony/pushy/src/main/cpp/HDiffPatch/hpatch_dir_listener.h +0 -290
  70. package/harmony/pushy/src/main/cpp/HDiffPatch/hpatchz.c +0 -1221
  71. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +0 -1025
  72. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.h +0 -116
  73. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +0 -72
  74. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +0 -213
  75. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +0 -63
  76. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +0 -170
  77. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +0 -86
  78. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +0 -89
  79. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c +0 -13
  80. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +0 -398
  81. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +0 -194
  82. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +0 -13
  83. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +0 -204
  84. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +0 -207
  85. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +0 -815
  86. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +0 -586
  87. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +0 -381
  88. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +0 -352
  89. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +0 -137
  90. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +0 -137
  91. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +0 -70
  92. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +0 -628
  93. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +0 -87
  94. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +0 -363
  95. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +0 -139
  96. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +0 -68
  97. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +0 -115
  98. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +0 -342
  99. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +0 -94
  100. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +0 -52
  101. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.c +0 -2292
  102. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.h +0 -215
  103. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_private.h +0 -165
  104. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_types.h +0 -251
  105. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_channel.cpp +0 -174
  106. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_channel.h +0 -73
  107. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import.cpp +0 -367
  108. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import.h +0 -92
  109. package/harmony/pushy/src/main/cpp/HDiffPatch/test/_private_searchBestParams.cpp +0 -301
  110. package/harmony/pushy/src/main/cpp/HDiffPatch/test/hpatchz_test.cpp +0 -292
  111. package/harmony/pushy/src/main/cpp/HDiffPatch/test/testHashClash.cpp +0 -436
  112. package/harmony/pushy/src/main/cpp/HDiffPatch/test/unit_test.cpp +0 -417
  113. package/harmony/pushy/src/main/cpp/lzma/Asm/arm/7zCrcOpt.asm +0 -100
  114. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/7zAsm.asm +0 -147
  115. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/7zCrcOpt.asm +0 -147
  116. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/AesOpt.asm +0 -237
  117. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/LzmaDecOpt.asm +0 -1258
  118. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/XzCrc64Opt.asm +0 -205
  119. package/harmony/pushy/src/main/cpp/lzma/C/7z.h +0 -202
  120. package/harmony/pushy/src/main/cpp/lzma/C/7zAlloc.c +0 -80
  121. package/harmony/pushy/src/main/cpp/lzma/C/7zAlloc.h +0 -19
  122. package/harmony/pushy/src/main/cpp/lzma/C/7zArcIn.c +0 -1771
  123. package/harmony/pushy/src/main/cpp/lzma/C/7zBuf.c +0 -36
  124. package/harmony/pushy/src/main/cpp/lzma/C/7zBuf.h +0 -35
  125. package/harmony/pushy/src/main/cpp/lzma/C/7zBuf2.c +0 -52
  126. package/harmony/pushy/src/main/cpp/lzma/C/7zCrc.c +0 -128
  127. package/harmony/pushy/src/main/cpp/lzma/C/7zCrc.h +0 -25
  128. package/harmony/pushy/src/main/cpp/lzma/C/7zCrcOpt.c +0 -115
  129. package/harmony/pushy/src/main/cpp/lzma/C/7zDec.c +0 -591
  130. package/harmony/pushy/src/main/cpp/lzma/C/7zFile.c +0 -286
  131. package/harmony/pushy/src/main/cpp/lzma/C/7zFile.h +0 -83
  132. package/harmony/pushy/src/main/cpp/lzma/C/7zStream.c +0 -176
  133. package/harmony/pushy/src/main/cpp/lzma/C/7zTypes.h +0 -375
  134. package/harmony/pushy/src/main/cpp/lzma/C/7zVersion.h +0 -27
  135. package/harmony/pushy/src/main/cpp/lzma/C/7zVersion.rc +0 -55
  136. package/harmony/pushy/src/main/cpp/lzma/C/Aes.c +0 -306
  137. package/harmony/pushy/src/main/cpp/lzma/C/Aes.h +0 -38
  138. package/harmony/pushy/src/main/cpp/lzma/C/AesOpt.c +0 -184
  139. package/harmony/pushy/src/main/cpp/lzma/C/Alloc.c +0 -455
  140. package/harmony/pushy/src/main/cpp/lzma/C/Alloc.h +0 -51
  141. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2.c +0 -257
  142. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2.h +0 -146
  143. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2Enc.c +0 -311
  144. package/harmony/pushy/src/main/cpp/lzma/C/Bra.c +0 -230
  145. package/harmony/pushy/src/main/cpp/lzma/C/Bra.h +0 -64
  146. package/harmony/pushy/src/main/cpp/lzma/C/Bra86.c +0 -82
  147. package/harmony/pushy/src/main/cpp/lzma/C/BraIA64.c +0 -53
  148. package/harmony/pushy/src/main/cpp/lzma/C/Compiler.h +0 -33
  149. package/harmony/pushy/src/main/cpp/lzma/C/CpuArch.c +0 -218
  150. package/harmony/pushy/src/main/cpp/lzma/C/CpuArch.h +0 -336
  151. package/harmony/pushy/src/main/cpp/lzma/C/Delta.c +0 -64
  152. package/harmony/pushy/src/main/cpp/lzma/C/Delta.h +0 -19
  153. package/harmony/pushy/src/main/cpp/lzma/C/DllSecur.c +0 -108
  154. package/harmony/pushy/src/main/cpp/lzma/C/DllSecur.h +0 -20
  155. package/harmony/pushy/src/main/cpp/lzma/C/LzFind.c +0 -1127
  156. package/harmony/pushy/src/main/cpp/lzma/C/LzFind.h +0 -121
  157. package/harmony/pushy/src/main/cpp/lzma/C/LzFindMt.c +0 -853
  158. package/harmony/pushy/src/main/cpp/lzma/C/LzFindMt.h +0 -101
  159. package/harmony/pushy/src/main/cpp/lzma/C/LzHash.h +0 -57
  160. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Dec.c +0 -488
  161. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Dec.h +0 -120
  162. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2DecMt.c +0 -1082
  163. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2DecMt.h +0 -79
  164. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Enc.c +0 -803
  165. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Enc.h +0 -55
  166. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86.h +0 -111
  167. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86Dec.c +0 -54
  168. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86Enc.c +0 -106
  169. package/harmony/pushy/src/main/cpp/lzma/C/LzmaDec.c +0 -1185
  170. package/harmony/pushy/src/main/cpp/lzma/C/LzmaDec.h +0 -234
  171. package/harmony/pushy/src/main/cpp/lzma/C/LzmaEnc.c +0 -2976
  172. package/harmony/pushy/src/main/cpp/lzma/C/LzmaEnc.h +0 -76
  173. package/harmony/pushy/src/main/cpp/lzma/C/LzmaLib.c +0 -40
  174. package/harmony/pushy/src/main/cpp/lzma/C/LzmaLib.h +0 -131
  175. package/harmony/pushy/src/main/cpp/lzma/C/MtCoder.c +0 -601
  176. package/harmony/pushy/src/main/cpp/lzma/C/MtCoder.h +0 -141
  177. package/harmony/pushy/src/main/cpp/lzma/C/MtDec.c +0 -1138
  178. package/harmony/pushy/src/main/cpp/lzma/C/MtDec.h +0 -201
  179. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd.h +0 -85
  180. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7.c +0 -712
  181. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7.h +0 -142
  182. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7Dec.c +0 -191
  183. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7Enc.c +0 -187
  184. package/harmony/pushy/src/main/cpp/lzma/C/Precomp.h +0 -10
  185. package/harmony/pushy/src/main/cpp/lzma/C/RotateDefs.h +0 -30
  186. package/harmony/pushy/src/main/cpp/lzma/C/Sha256.c +0 -248
  187. package/harmony/pushy/src/main/cpp/lzma/C/Sha256.h +0 -26
  188. package/harmony/pushy/src/main/cpp/lzma/C/Sort.c +0 -141
  189. package/harmony/pushy/src/main/cpp/lzma/C/Sort.h +0 -18
  190. package/harmony/pushy/src/main/cpp/lzma/C/Threads.c +0 -95
  191. package/harmony/pushy/src/main/cpp/lzma/C/Threads.h +0 -70
  192. package/harmony/pushy/src/main/cpp/lzma/C/ThreadsP.c +0 -396
  193. package/harmony/pushy/src/main/cpp/lzma/C/ThreadsP.h +0 -31
  194. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7z.dsp +0 -241
  195. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7z.dsw +0 -29
  196. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7zMain.c +0 -686
  197. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/Precomp.c +0 -4
  198. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/Precomp.h +0 -10
  199. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/makefile +0 -40
  200. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/makefile.gcc +0 -75
  201. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.c +0 -258
  202. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.dsp +0 -168
  203. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.dsw +0 -29
  204. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/makefile +0 -28
  205. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/makefile.gcc +0 -44
  206. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.def +0 -4
  207. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.dsp +0 -178
  208. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.dsw +0 -29
  209. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLibExports.c +0 -14
  210. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/makefile +0 -34
  211. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/resource.rc +0 -3
  212. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/Precomp.c +0 -4
  213. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/Precomp.h +0 -10
  214. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.c +0 -640
  215. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.dsp +0 -231
  216. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.dsw +0 -29
  217. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/makefile +0 -37
  218. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/makefile_con +0 -38
  219. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/resource.rc +0 -5
  220. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/setup.ico +0 -0
  221. package/harmony/pushy/src/main/cpp/lzma/C/Xz.c +0 -90
  222. package/harmony/pushy/src/main/cpp/lzma/C/Xz.h +0 -460
  223. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64.c +0 -86
  224. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64.h +0 -26
  225. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64Opt.c +0 -69
  226. package/harmony/pushy/src/main/cpp/lzma/C/XzDec.c +0 -2766
  227. package/harmony/pushy/src/main/cpp/lzma/C/XzEnc.c +0 -1329
  228. package/harmony/pushy/src/main/cpp/lzma/C/XzEnc.h +0 -60
  229. package/harmony/pushy/src/main/cpp/lzma/C/XzIn.c +0 -319
  230. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/7zip.mak +0 -240
  231. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Aes.mak +0 -7
  232. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +0 -3
  233. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +0 -76
  234. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +0 -569
  235. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.h +0 -70
  236. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +0 -678
  237. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.h +0 -92
  238. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +0 -423
  239. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +0 -139
  240. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +0 -61
  241. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +0 -763
  242. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.h +0 -181
  243. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +0 -942
  244. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +0 -19
  245. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.h +0 -148
  246. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.cpp +0 -1666
  247. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.h +0 -445
  248. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zItem.h +0 -202
  249. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.cpp +0 -901
  250. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.h +0 -335
  251. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +0 -174
  252. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.h +0 -22
  253. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +0 -21
  254. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +0 -22
  255. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +0 -35
  256. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +0 -2500
  257. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.h +0 -139
  258. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +0 -3
  259. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/StdAfx.h +0 -8
  260. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Archive.def +0 -12
  261. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Archive2.def +0 -19
  262. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/ArchiveExports.cpp +0 -151
  263. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +0 -1125
  264. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +0 -447
  265. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +0 -17
  266. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +0 -25
  267. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +0 -232
  268. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.h +0 -110
  269. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +0 -46
  270. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +0 -67
  271. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +0 -88
  272. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +0 -28
  273. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +0 -191
  274. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.h +0 -89
  275. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +0 -18
  276. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +0 -37
  277. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +0 -3
  278. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ParseProperties.h +0 -6
  279. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/StdAfx.h +0 -8
  280. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/DllExports2.cpp +0 -122
  281. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/IArchive.h +0 -608
  282. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
  283. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/LzmaHandler.cpp +0 -629
  284. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/SplitHandler.cpp +0 -359
  285. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/StdAfx.h +0 -8
  286. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.cpp +0 -1308
  287. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.h +0 -11
  288. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Asm.mak +0 -9
  289. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +0 -1910
  290. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +0 -29
  291. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +0 -3
  292. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +0 -8
  293. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/makefile +0 -154
  294. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +0 -7
  295. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +0 -3
  296. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +0 -8
  297. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +0 -96
  298. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +0 -5
  299. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +0 -3
  300. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +0 -8
  301. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/makefile +0 -116
  302. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +0 -5
  303. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +0 -799
  304. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +0 -477
  305. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +0 -29
  306. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +0 -3
  307. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +0 -8
  308. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile +0 -59
  309. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +0 -195
  310. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +0 -3
  311. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +0 -715
  312. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  313. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +0 -912
  314. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +0 -29
  315. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +0 -482
  316. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +0 -3
  317. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +0 -8
  318. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/makefile +0 -134
  319. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +0 -5
  320. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +0 -246
  321. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +0 -86
  322. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +0 -137
  323. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +0 -11
  324. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +0 -803
  325. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +0 -29
  326. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +0 -364
  327. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +0 -3
  328. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +0 -13
  329. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/makefile +0 -117
  330. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +0 -6
  331. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +0 -16
  332. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  333. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  334. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +0 -988
  335. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +0 -29
  336. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +0 -241
  337. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +0 -3
  338. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +0 -14
  339. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/makefile +0 -153
  340. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/resource.h +0 -1
  341. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +0 -50
  342. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.cpp +0 -250
  343. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.h +0 -120
  344. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.cpp +0 -536
  345. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.h +0 -192
  346. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +0 -46
  347. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.h +0 -10
  348. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.cpp +0 -475
  349. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.h +0 -166
  350. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.cpp +0 -435
  351. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.h +0 -205
  352. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.cpp +0 -163
  353. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.h +0 -92
  354. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +0 -127
  355. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.h +0 -48
  356. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.cpp +0 -367
  357. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.h +0 -252
  358. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LockedStream.cpp +0 -3
  359. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LockedStream.h +0 -6
  360. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodId.cpp +0 -3
  361. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodId.h +0 -10
  362. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.cpp +0 -509
  363. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.h +0 -264
  364. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.cpp +0 -39
  365. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.h +0 -26
  366. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.cpp +0 -111
  367. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.h +0 -66
  368. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.cpp +0 -51
  369. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.h +0 -35
  370. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/PropId.cpp +0 -108
  371. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/RegisterArc.h +0 -78
  372. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/RegisterCodec.h +0 -106
  373. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StdAfx.h +0 -8
  374. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.cpp +0 -156
  375. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.h +0 -60
  376. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.cpp +0 -285
  377. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.h +0 -157
  378. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.cpp +0 -56
  379. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.h +0 -13
  380. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.cpp +0 -57
  381. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.h +0 -26
  382. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.cpp +0 -48
  383. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.h +0 -24
  384. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +0 -666
  385. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.h +0 -120
  386. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Register.cpp +0 -24
  387. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.cpp +0 -24
  388. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.h +0 -31
  389. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjRegister.cpp +0 -17
  390. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.cpp +0 -23
  391. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.h +0 -35
  392. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchRegister.cpp +0 -41
  393. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/ByteSwap.cpp +0 -92
  394. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CodecExports.cpp +0 -344
  395. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.cpp +0 -120
  396. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.h +0 -49
  397. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyRegister.cpp +0 -15
  398. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/DeltaFilter.cpp +0 -128
  399. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +0 -265
  400. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.h +0 -96
  401. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +0 -122
  402. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.h +0 -42
  403. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Register.cpp +0 -22
  404. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +0 -343
  405. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.h +0 -113
  406. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +0 -182
  407. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.h +0 -46
  408. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaRegister.cpp +0 -22
  409. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +0 -170
  410. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.h +0 -86
  411. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +0 -152
  412. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.h +0 -58
  413. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdRegister.cpp +0 -22
  414. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/StdAfx.h +0 -8
  415. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.cpp +0 -150
  416. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.h +0 -92
  417. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.cpp +0 -245
  418. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.h +0 -46
  419. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crc.mak +0 -8
  420. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crc64.mak +0 -8
  421. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.cpp +0 -280
  422. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.h +0 -118
  423. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +0 -17
  424. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.cpp +0 -112
  425. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.h +0 -57
  426. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAesReg.cpp +0 -16
  427. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.cpp +0 -233
  428. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.h +0 -40
  429. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/StdAfx.h +0 -8
  430. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/GuiCommon.rc +0 -84
  431. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Guid.txt +0 -220
  432. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/ICoder.h +0 -399
  433. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IDecl.h +0 -28
  434. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IPassword.h +0 -23
  435. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IProgress.h +0 -19
  436. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IStream.h +0 -127
  437. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/LzmaDec.mak +0 -5
  438. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/MyVersion.h +0 -2
  439. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/MyVersionInfo.rc +0 -2
  440. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/PropID.h +0 -127
  441. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/SubBuild.mak +0 -3
  442. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +0 -993
  443. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +0 -235
  444. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +0 -29
  445. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +0 -3
  446. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/StdAfx.h +0 -8
  447. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/makefile +0 -28
  448. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/resource.rc +0 -3
  449. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +0 -1295
  450. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +0 -136
  451. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +0 -1715
  452. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +0 -403
  453. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +0 -155
  454. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.h +0 -10
  455. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +0 -161
  456. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +0 -112
  457. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.cpp +0 -3618
  458. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.h +0 -77
  459. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.cpp +0 -37
  460. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.h +0 -11
  461. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DirItem.h +0 -190
  462. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +0 -1096
  463. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.h +0 -42
  464. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExitCode.h +0 -27
  465. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.cpp +0 -482
  466. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.h +0 -94
  467. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractMode.h +0 -34
  468. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +0 -280
  469. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +0 -31
  470. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.cpp +0 -347
  471. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.h +0 -110
  472. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +0 -114
  473. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +0 -1074
  474. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.h +0 -424
  475. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +0 -3553
  476. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.h +0 -436
  477. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +0 -668
  478. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.h +0 -18
  479. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Property.h +0 -14
  480. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.cpp +0 -80
  481. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.h +0 -10
  482. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SortUtils.cpp +0 -25
  483. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SortUtils.h +0 -10
  484. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/StdAfx.h +0 -8
  485. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.cpp +0 -19
  486. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.h +0 -16
  487. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.cpp +0 -1704
  488. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.h +0 -200
  489. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +0 -64
  490. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateAction.h +0 -66
  491. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +0 -771
  492. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.h +0 -162
  493. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +0 -233
  494. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.h +0 -27
  495. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +0 -70
  496. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.h +0 -55
  497. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.cpp +0 -94
  498. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.h +0 -26
  499. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ZipRegistry.h +0 -130
  500. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.cpp +0 -41
  501. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.h +0 -14
  502. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.mak +0 -43
  503. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.manifest +0 -13
  504. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +0 -69
  505. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.h +0 -33
  506. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +0 -825
  507. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +0 -164
  508. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.cpp +0 -367
  509. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.h +0 -48
  510. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/List.cpp +0 -1359
  511. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/List.h +0 -27
  512. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Main.cpp +0 -1154
  513. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/MainAr.cpp +0 -175
  514. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +0 -115
  515. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +0 -66
  516. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +0 -183
  517. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.h +0 -62
  518. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/StdAfx.cpp +0 -3
  519. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/StdAfx.h +0 -8
  520. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +0 -702
  521. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +0 -124
  522. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +0 -110
  523. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.h +0 -27
  524. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/makefile +0 -64
  525. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/resource.rc +0 -7
  526. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +0 -37
  527. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.h +0 -16
  528. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +0 -1025
  529. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +0 -21
  530. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +0 -9
  531. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +0 -64
  532. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +0 -28
  533. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +0 -4
  534. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/DialogSize.h +0 -16
  535. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +0 -1037
  536. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +0 -328
  537. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +0 -28
  538. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +0 -14
  539. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/LangUtils.h +0 -40
  540. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +0 -76
  541. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +0 -122
  542. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +0 -69
  543. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +0 -91
  544. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +0 -17
  545. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +0 -58
  546. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +0 -28
  547. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +0 -14
  548. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +0 -5
  549. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +0 -196
  550. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +0 -170
  551. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +0 -12
  552. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +0 -1337
  553. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +0 -351
  554. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +0 -40
  555. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +0 -48
  556. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +0 -80
  557. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +0 -3
  558. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +0 -23
  559. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyName.h +0 -10
  560. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +0 -95
  561. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +0 -255
  562. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +0 -62
  563. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resource.h +0 -177
  564. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resourceGui.h +0 -15
  565. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/Extract.rc +0 -59
  566. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +0 -418
  567. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +0 -113
  568. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +0 -98
  569. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +0 -24
  570. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +0 -280
  571. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +0 -38
  572. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractRes.h +0 -51
  573. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/HashGUI.h +0 -27
  574. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/resource2.h +0 -2
  575. package/harmony/pushy/src/main/cpp/lzma/CPP/Build.mak +0 -156
  576. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/AutoPtr.h +0 -35
  577. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CRC.cpp +0 -7
  578. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/C_FileIO.cpp +0 -92
  579. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/C_FileIO.h +0 -53
  580. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ComTry.h +0 -21
  581. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CommandLineParser.cpp +0 -197
  582. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CommandLineParser.h +0 -63
  583. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Common.h +0 -43
  584. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CrcReg.cpp +0 -98
  585. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Defs.h +0 -15
  586. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/DynamicBuffer.h +0 -64
  587. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/IntToString.cpp +0 -193
  588. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/IntToString.h +0 -28
  589. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Lang.h +0 -23
  590. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ListFileUtils.cpp +0 -132
  591. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ListFileUtils.h +0 -18
  592. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyBuffer.h +0 -259
  593. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyBuffer2.h +0 -100
  594. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyCom.h +0 -277
  595. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyException.h +0 -14
  596. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyGuidDef.h +0 -54
  597. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyInitGuid.h +0 -45
  598. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyLinux.h +0 -42
  599. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyString.cpp +0 -1659
  600. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyString.h +0 -868
  601. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyTypes.h +0 -35
  602. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyUnknown.h +0 -17
  603. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyVector.cpp +0 -3
  604. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyVector.h +0 -634
  605. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyWindows.cpp +0 -145
  606. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyWindows.h +0 -231
  607. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/NewHandler.cpp +0 -163
  608. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/NewHandler.h +0 -88
  609. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Sha256Reg.cpp +0 -40
  610. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdAfx.h +0 -8
  611. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdInStream.cpp +0 -89
  612. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdInStream.h +0 -38
  613. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdOutStream.cpp +0 -163
  614. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdOutStream.h +0 -71
  615. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringConvert.cpp +0 -319
  616. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringConvert.h +0 -88
  617. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringToInt.cpp +0 -144
  618. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringToInt.h +0 -21
  619. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/TextConfig.cpp +0 -124
  620. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/TextConfig.h +0 -19
  621. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/UTFConvert.cpp +0 -288
  622. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/UTFConvert.h +0 -12
  623. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Wildcard.cpp +0 -676
  624. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Wildcard.h +0 -149
  625. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/XzCrc64Init.cpp +0 -7
  626. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/XzCrc64Reg.cpp +0 -42
  627. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/COM.h +0 -70
  628. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/CommonDialog.cpp +0 -185
  629. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/CommonDialog.h +0 -23
  630. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.cpp +0 -66
  631. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.h +0 -65
  632. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/CommandBar.h +0 -52
  633. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Dialog.cpp +0 -251
  634. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Dialog.h +0 -170
  635. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Edit.h +0 -19
  636. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ImageList.cpp +0 -10
  637. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ImageList.h +0 -87
  638. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ListView.cpp +0 -155
  639. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ListView.h +0 -146
  640. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ProgressBar.h +0 -35
  641. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.cpp +0 -143
  642. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.h +0 -50
  643. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ReBar.h +0 -34
  644. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Static.h +0 -28
  645. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/StatusBar.h +0 -42
  646. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/StdAfx.h +0 -8
  647. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ToolBar.h +0 -43
  648. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Trackbar.h +0 -27
  649. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Window2.cpp +0 -200
  650. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Window2.h +0 -51
  651. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/DLL.cpp +0 -109
  652. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/DLL.h +0 -58
  653. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Defs.h +0 -17
  654. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ErrorMsg.cpp +0 -66
  655. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ErrorMsg.h +0 -15
  656. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileDir.cpp +0 -714
  657. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileDir.h +0 -117
  658. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileFind.cpp +0 -749
  659. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileFind.h +0 -161
  660. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileIO.cpp +0 -432
  661. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileIO.h +0 -212
  662. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileLink.cpp +0 -440
  663. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileMapping.cpp +0 -12
  664. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileMapping.h +0 -66
  665. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileName.cpp +0 -839
  666. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileName.h +0 -115
  667. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileSystem.cpp +0 -131
  668. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileSystem.h +0 -27
  669. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Handle.h +0 -37
  670. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryLock.cpp +0 -112
  671. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryLock.h +0 -40
  672. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/NtCheck.h +0 -46
  673. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariant.cpp +0 -347
  674. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariant.h +0 -114
  675. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariantConv.cpp +0 -138
  676. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariantConv.h +0 -37
  677. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Registry.cpp +0 -390
  678. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Registry.h +0 -84
  679. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ResourceString.cpp +0 -103
  680. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ResourceString.h +0 -16
  681. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SecurityUtils.cpp +0 -181
  682. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SecurityUtils.h +0 -167
  683. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Shell.cpp +0 -358
  684. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Shell.h +0 -94
  685. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/StdAfx.h +0 -8
  686. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Synchronization.cpp +0 -10
  687. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Synchronization.h +0 -164
  688. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/System.cpp +0 -142
  689. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/System.h +0 -40
  690. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Thread.h +0 -38
  691. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/TimeUtils.cpp +0 -213
  692. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/TimeUtils.h +0 -32
  693. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Window.cpp +0 -179
  694. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Window.h +0 -284
  695. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/CRC.cs +0 -55
  696. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/CommandLineParser.cs +0 -274
  697. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/InBuffer.cs +0 -72
  698. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Common/OutBuffer.cs +0 -47
  699. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +0 -24
  700. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +0 -367
  701. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +0 -132
  702. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +0 -110
  703. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +0 -76
  704. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +0 -398
  705. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +0 -1480
  706. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +0 -364
  707. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +0 -90
  708. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +0 -20
  709. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +0 -340
  710. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +0 -29
  711. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +0 -70
  712. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +0 -42
  713. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +0 -234
  714. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +0 -117
  715. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +0 -157
  716. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/ICoder.cs +0 -157
  717. package/harmony/pushy/src/main/cpp/lzma/DOC/7zC.txt +0 -187
  718. package/harmony/pushy/src/main/cpp/lzma/DOC/7zFormat.txt +0 -469
  719. package/harmony/pushy/src/main/cpp/lzma/DOC/Methods.txt +0 -173
  720. package/harmony/pushy/src/main/cpp/lzma/DOC/installer.txt +0 -166
  721. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-history.txt +0 -446
  722. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-sdk.txt +0 -357
  723. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-specification.txt +0 -1176
  724. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma.txt +0 -328
  725. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/CRC.java +0 -52
  726. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/BinTree.java +0 -382
  727. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/InWindow.java +0 -131
  728. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +0 -85
  729. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Base.java +0 -88
  730. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +0 -329
  731. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +0 -1416
  732. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +0 -55
  733. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +0 -99
  734. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +0 -88
  735. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +0 -151
  736. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/ICodeProgress.java +0 -6
  737. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/LzmaAlone.java +0 -253
  738. package/harmony/pushy/src/main/cpp/lzma/Java/SevenZip/LzmaBench.java +0 -392
  739. package/harmony/pushy/src/main/cpp/lzma/bin/7zS2.sfx +0 -0
  740. package/harmony/pushy/src/main/cpp/lzma/bin/7zS2con.sfx +0 -0
  741. package/harmony/pushy/src/main/cpp/lzma/bin/7zSD.sfx +0 -0
  742. package/harmony/pushy/src/main/cpp/lzma/bin/7zdec.exe +0 -0
  743. package/harmony/pushy/src/main/cpp/lzma/bin/7zr.exe +0 -0
  744. package/harmony/pushy/src/main/cpp/lzma/bin/installer/config.txt +0 -5
  745. package/harmony/pushy/src/main/cpp/lzma/bin/installer/cr.bat +0 -5
  746. package/harmony/pushy/src/main/cpp/lzma/bin/lzma.exe +0 -0
  747. package/harmony/pushy/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
- }