源码移植注意事项
( m2 k7 ^/ o- a% u# ?6 g! s; E$ I工程中加入miniLZO源文件为
) w9 k" h3 A* z& q2 s& f
4 j; _6 \9 Q# N( {' c U& ]6 z3 l' ` D, B! v) i
3 V$ M$ q/ Y/ c+ _keil5中优化设置选项须设置禁止优化,否则压缩算法可能被优化导致无法正确运行。/ ?( k7 Y- y) E( s- V2 w
( I# {' \5 ^6 [: r3 x) t I& L
+ x- i5 v2 W" r$ _ p& g- N1 @& }9 l; x
测试程序" O% ^- m3 e w
- #include "sys.h"
; S& Y" f! w6 l+ ~+ ^. B+ L - #include "delay.h"* } S) n5 Y: W- ]- m
- #include "usart.h"
( ~7 m5 I5 D1 v2 ?5 ^8 Y9 G1 \ - #include "led.h"& }7 }1 s; Z8 ~" S- H1 j/ B
- #include "key.h"
/ a! v5 |* @7 n9 i - #include "minilzo.h"% w+ V) x- p$ Q4 \
- #include <stdlib.h>
6 b6 W: ~. D0 m# e0 ` - 1 @9 `5 K4 E9 c
- : i$ z0 h+ e! z+ \
- /************************************************/ G0 Y; C- Y0 a3 h$ ?0 O+ K
- ALIENTEK 阿波罗STM32F7开发板 实验3( \! M' j# }8 V- x& P6 n
- 串口实验-HAL库函数版
0 N9 i8 P! T }- ]! L7 d& E - 技术支持:<a href="http://www.openedv.com" target="_blank">www.openedv.com</a>: w4 G+ V) _! k* e& M, _3 W9 t: o
- 淘宝店铺:<a href="http://eboard.taobao.com" target="_blank">http://eboard.taobao.com</a>
- s6 x& }9 p1 G- d' A, | - 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
6 Z- Y7 l6 R! o" q7 _ - 广州市星翼电子科技有限公司 0 Z2 c( }( a0 T# ?0 C Q
- 作者:正点原子 @ALIENTEK7 }7 R6 I/ w4 \$ i0 ]4 F/ B8 B
- ************************************************/
( c' X3 M3 ~" R" K$ v - ( Y3 D7 t! Q2 ?) w: d
0 r4 e% Q. ]7 V) w/ c' _& {& z, d/ m- /* 定义例程名和例程发布日期 */
5 R+ I V5 v7 D - #define EXAMPLE_NAME "V7-MiniLZO无损压缩算法移植和使用"
7 N9 r9 m3 x0 k6 I# s2 E7 }$ z; j - #define EXAMPLE_DATE "2019-10-11"$ R, \ B- ^1 K9 b8 j( j
- #define DEMO_VER "1.0"8 K% _- [" P, T2 m9 {
- 9 C4 ]' m' d* i/ q
- static void PrintfLogo(void);
3 ?$ L2 r' K# M! {# `, j - static void PrintfHelp(void);; [% f1 S, E* R" \
- static uint8_t TestMiniLZO(uint32_t _Len);' Z! Q9 ~5 o" T
/ g* z6 ~/ K) z( [
/ [, e( ^1 q8 X! U0 ~" r" f7 Q- /* 定义测试用的输入输出缓冲和大小 */
* ^3 Z1 p& v* j1 E8 k4 d$ a - #define IN_LEN (20*1024ul)
7 Q& v( i; M: @3 z' e" \ - #define OUT_LEN (IN_LEN + IN_LEN / 16 + 64 + 3)
( k8 {6 l2 K) b - static unsigned char __LZO_MMODEL in [ IN_LEN ];
6 Z8 H6 V x6 a - static unsigned char __LZO_MMODEL out [ OUT_LEN ]; a9 h" H8 b C7 J2 U
- * e+ Y( \* s' m" b( o
- /* 压缩需要内存大小 */' a4 T! _0 x) ~, f
- #define HEAP_ALLOC(var,size) \
5 B; N" e ~7 x0 R - lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) ]& A) K& J) L4 N$ s5 u
- 8 Y l' H. b4 v1 k: ]) Q6 n* E3 E1 L
- static HEAP_ALLOC(wrkmem, LZO1X_1_MEM_COMPRESS);
! `7 l1 A& i6 `4 `' M9 u - + z( j1 z& M; z5 `1 Y6 V
- /* 定义个变量,避免警告 */
$ B5 i4 B" j% W/ @6 a0 V6 ?2 x - #if defined ( __CC_ARM )
! o/ R8 r0 ^6 j2 `6 F - __attribute__((section (".RAM_D1"))) uint8_t InTempData[IN_LEN];/ E3 C& b. `3 E: H
- __attribute__((section (".RAM_D1"))) uint16_t TempValues1;. p* J! r' T2 k. ~$ t, _8 x/ ]
- __attribute__((section (".RAM_D2"))) uint16_t TempValues2; p% [9 V2 }' o
- __attribute__((section (".RAM_D3"))) uint16_t TempValues3;. x$ q+ C' s! k! f& T
- #endif% z4 Q0 o9 {. d1 E2 \
- 3 W( O7 O8 j1 V: Q6 C4 E1 h
# Q0 d) @& ]2 `4 A8 |: ]- int main(void)
/ l* q9 l# x- i. c) J# v - {
- y6 |( G2 h! z7 G3 z - u8 len; . Z+ R3 s9 E" j5 a: @
- u16 times=0; ) K" t1 r1 p4 z k* O; h
- Cache_Enable(); //打开L1-Cache9 f& n7 W2 z2 S% K& V! `; V
- HAL_Init(); //初始化HAL库 N4 g$ h; F/ [4 T9 |# y+ ~
- Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz D. S& H# s! g7 ^% ^/ A
- delay_init(216); //延时初始化
+ f6 P# E, M' e3 m! p1 u - uart_init(115200); //串口初始化, M; Y8 I6 D! c& c5 E. f9 s
- LED_Init(); //初始化LED: ~6 S. g* d' n' U8 R/ V
-
9 q. e6 q8 G+ }5 i' ]$ F# j3 _ - 1 H! @4 P8 t' U6 c6 h3 C
- #if defined ( __CC_ARM )
! Q/ y4 @/ }- n3 n9 j$ h - TempValues1 = 0; /* 避免MDK警告 */ + c5 @- H3 w/ b' R+ z
- TempValues2 = 0;$ e0 S% m7 ]; w/ Y7 ?7 T# s
- TempValues3 = 0; , h7 c" D3 n) `; h8 } r- r
- #endif
, U! |8 I2 m& y! E; l* A -
! B9 k% b( e0 f5 H% X6 m5 I - PrintfLogo(); /* 打印例程名称和版本等信息 */
' w' H/ M: y. ? - PrintfHelp(); /* 打印操作提示 */
0 U) n' r) A/ j3 k1 n/ K! P -
0 Q. a! n& X* U. L -
g. t- J: Z6 E- J: a, }) I, d" I - /* 初始化 LZO */+ `, q% x( `9 r( Z4 A0 N
- if (lzo_init() != LZO_E_OK)
, B. ~- ^/ b: |; H, Q' r L - {
- b. M* ^0 Y/ d5 ~ - printf("LZO初始化失败 \r\n");$ v( f1 K5 M+ N ~) G9 S* Y
- printf("一般是编译造成的操作,可以重新编译,并设置不做任何优化,同时使能-DLZO_DEBUG进行调试\r\n");% |9 N i& i8 z1 R6 R
- }
1 p1 Q% O' b& Z9 O8 [
# ?" `7 l; a( @2 |( [- /* 测试数据的压缩和解压 */4 c9 a4 E- }, ]3 h2 K4 x
- TestMiniLZO(1024*1);
' {" D$ t3 T% V( a - TestMiniLZO(1024*2);
: _3 q0 P3 `. f; l; o& ] O6 s# y - TestMiniLZO(1024*3);9 c4 y& }- L! j" y( x6 |# z& a
- TestMiniLZO(1024*4);
. D4 N) s K: p2 F- g - TestMiniLZO(1024*5);" @0 `) Q% }" l- u! g* E. c
- TestMiniLZO(1024*6); 4 R1 v1 w: T" @2 ?1 i
- TestMiniLZO(1024*7);
' U; u: ] r- K+ Y0 r3 w/ {+ Q! E - TestMiniLZO(1024*8);
$ W2 o: {' `1 @- D: E% s - TestMiniLZO(1024*9);$ Q* d5 u# h U1 o N
- TestMiniLZO(1024*10); 7 j9 L1 e7 k3 D
- TestMiniLZO(1024*11);
0 s/ d7 X' V# u$ W. r - TestMiniLZO(1024*12); ; x4 e6 T4 w# Q( E f
- TestMiniLZO(1024*13);
$ [: g: k: d) `! y' D& J5 G- m - TestMiniLZO(1024*14);
/ N1 {8 l" i6 d3 Z* ] - TestMiniLZO(1024*15);
1 ?( ]# L* i+ n/ s y- k4 h - TestMiniLZO(1024*16); " Y" s3 K6 h4 S% j9 H8 x
- TestMiniLZO(1024*17);, V/ ~8 X) j; d1 n9 d; U1 r
- TestMiniLZO(1024*18);
% Y, U( Z; s: J& p+ D - TestMiniLZO(1024*19);) f. `' W, k. ` e' ^, t
- TestMiniLZO(1024*20);
6 t+ I2 v4 t. x& a" ^ - 4 x7 Z* `( j3 [3 b) X* P. ?" c1 J
- while(1)1 U; J4 [: F& s
- {
: A) R! E; J) Y; q - if(USART_RX_STA&0x8000)' @/ p. x& v; t, a$ q* f
- {
$ o: ^4 k; D! k; h - len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度4 F4 [) w( `( l: ]5 W9 Y5 ~* r
- printf("\r\n您发送的消息为:\r\n");
' u: b7 B2 Y7 H - HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000); //发送接收到的数据
5 t2 Y* {2 @; Z9 b. n - while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET); //等待发送结束. R% z2 V& t. o- n" _5 P( }" z1 g
- printf("\r\n\r\n");//插入换行, R: `3 M# t5 S# ~+ o/ z
- USART_RX_STA=0;
: g- X" z2 W0 G; U& s9 Y - }else
+ s. X5 F) _) H' m9 B/ n- \ - {9 Y0 N0 |; B5 u% ?$ r
- times++;7 ^' M% [8 C2 a- L2 \) A8 K
- if(times%30==0)LED0_Toggle;//闪烁LED,提示系统正在运行.
7 L" F0 d3 l/ ^7 R4 w Y% x - delay_ms(10);
% E$ U% r+ p! U - }
: y3 {# N- w1 S, _0 o/ q- z - }- W. C3 k; [+ w0 E
- }
$ p$ y! a% p2 Z% ]# B - ( O# o6 g6 @8 [. O- k g% ^8 }
7 g4 h% u7 y$ ]( E- N' A
' n J2 k8 J3 ?: e- /*" N3 ?1 B/ D! q7 C% g
- *********************************************************************************************************; y( ?& ^: B% W, J
- * 函 数 名: TestMiniLZO
5 X; ^6 c' W# M - * 功能说明: _Len 要压缩的数据量。
( O, H* ?; a9 j* n - * 形 参: 无
0 V1 j8 u5 P% }5 r; N& Q - * 返 回 值: 无
Y- R: {# m3 S+ a - *********************************************************************************************************
+ @# ^, u; ]6 P' V O3 ~ - */; b3 M: K" x) X2 f/ M% H" Y
- static uint8_t TestMiniLZO(uint32_t _Len)
z N9 I& {4 W( I; g+ R - {
' G$ g$ m3 A* ? P$ P$ n - uint32_t i;
4 L( I" M) f7 U1 W3 u$ _ - int r;
6 C+ B4 c2 M: ~$ i. O$ q - lzo_uint in_len;
$ m: c5 ]4 u/ D2 h" A - lzo_uint out_len;' l) Q' U2 h+ [5 ~% W5 R
- lzo_uint new_len;
" N+ K( Z3 ]! P; W" J - uint32_t start, end, cnt;
% y- H( u* m* g0 M; F M
) } `2 y- u' P/ V0 v+ T" i- {- if(_Len > IN_LEN)) R0 s8 d! d; z, k
- {
, F, r' F$ K& s" o - printf("函数参数_Len超出允许的最大值%d\r\n", IN_LEN);
4 H2 S, ^$ L- _8 `/ v - }: R0 K: A# F) e, o( V2 Q0 ~
- 7 k k3 e" v# `4 r$ q6 I
- /* 准备要压缩的数据 */! ]3 J& ], t7 Y
- in_len = _Len;
* ~4 C+ G+ B" {, D2 R6 _) A1 E -
r$ w% y9 V( V -
% l6 j3 N; i6 G; S+ d - lzo_memset(in,0,in_len);
/ E" u/ x: m% N! P# v! Z8 h9 k - 2 X! s1 \. @1 Y- L) p1 h
- for(i=0; i< in_len; i++)- q, [! w k$ s
- {: U" f8 ?7 ], d% C
- in<i> = rand()%256;
. k1 f( ?- s! F- _, Q - </i> InTempData<span style="font-style: italic;"><span style="font-style: normal;"> = in</span><span style="font-style: normal;">;
0 ~, O' C# u; S - }; w# f9 W8 Q+ ?% T# x
3 _! O! a" U7 s% L' F# P- printf("-----------------------------------\r\n");* z2 H) E0 E" ~! q Q" }7 k
- printf("-----------------------------------\r\n");; w; v' `! W/ y* L& v
-
X( n7 `1 U) ^ - /* 将in数组中的数据压缩到out数组 */- J: U& ?! P% _* P3 t7 P3 L
- start = SysTick->VAL;
6 A u8 G7 i. u* g - r = lzo1x_1_compress(in,in_len,out,&out_len,wrkmem);
& Z5 ?2 ^: C; b - end = SysTick->VAL;
3 B+ O6 x. F C; ? - cnt = abs(end - start)/216;+ O6 h1 i0 v4 \& w1 O
-
) G1 P% R, e- m" b. X1 N) ` i - if (r == LZO_E_OK)# U& i) \' ` D
- printf("压缩 %lu 字节为 %lu 字节,耗时%dus\r\n",7 ]- T0 z( L8 E k8 b+ Y( d: ?; Q3 k
- (unsigned long) in_len, (unsigned long) out_len, cnt);! i* Z8 e/ D- Y3 E# r: A
- else- U; ?9 W: e7 s
- {6 {% J) j# p( u3 ^& [+ T4 v
- printf("内部错误 - 压缩失败: %d\r\n", r);6 i# {6 k6 E+ [ ]3 o. l, Q
- return 2;, u& y0 D& q$ d" n" t
- }5 E+ `3 Z5 R! l* m/ {# g7 M1 C
-
( R: j7 E# E/ j8 Y; o7 f L - /* 检查是否有位解压的数据 */; e3 P) W; h# S. M9 [9 Q+ j
- if (out_len >= in_len)
3 E, \/ p8 |/ u$ l* e$ ?/ S - {
6 W$ [: M& V, ~* A5 E) B - printf(" 有未解压的数据 \r\n");
! c! G; ^4 N8 Y7 U - return 0;- ]+ G, O' C! ?% T8 P- W( I1 K
- }
" l) e) D' M# P8 A2 p3 S
5 u2 h" O- M( [2 }- W) M1 [- /* 将压缩后的数组out,解压到in数组 */
' r' {1 z6 V. _) y( @8 b- ]$ x - start = SysTick->VAL;5 k% G- {5 w# V9 v2 A
- r = lzo1x_decompress(out,out_len,in,&new_len,NULL);7 C6 K& q+ ]# j
- end = SysTick->VAL;1 m0 T. _6 H" X6 N6 Y3 n& P, ?
- cnt = abs(end - start)/216;& n$ m5 e- g$ d# X- C8 \
- if (r == LZO_E_OK && new_len == in_len)8 r& N5 m- A# k/ P! r k
- printf("解压 %lu 字节为 %lu 字节,耗时%dus\r\n",
7 t! v. w& r+ l- n6 N7 X - (unsigned long) out_len, (unsigned long) in_len, cnt);0 ~2 O2 F; y# R
- else
0 h9 c" i: t& I; k. k. j5 ` - {
1 ^3 _+ `2 T |( K, L& Z4 J: ?6 Q - printf("内部错误 - 压缩失败: %d\r\n", r);( ?! C2 s7 T' [ J* z; b
- return 1;- s0 [( B* ]( u
- }- b0 P7 g; F' f, u1 A
-
' F0 t0 E+ [+ S1 Y. B9 X - /* 校验压缩是否成功 */# G& o/ n1 O. t f% Z$ C% E
- for(i = 0; i < in_len; i++)
% I- ~9 h: l4 k- _ - {
; Y8 L4 U! H Z+ @$ A - if(InTempData</span><span style="font-style: normal;"> != in</span><span style="font-style: normal;">)8 e) H0 E4 m8 r# }& }' x) Q# K
- {
' X( h* Y" J% k% o% J - printf("测试压缩失败\r\n");4 m/ a: ~; d1 |! |
- }8 k/ O0 l. Y: p( y$ k9 C
- }7 h4 C3 n/ w5 t5 V9 a1 L. c- w
- 1 ]1 P: k5 M: E6 Z7 c% L% A! J' G
- return 0;
) ^- u, L& m, O+ r& g7 h - }7 \) x2 g* k! k; O) h
- . L- _. d7 y. y* [3 B: [
- ) Y' g5 p" w7 k* x5 [( R! h
- /*7 T& l5 Z& p0 ?' [$ |+ X
- *********************************************************************************************************
0 p9 q2 O4 X! a' A6 Q# ~ - * 函 数 名: PrintfHelp: g: d% v$ L L, _% p% m
- * 功能说明: 打印操作提示
% `: \- v0 E* F9 S: f3 s - * 形 参:无
- o* l: {6 r: f' S1 E2 V - * 返 回 值: 无
! N" T6 h5 x- I2 Z! j - *********************************************************************************************************
6 M/ M# F5 M* d! M - */' d5 R' }$ O, `- |6 P
- static void PrintfHelp(void)
: r E4 V7 }& O( O1 E - {
4 C% W2 H- e: W+ N - printf("操作提示:\r\n");1 W2 A& ~! ?% q3 ?
- printf("1. 数据压缩和解压测试,请下载程序并重新给板子上电,上电后自动打印\r\n"); Z) B* e( P V$ F- H* W( l8 t
- }+ }- F8 f/ D- y0 j2 X, y& z1 b
- " Q o' M4 V3 p$ M/ \
- /*
. s' D1 k/ Z9 }& A% c# u - *********************************************************************************************************
& ?' p; p% J( t8 b p* i - * 函 数 名: PrintfLogo
$ d* d4 ~( G! b% h/ a& Z8 O/ g - * 功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的超级终端软件可以观察结果
( p, L) r' z( P* ^* F9 X* g - * 形 参:无
* N$ T. @3 z6 G) V5 b* Q( _! {+ a - * 返 回 值: 无1 f6 _8 Q8 X( y" o
- *********************************************************************************************************, l8 l" j4 _0 @" C
- */
9 F- m5 U4 a5 b' N2 }9 ? - static void PrintfLogo(void)( r4 w. u9 c& U: ^) {8 L5 E
- {# b1 P- j- U! \7 U- U# I
- printf("*************************************************************\n\r");0 O( B7 G. q9 r( P& D
-
$ d5 ~0 ^' J/ V2 H - /* 检测CPU ID */' g Q" b0 _9 E' V+ |' `3 ], @
- // {
& y* i! T& ~* R6 n X - // uint32_t CPU_Sn0, CPU_Sn1, CPU_Sn2;9 t5 }, N6 `& _0 n- N
- // 9 z! [5 W9 R# n9 x& M: S/ l
- // CPU_Sn0 = *(__IO uint32_t*)(0x1FF1E800);
/ H- Q h k- L2 q0 L. m - // CPU_Sn1 = *(__IO uint32_t*)(0x1FF1E800 + 4);* R* D/ J, k1 l+ @) ]
- // CPU_Sn2 = *(__IO uint32_t*)(0x1FF1E800 + 8);
) ]# R8 w1 t a4 Z
8 }( i' T4 g H; L5 u% L- // printf("\r\nCPU : STM32H743XIH6, BGA240, 主频: %dMHz\r\n", SystemCoreClock / 1000000); G. D: b [' C
- // printf("UID = %08X %08X %08X\n\r", CPU_Sn2, CPU_Sn1, CPU_Sn0);1 Y7 c2 A& {; ]/ N1 f: z
- // } f, ], W% |8 Q# e6 z
7 h, v" N1 F* t% \" e6 ~9 M- printf("\n\r"); \( k9 D0 x+ D t3 k
- printf("*************************************************************\n\r");( E$ R" [1 D( r2 n) G9 C4 Y, x. @
- printf("* 例程名称 : %s\r\n", EXAMPLE_NAME); /* 打印例程名称 */
9 h& G; F7 G2 h- B1 }* l - printf("* 例程版本 : %s\r\n", DEMO_VER); /* 打印例程版本 */' y7 \0 s& b4 ]* m5 K
- printf("* 发布日期 : %s\r\n", EXAMPLE_DATE); /* 打印例程日期 */- |9 P( t# {+ Z# m: `) C+ W
: C6 p2 k* f/ T5 \- /* 打印ST的HAL库版本 *// C5 A& I3 Y) V0 [- \
- printf("* HAL库版本 : V1.3.0 (STM32F7xx HAL Driver)\r\n");0 R" n6 Y6 S) ^; m3 ^
- printf("*************************************************************\n\r");
2 j" ?# W' Z* ?5 A3 j - }</span></span>
复制代码 5 Y [7 i9 C* N/ u5 H! z' U
测试结果
, V- v% l1 S% Q- *************************************************************1 ~1 L! m# o. J0 D: s4 O1 B
- * 例程名称 : V7-MiniLZO无损压缩算法移植和使用
' a i. r! _+ `! v) s" U& J \ - * 例程版本 : 1.08 L: _6 M r! @) u! D
- * 发布日期 : 2019-10-11
4 ]+ k J! _: V3 M/ B2 F - * HAL库版本 : V1.3.0 (STM32F7xx HAL Driver)
* J5 {3 J4 e/ v' j8 k V. k - *************************************************************9 ~5 u1 Y3 g) S5 a# d
- 操作提示:6 d# V6 H8 p' U9 L7 z. y) L
- 1. 数据压缩和解压测试,请下载程序并重新给板子上电,上电后自动打印
- F0 N! L- v# I% ?: Y - -----------------------------------6 p0 n% A: Z( N) f
- -----------------------------------! W6 P! ]- a G& A
- 压缩 1024 字节为 561 字节,耗时328us7 C3 |0 s' `' ]
- 解压 561 字节为 1024 字节,耗时9us
D% G ]' K7 c7 k - -----------------------------------8 Q) x; X P9 Z O' V
- -----------------------------------3 p) D+ e' [! ^4 c
- 压缩 2048 字节为 565 字节,耗时334us
! {- O' U4 j( f0 C - 解压 565 字节为 2048 字节,耗时17us
+ v. p' _. L" g' i0 O$ ? - -----------------------------------& v3 B$ W9 H$ p, a; [
- -----------------------------------
6 ?) E8 Z; Z; x" z0 n8 T - 压缩 3072 字节为 569 字节,耗时345us8 V# P9 W% e8 c; ?. a: w5 m( p
- 解压 569 字节为 3072 字节,耗时27us
0 d: H( H0 N, j; S8 W1 e# J - -----------------------------------3 ~8 _3 M9 j8 }# v1 ~4 g* l. \4 u
- -----------------------------------6 L3 z3 M- Q2 Y# L0 G$ G. a6 x
- 压缩 4096 字节为 573 字节,耗时357us, Z" M8 v+ K* ]4 F+ h- J, F
- 解压 573 字节为 4096 字节,耗时36us1 ~, v, X, U: _) ]
- -----------------------------------
( w: L6 Q L6 F - -----------------------------------) |. x- z4 A' ~( [. m
- 压缩 5120 字节为 577 字节,耗时367us& J' a: [5 r6 t |# l8 Y4 T3 u
- 解压 577 字节为 5120 字节,耗时46us+ m$ A, Y5 N# S. ]6 ~
- -----------------------------------# v9 W, t5 R2 A" {& m
- -----------------------------------
+ c9 f/ S2 Z+ v# u( H# F" z* Y - 压缩 6144 字节为 581 字节,耗时379us8 Q6 @" W# n: q7 ]4 G `% I& ^
- 解压 581 字节为 6144 字节,耗时56us
1 z+ u* b+ R9 X# Z- Y% k - -----------------------------------6 c! X* y' `- O) d- e) P
- -----------------------------------
' ^7 Y# c7 x5 p' H9 u& ^! S - 压缩 7168 字节为 585 字节,耗时391us5 g, ]9 x9 E2 d
- 解压 585 字节为 7168 字节,耗时66us9 h' j0 S/ e( [* }$ _
- -----------------------------------
9 |; q% M# W! _: A3 Z - -----------------------------------. h9 L! O( u! d6 ^& U/ I: ~
- 压缩 8192 字节为 589 字节,耗时596us
, y" A/ w, U* E9 p - 解压 589 字节为 8192 字节,耗时76us# C+ V. W$ E/ q' J4 I7 C
- -----------------------------------( y8 M% \( ~4 r2 U8 a
- -----------------------------------
: u4 a1 ~2 b! g# q# O, j/ ` - 压缩 9216 字节为 593 字节,耗时585us
- o2 E6 V1 T4 ?+ i9 x! C, A Q - 解压 593 字节为 9216 字节,耗时86us
- l% t6 S; P/ p& @7 p2 {% ~* A4 a8 c - -----------------------------------: a! K% _% y4 q3 V# x9 o
- -----------------------------------8 f. v; y# G6 e, y! R
- 压缩 10240 字节为 597 字节,耗时572us5 K7 ^7 C1 n2 g: N
- 解压 597 字节为 10240 字节,耗时96us3 ^! a2 ]5 h1 E% Q8 ^9 j
- -----------------------------------
% a) i8 Z. R: I" m- n& A6 x - -----------------------------------
# \1 a# L0 O) E, g2 J( E! \" Z - 压缩 11264 字节为 601 字节,耗时440us3 A [' \& `5 b) s9 c
- 解压 601 字节为 11264 字节,耗时892us2 O( K$ Z3 N5 [* {6 w
- -----------------------------------+ u* A h0 v2 {5 [' o: l) a% O
- -----------------------------------: Y( t8 F, q% n+ K
- 压缩 12288 字节为 605 字节,耗时548us
6 G( K* I! ~) m6 o - 解压 605 字节为 12288 字节,耗时116us- Y# Q& C2 c5 J: n" V- ~* e/ \
- ----------------------------------- s+ ? y7 y# i. \: J5 P1 Q
- -----------------------------------
9 { _- g- D$ w - 压缩 13312 字节为 609 字节,耗时534us% J2 D$ K; B7 |1 \* Q
- 解压 609 字节为 13312 字节,耗时128us* q0 N2 x) j# \5 f
- -----------------------------------; k$ @. b* r8 N
- -----------------------------------9 ]* @! D- Y" D0 P$ A, K* A4 a) k7 y8 N
- 压缩 14336 字节为 613 字节,耗时476us
; U% d2 S1 B( X0 ?& W+ [# ?3 H - 解压 613 字节为 14336 字节,耗时859us3 x/ E: _2 H; @8 N1 B+ s6 I. ^
- -----------------------------------* C% _ T/ q0 x, a; s' V
- -----------------------------------
& H9 ^- U2 S) H- ~! r - 压缩 15360 字节为 617 字节,耗时510us
* ~5 F5 ]" O3 I# A; M- T3 `: { - 解压 617 字节为 15360 字节,耗时149us. N9 K# v. I8 e$ n) S
- -----------------------------------
# V8 w$ @3 B% O8 D9 p - -----------------------------------
/ G* C* m/ C# Q; ?4 e: l - 压缩 16384 字节为 621 字节,耗时501us
6 L3 v4 `+ y2 I) _3 { - 解压 621 字节为 16384 字节,耗时162us$ F1 G6 o9 w8 h; J4 d
- -----------------------------------
6 C- N/ u! [5 ]0 R) m - -----------------------------------
6 {. H0 B _7 S) a2 r% C, N' ^9 |0 y - 压缩 17408 字节为 625 字节,耗时513us0 t- \1 t7 M! ?3 u0 a/ | p, m
- 解压 625 字节为 17408 字节,耗时173us
A* q6 U& \: e) x- Q7 j( ] - -----------------------------------
: X4 s" m' Y* k- m7 n4 }- O - ------------------------------------ i, g9 v0 Q; H4 ~, s; {; T
- 压缩 18432 字节为 630 字节,耗时525us
5 S* P# c+ I3 X" M L4 E" f: x - 解压 630 字节为 18432 字节,耗时183us
) Q2 p1 K1 l7 J- x6 H- |9 | - ------------------------------------ o( O+ Y8 c. k% \0 ~6 k% s
- -----------------------------------) a, A# z3 ?9 A# k& \9 |
- 压缩 19456 字节为 634 字节,耗时461us8 }4 u3 t0 o. i, ~6 W9 _5 `
- 解压 634 字节为 19456 字节,耗时194us# B# u* e; D; p, P; }) q6 s P0 k
- -----------------------------------8 H0 ]; A8 c# C: ^ \
- -----------------------------------
2 [# e$ X1 u" p3 V E - 压缩 20480 字节为 638 字节,耗时550us
& E3 ?& U9 M- o& e, ` - 解压 638 字节为 20480 字节,耗时204us" j X, ^/ y( y, L3 F
- 3 u' ?4 J4 R2 Y+ o i
复制代码
: @9 p* A9 p' x/ K) |& q. G \4 U& _0 n# v# y9 I6 E) [
|