源码移植注意事项
# H# r4 q7 {8 [9 s* s# L/ P/ h* T工程中加入miniLZO源文件为) Q s f/ a" R( b
9 m1 ~& c8 g2 z+ c
9 o7 o+ n# U3 q: e$ Q% j* u4 F* T; S+ u2 l$ A- @2 z' ~/ l2 c
keil5中优化设置选项须设置禁止优化,否则压缩算法可能被优化导致无法正确运行。$ k/ ~3 T, s6 y
. t3 D$ @8 m$ i: Q6 N8 P
% }5 _' O/ U+ \5 K
2 u f2 J8 H% X" B5 ^测试程序 b0 L1 i1 j, I* `
- #include "sys.h"
9 I) I1 }' j8 u" R1 a& W7 ] - #include "delay.h"
! _- k# n/ g E - #include "usart.h"; q5 Z4 r; I, H7 A8 [* ?, e2 b1 I( M
- #include "led.h"* G6 e4 m i n$ H) S% |
- #include "key.h"' x; o& K7 F! R4 z
- #include "minilzo.h"0 E0 B# ?$ ]9 G$ ]! I0 B
- #include <stdlib.h>
8 O2 X* K3 f4 \- H
) e Q% b8 Q% ^; k! R- T
/ E& w7 k+ X( s1 ~7 _- /************************************************+ d( [, W* B3 b; Q& I9 ~
- ALIENTEK 阿波罗STM32F7开发板 实验3
3 ~; Y5 Q+ b+ G, E - 串口实验-HAL库函数版! A4 ~" c; Z6 {
- 技术支持:<a href="http://www.openedv.com" target="_blank">www.openedv.com</a>
9 R( k9 e# v, w - 淘宝店铺:<a href="http://eboard.taobao.com" target="_blank">http://eboard.taobao.com</a> + Q) r4 Y" v% i0 E( a# v7 F6 E& p
- 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
- y, A- |7 S4 f/ c - 广州市星翼电子科技有限公司 $ N' R# W/ s" T# k( _$ T8 f
- 作者:正点原子 @ALIENTEK
, }# g( c9 V" M& p) G - ************************************************/
/ F7 J" ?+ i/ o+ f% Z
" v& V' i) b& {0 ^$ |* N$ ^: f3 g- . E- j% i! i# ~( ?' q: N
- /* 定义例程名和例程发布日期 */
! ^. R- `! R7 C' b1 Q l) a - #define EXAMPLE_NAME "V7-MiniLZO无损压缩算法移植和使用"
5 c# k' _- R: q! \) I2 Q - #define EXAMPLE_DATE "2019-10-11"
0 _+ q. s! S- e" \ - #define DEMO_VER "1.0"3 f: ?- z) j* J& _
- 3 X3 K. V7 K0 x; @& C
- static void PrintfLogo(void);
5 C- m. s# O9 a' O& Q2 X& W - static void PrintfHelp(void);
! l' \& d; E- P' H5 n. o - static uint8_t TestMiniLZO(uint32_t _Len);
. @/ h5 U& N7 C
! `, L% i) i$ E4 P+ H& O3 p
# s4 }* J) w: `3 [" w2 z, P: d- /* 定义测试用的输入输出缓冲和大小 */* C) F3 Z* i( a& R) R1 r# P
- #define IN_LEN (20*1024ul)' w1 D% x! S+ |# _, ^8 ~: [* J
- #define OUT_LEN (IN_LEN + IN_LEN / 16 + 64 + 3)
9 ^3 z/ }+ w; [ K2 J5 j n1 k - static unsigned char __LZO_MMODEL in [ IN_LEN ];4 Y5 K5 m6 F0 k, t2 P( V! D" {
- static unsigned char __LZO_MMODEL out [ OUT_LEN ];
( j6 {* \( [) ^) m# _ - # v) M9 o0 h5 r" l
- /* 压缩需要内存大小 */; m. C1 J" ]2 |1 v6 s
- #define HEAP_ALLOC(var,size) \# D2 ^; L* _! V4 L$ }# ^
- lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) ]# f2 ?! ], T- m3 }6 e
- 6 a! h9 }7 X3 e6 _
- static HEAP_ALLOC(wrkmem, LZO1X_1_MEM_COMPRESS);
: I H1 A( W* [) j7 }% T7 D - ' }& u. j+ W; f2 k3 O r& H) i/ s
- /* 定义个变量,避免警告 */
. g. R) t7 A( s/ b0 k - #if defined ( __CC_ARM )6 }3 p$ l% D8 g7 O! W" g
- __attribute__((section (".RAM_D1"))) uint8_t InTempData[IN_LEN];
2 S8 }' Z1 x- z5 N7 a. y3 d - __attribute__((section (".RAM_D1"))) uint16_t TempValues1;. q8 p* P9 B, A: w' b
- __attribute__((section (".RAM_D2"))) uint16_t TempValues2;/ O9 p9 `1 W5 ^1 {, K
- __attribute__((section (".RAM_D3"))) uint16_t TempValues3;
2 Q3 H2 ?( _; X' ?' `" s7 o) l - #endif8 s+ }& [9 D u! ]: I$ f) {
4 w c4 w7 a. z
3 p0 q4 S. n% q% k- int main(void)+ ?! C0 T( ^/ F# G2 Y
- {! y) E5 W( m' U8 [" S( Y
- u8 len; ( ?/ G6 D q% X S. u! d6 g
- u16 times=0;
' }# U! r9 D/ Z" M+ ^$ Q - Cache_Enable(); //打开L1-Cache
& y; w6 V4 s) r# W6 i' O' U, l - HAL_Init(); //初始化HAL库
6 |1 T! ]6 X) j7 {) Y - Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz & w5 B- L% |! @: L& _
- delay_init(216); //延时初始化( |* D Z- [( k" T
- uart_init(115200); //串口初始化
! F2 P" i% H: {2 a' o - LED_Init(); //初始化LED( b! I' X! R* q% i2 E
- ) m b0 _5 F- V4 K7 S0 \. J
- ( r# J$ ?/ h/ ]; @
- #if defined ( __CC_ARM ) ( k7 F( U8 s' u
- TempValues1 = 0; /* 避免MDK警告 */
8 u. w. q- p9 |4 e6 z - TempValues2 = 0; i2 X& ~( N, r# w- Y( o7 j# a
- TempValues3 = 0;
3 @9 \5 b5 B! w& Q - #endif
7 l& O" T$ ]2 W/ z5 u. n& c - 3 L, B4 |1 Y; ]8 r: W
- PrintfLogo(); /* 打印例程名称和版本等信息 */
" `, g/ o t$ C8 o( e - PrintfHelp(); /* 打印操作提示 */7 D4 {5 k+ F" L& r1 q7 E
-
8 _8 }% T. j$ _+ R6 Y# W" p5 l$ z - 5 n' i# g/ @5 ~9 g' u
- /* 初始化 LZO */+ a. D* ?% e. N) T$ k- d/ h
- if (lzo_init() != LZO_E_OK)
, t% x. a( K# i% h8 o - {+ \' B. v6 ~- y9 b, i! J
- printf("LZO初始化失败 \r\n");9 N* W+ X" H+ c& K* C; a7 A
- printf("一般是编译造成的操作,可以重新编译,并设置不做任何优化,同时使能-DLZO_DEBUG进行调试\r\n");8 |$ N5 G0 A! b+ T D4 A
- }. k; j0 B, r3 S- a6 J0 ~
2 s: W5 J7 v# ?1 H1 e* T& L) H$ Y- /* 测试数据的压缩和解压 */
0 I5 O3 `6 p4 [ - TestMiniLZO(1024*1);8 `/ W, z( c. n
- TestMiniLZO(1024*2); % z* S7 w( v. L/ E9 k: x
- TestMiniLZO(1024*3);
9 k+ c. b2 q9 a7 H! o$ \ - TestMiniLZO(1024*4); 4 I F5 |- b" @" X# d
- TestMiniLZO(1024*5);1 X7 D+ p; V" Y. W; _3 m
- TestMiniLZO(1024*6);
9 F- v8 }5 N( w2 j. C - TestMiniLZO(1024*7);
) r9 g4 x; u# \% R9 U - TestMiniLZO(1024*8);
- W4 S) C% k( a0 w( u! J - TestMiniLZO(1024*9);
' o5 H+ P4 X6 C+ b( I& o - TestMiniLZO(1024*10); ) y- w: k. F( R# X
- TestMiniLZO(1024*11);
1 ^2 }2 F2 S6 H7 h8 d - TestMiniLZO(1024*12); 5 p( A: z' H9 n
- TestMiniLZO(1024*13);4 l* ~/ r2 V% Z! V/ q
- TestMiniLZO(1024*14); % }7 R& ?, o5 [. z% ~4 g. z
- TestMiniLZO(1024*15);3 w! l3 R7 s4 d- J$ j& ^
- TestMiniLZO(1024*16);
9 o; g- s T/ a S' h3 t* o - TestMiniLZO(1024*17);
1 i6 R3 ^' m {; C - TestMiniLZO(1024*18);% i T, X* Z" P+ z, D c v* i
- TestMiniLZO(1024*19);
) ~8 v& V9 a4 G* W - TestMiniLZO(1024*20);
3 h& H/ D3 w( r/ Z -
6 T/ K3 y l `$ @4 x - while(1)
2 K$ s. o$ B2 J1 N1 E - {2 [. A3 R% `$ z! a3 r' p' x
- if(USART_RX_STA&0x8000), K( j* x9 a3 u7 i% z) k
- {
, |- b* b& Q! o' R( U7 ], c - len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
" I: Y/ P$ |7 X - printf("\r\n您发送的消息为:\r\n");
# h2 [0 S, z4 C8 C - HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000); //发送接收到的数据1 t2 k/ M. w( N6 e
- while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET); //等待发送结束
$ Y6 L( k0 ]9 ?0 q - printf("\r\n\r\n");//插入换行
$ ^6 a/ M2 E$ K - USART_RX_STA=0;* M5 h$ T4 R: n- l" r& }. Y3 |
- }else
% D. N, y9 G( O/ w5 E( m/ z& g - {* I! k1 H4 }6 X! I
- times++;
( Z3 c6 x2 g" t4 g+ Y2 q - if(times%30==0)LED0_Toggle;//闪烁LED,提示系统正在运行.
9 u3 c$ N% K7 Q2 \! }9 E, F& q - delay_ms(10); 0 T% \& p6 F q2 G
- }$ O; [2 M( T6 a4 |% ~( N& G
- }: `- A! d; u% ?1 C$ w, g& e# a
- }) U- U; u4 M" D) X
- T" B. N. u9 _. R! V
- $ o6 Q% Y [7 O6 N
P0 }, _% ?+ r* i" L$ N- /*0 Q3 d# _+ j/ u6 g
- *********************************************************************************************************$ y6 X8 {6 B/ M# r/ g9 J
- * 函 数 名: TestMiniLZO9 m- S i* b6 b9 ^7 {/ |- r( U
- * 功能说明: _Len 要压缩的数据量。; t5 z! e% d- D
- * 形 参: 无
, p2 m" D9 M: i - * 返 回 值: 无
& t' U5 U+ N Q4 _8 i - *********************************************************************************************************
7 T) `8 s4 c* c7 v1 [ - */
4 V" H1 j; w: X - static uint8_t TestMiniLZO(uint32_t _Len)
# \! `1 z# o- \+ @7 a - {' x/ i% F, j; @$ }
- uint32_t i;
$ p- |4 j' Q% W: d; ~; F( W, i - int r;
. V( c8 t* f$ w' G) r/ S# V2 S- q - lzo_uint in_len;
8 f. O& f' N$ O' L j - lzo_uint out_len;+ c& o9 j+ _2 c! n/ w# {
- lzo_uint new_len;# l$ O2 y1 b. W7 k) n2 X- J8 b
- uint32_t start, end, cnt;9 ` {1 S( x2 O% J1 ^
; \! ?! U; f6 R; Z) Y- if(_Len > IN_LEN)
$ c- I/ \1 A3 a! f - {
" F- Z I6 P) }# N( C& B" P - printf("函数参数_Len超出允许的最大值%d\r\n", IN_LEN);. a: o |& x9 ^* u# K% {% }' `
- }! Q m/ Z u& N
-
% _. V/ V$ e( ^7 l - /* 准备要压缩的数据 */7 u [9 e4 ^" V) t5 ^7 D* |
- in_len = _Len;- `* Y/ c% A7 l1 u2 t0 P
-
# Z; |$ z7 @: a0 \4 M7 u2 f- D6 g) G - & N- @- c$ d- @; i; F7 y
- lzo_memset(in,0,in_len);
/ X8 |% d9 A/ T0 ?+ k, k/ |: g$ s -
5 @" j' \; P# F( `% b- c - for(i=0; i< in_len; i++)! ? m0 m6 E$ `
- {2 l9 G f& h3 X
- in<i> = rand()%256;% |4 m+ A+ u9 y# _$ x1 F& Z$ ?! u4 ?6 W
- </i> InTempData<span style="font-style: italic;"><span style="font-style: normal;"> = in</span><span style="font-style: normal;">;% `6 ]" x( _& w6 v& {: i1 G N" R
- }
6 S/ E0 }. d' k9 s
2 p4 D: ?5 w1 O* e- printf("-----------------------------------\r\n");2 y1 h& Q/ g: P! i5 s
- printf("-----------------------------------\r\n");
% ]0 C7 c4 Z. O# O) O - : H3 X1 h: L2 ?+ S4 w* K: R# {
- /* 将in数组中的数据压缩到out数组 */
! C% c" T! Q% Q- d! @- I9 E - start = SysTick->VAL;1 w; R8 \' S0 r$ f' z2 W
- r = lzo1x_1_compress(in,in_len,out,&out_len,wrkmem);
- d3 h/ I: `: a7 { - end = SysTick->VAL;
; _9 R& n3 q w" X - cnt = abs(end - start)/216;0 n* E/ r5 o- J0 U4 E
- 1 g( U* s& U" M \" X
- if (r == LZO_E_OK)$ I) |( c2 o6 Z3 T+ o- Q
- printf("压缩 %lu 字节为 %lu 字节,耗时%dus\r\n",, n9 \/ t1 T! P5 y" h
- (unsigned long) in_len, (unsigned long) out_len, cnt);
8 s: K& n5 ~( E) O. `6 a" w6 ~ - else6 B7 l+ _* g) x9 w% B" R4 Y
- { c$ u+ g( k7 H* U# x( \
- printf("内部错误 - 压缩失败: %d\r\n", r);
# \4 \# p5 \0 {" A/ t - return 2;
& U$ i! E3 l7 C: N$ U! n- G% @; d - }
) r1 G/ a, Q- }; S+ U: k -
/ n6 R1 m( L+ s% ~* B/ z6 D - /* 检查是否有位解压的数据 */( W( I; r( U. H* f$ {/ Q7 L6 V
- if (out_len >= in_len)
" s' G! a# f" T' F. \ - {% p% Q" G4 }$ ?6 G1 l; c! d0 b
- printf(" 有未解压的数据 \r\n");
* Z! }6 r! W# `, i1 P* k1 ^ - return 0;
( P/ w; ?$ E z. H3 h - }+ b0 y x5 @+ c$ m: x3 }
3 d5 O( l: t& f% F3 z! S% J- /* 将压缩后的数组out,解压到in数组 */( J& G3 F5 [/ r. a+ G# K. @2 |
- start = SysTick->VAL;
+ K2 h, Y, y6 j* R - r = lzo1x_decompress(out,out_len,in,&new_len,NULL);
! z% ~5 l4 t9 T2 ? - end = SysTick->VAL;5 J8 y$ l" r$ X9 |
- cnt = abs(end - start)/216;( a, N' r% _1 H5 {
- if (r == LZO_E_OK && new_len == in_len)' d2 M% r1 C7 H; t
- printf("解压 %lu 字节为 %lu 字节,耗时%dus\r\n", K! J/ v4 g( _% R
- (unsigned long) out_len, (unsigned long) in_len, cnt);
, s/ M( t5 U( z3 l9 | - else
& R7 V- f& B+ k - {! G8 h% Z: X9 ?0 `
- printf("内部错误 - 压缩失败: %d\r\n", r);
D, Y8 i, T7 q0 M2 M t - return 1;
' O( x0 R: d* N- L - }6 r" U8 N& @& [. p
-
) O3 {' B& p3 a! r6 f - /* 校验压缩是否成功 */, p/ i( `7 Y. g" F h
- for(i = 0; i < in_len; i++) q$ M9 @ |" P, u) l
- {
" ]2 L' h, T- ^( X, j - if(InTempData</span><span style="font-style: normal;"> != in</span><span style="font-style: normal;">)
8 H& L F4 Y( Q: I" Q# V1 R! S - {
0 L5 m6 J( ~# B0 r+ X - printf("测试压缩失败\r\n");
/ b1 t x( x. v- x# V; c - }
) c, x! l' |) [& k" U/ H6 N - }- ^6 z G; E& t, a
-
/ }8 m' T) B8 O - return 0;
4 A R( ^( W% p$ X8 S( d* A - }
5 D, z9 A2 q/ ]
6 \ Z* @; V; ?4 _- 1 ]& x4 _0 V- E$ w/ E
- /** J- \% w8 F, ~/ v! F. [
- *********************************************************************************************************
% R y; g* T7 k0 f4 ^2 } - * 函 数 名: PrintfHelp
( ^, k: E; \% ~% D' s - * 功能说明: 打印操作提示5 g# a4 Q# @1 d& w$ D% D* m8 f
- * 形 参:无
% W7 R7 d% u, N' v/ | - * 返 回 值: 无
; L, J( v) I/ F% i3 @ - *********************************************************************************************************) f9 C! D" O0 Q5 }
- */4 o# P7 d2 N! |' X6 F+ L
- static void PrintfHelp(void)3 E: K% t- l7 i. V! R8 n) Q
- {7 J$ z! e' C" _. B/ P8 S& I1 h. J
- printf("操作提示:\r\n");
c/ [7 y; G( B: K - printf("1. 数据压缩和解压测试,请下载程序并重新给板子上电,上电后自动打印\r\n");
9 Z0 r3 w( ~% n t5 A3 ], s - }
" \5 ]/ F# v' U* X4 { - $ @6 o: D$ c% T1 J+ M
- /*
& F( Z* [3 \ C - *********************************************************************************************************
1 _5 U7 J& h. B$ g5 f/ [ - * 函 数 名: PrintfLogo# R/ Y4 \- M- r
- * 功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的超级终端软件可以观察结果" ]4 Y" Z% |% u, |7 s/ x+ B* ?: m" z
- * 形 参:无3 V. j: e6 [( P5 `" ]- b- k
- * 返 回 值: 无0 R3 r: h/ [2 Y1 w( h$ H6 e" f
- *********************************************************************************************************
( ^5 M& u' S4 Q6 Q - */4 h5 a& U, O- \1 B
- static void PrintfLogo(void)
# [# E9 F8 K3 R4 t: w- h; m - {4 _. R: }# O3 B% B# u0 V6 }
- printf("*************************************************************\n\r");, w8 g& I5 r+ d+ i T
-
- A% G; {! n4 B/ `. p0 M4 P7 ] - /* 检测CPU ID */9 d7 M2 e1 b1 ]
- // {0 q0 p8 p: |" P/ Y8 @/ E, [* _% N
- // uint32_t CPU_Sn0, CPU_Sn1, CPU_Sn2;
' r' r$ s0 ~& i- g; z) J: c - // 0 V; r* Q: Q& _7 k7 P3 N D
- // CPU_Sn0 = *(__IO uint32_t*)(0x1FF1E800);: D# p c8 J/ d% u3 Y& i
- // CPU_Sn1 = *(__IO uint32_t*)(0x1FF1E800 + 4);; f2 x: n- R6 k& _* q; S# f3 i3 b2 L
- // CPU_Sn2 = *(__IO uint32_t*)(0x1FF1E800 + 8);9 [* B+ t) Q: z n4 P
- ' }4 G( ^: y' g* j6 I) D% ?
- // printf("\r\nCPU : STM32H743XIH6, BGA240, 主频: %dMHz\r\n", SystemCoreClock / 1000000);9 o8 p i1 T) M; `( ?$ B; _
- // printf("UID = %08X %08X %08X\n\r", CPU_Sn2, CPU_Sn1, CPU_Sn0);
' f' w7 A" N$ ^" \7 W% E$ P - // }+ t+ M5 k# S( g' W5 w5 E
/ Y7 n+ v2 A1 E; T! Z+ I& W- printf("\n\r");5 P7 O- {# J0 F* b3 L
- printf("*************************************************************\n\r");
1 n6 q: U, ? ]9 A1 v. W, v+ P* t6 x - printf("* 例程名称 : %s\r\n", EXAMPLE_NAME); /* 打印例程名称 */
5 D- ?1 H v* x O2 g0 m) n) y5 u - printf("* 例程版本 : %s\r\n", DEMO_VER); /* 打印例程版本 */
& a5 ^/ M3 e: b. c$ W- l - printf("* 发布日期 : %s\r\n", EXAMPLE_DATE); /* 打印例程日期 */
! T" l$ R. z( }+ a( D3 P) h0 L/ n - ) A" F( q/ n. x& u
- /* 打印ST的HAL库版本 */. C7 B h1 `$ r* e t5 s
- printf("* HAL库版本 : V1.3.0 (STM32F7xx HAL Driver)\r\n");( o7 U) ^. }9 k4 _1 e
- printf("*************************************************************\n\r");6 }; u. q# l" R5 {7 L, e- A$ B
- }</span></span>
复制代码 * E: u% x" R8 v: t
测试结果
0 C% g5 Y% d3 S) M# M( p% A) J% D* p3 m- *************************************************************
& _5 I# k1 z* _( }( h2 P! x - * 例程名称 : V7-MiniLZO无损压缩算法移植和使用; H0 `# @+ y! \4 u) z8 ^
- * 例程版本 : 1.05 e& k$ |) G! A- r+ m6 q u; y
- * 发布日期 : 2019-10-11 x& F) A% v# ~% X+ A
- * HAL库版本 : V1.3.0 (STM32F7xx HAL Driver)
& n p9 E' P, l/ F - *************************************************************
3 S) Y- P) P2 i1 `# q5 z* k2 C - 操作提示:
! F! H7 m: R4 Y1 @0 U3 l0 q - 1. 数据压缩和解压测试,请下载程序并重新给板子上电,上电后自动打印: `7 C5 Q$ R' r% V/ `
- -----------------------------------" x; i! r+ ~# A4 {: t, L3 c
- -----------------------------------) R3 `4 h1 r! {" |6 I
- 压缩 1024 字节为 561 字节,耗时328us
& v3 K' r7 N y$ L9 f: p. P - 解压 561 字节为 1024 字节,耗时9us z( [9 H9 P0 Z0 L. b9 S
- -----------------------------------
4 c% S5 g2 x0 A- w) u - -----------------------------------) B# r# _& e! n$ H# g! W2 x2 P
- 压缩 2048 字节为 565 字节,耗时334us
" U9 N' H* A- `) v6 X - 解压 565 字节为 2048 字节,耗时17us
! v# u1 Z% |3 C) p+ I( O* h - -----------------------------------
/ C2 U9 f% n) }# J - -----------------------------------2 `: V: N: r0 q( k" L+ l9 J0 q5 z
- 压缩 3072 字节为 569 字节,耗时345us+ T1 b- V) e1 u$ ~6 z
- 解压 569 字节为 3072 字节,耗时27us' n4 M2 J. T: o3 E9 |& y+ l0 S' {/ @
- -----------------------------------% S/ U# X3 y: I, N9 ^5 X1 o$ W4 e6 E
- -----------------------------------$ d: k) w7 `$ i( C1 [# {& G
- 压缩 4096 字节为 573 字节,耗时357us
- q' G" \5 ]% k* r - 解压 573 字节为 4096 字节,耗时36us' p# j6 p1 |. t4 X% O
- -----------------------------------0 M6 |0 d& ]$ ?4 R, X9 k
- -----------------------------------/ I' M' J# U n0 w* S
- 压缩 5120 字节为 577 字节,耗时367us
H7 Q' d( h# m; V- f* A - 解压 577 字节为 5120 字节,耗时46us1 r% ]* {, O: l# v8 r' v) B" i) N8 t
- -----------------------------------9 h) H* S9 g2 G) X
- -----------------------------------
; W# R' I1 H3 W* M - 压缩 6144 字节为 581 字节,耗时379us
* k. w+ z B% K3 A: U5 A1 J; U - 解压 581 字节为 6144 字节,耗时56us
. [8 c! n' D* C% H - -----------------------------------9 w+ g/ G6 i$ c! X
- -----------------------------------
0 i7 k: B' s1 I# U$ \* x* E8 \" A7 L - 压缩 7168 字节为 585 字节,耗时391us
( |% _0 e' U6 Q. i- z - 解压 585 字节为 7168 字节,耗时66us
# X, N' w$ \! {6 t( | - -----------------------------------
$ h( Q A/ f3 q+ S: K' R4 b - -----------------------------------; ~. h+ O ?! k/ y- W
- 压缩 8192 字节为 589 字节,耗时596us
6 [+ A. d/ ~5 K3 P R - 解压 589 字节为 8192 字节,耗时76us
: v' q$ x' p! J b6 v6 g - -----------------------------------$ K; L3 p; X* \5 P
- -----------------------------------5 L" V+ w u" ?% ^/ Q* G$ _ W. ]
- 压缩 9216 字节为 593 字节,耗时585us2 c: n( ]1 r% |, }
- 解压 593 字节为 9216 字节,耗时86us
+ l1 z5 ~ T* g( {3 K! n0 D - -----------------------------------$ K6 h- L9 u( {! }) u
- ----------------------------------- J0 |$ e, Y" A" T$ E
- 压缩 10240 字节为 597 字节,耗时572us
: B$ U1 B$ ?9 U2 w( N w. i" @ - 解压 597 字节为 10240 字节,耗时96us& t3 k2 L: K# s5 H
- -----------------------------------! I5 z* K- ~$ Y' A m# ] D
- -----------------------------------4 x. c" _( J! W' p, w" U
- 压缩 11264 字节为 601 字节,耗时440us
) Q/ w' m% e) r0 U* u; f - 解压 601 字节为 11264 字节,耗时892us
8 p) u/ L% y0 s) T4 U - -----------------------------------# b+ N+ L) A: A4 Z( ~
- -----------------------------------
0 ~( t# `4 C1 }4 s j4 O1 n7 y - 压缩 12288 字节为 605 字节,耗时548us
9 j8 V; F0 v# I3 ~" o - 解压 605 字节为 12288 字节,耗时116us
4 p( _0 [1 O- W% {% s - -----------------------------------
0 Y! T& t* [7 u7 w7 M u- I- u( a - -----------------------------------
" k& m1 n W/ B2 t) l - 压缩 13312 字节为 609 字节,耗时534us
9 Z, |: h; y! j! |$ K - 解压 609 字节为 13312 字节,耗时128us
3 t. k7 y* _- i0 U - -----------------------------------
% F; G8 Q4 p I& |, ? - -----------------------------------! _, f8 C4 O8 u7 e0 m! Q' M
- 压缩 14336 字节为 613 字节,耗时476us& r+ w3 j* K% m
- 解压 613 字节为 14336 字节,耗时859us
; P- w* k# t8 _% J$ G) {, P5 n9 t - -----------------------------------" t( q& F6 h# g# ]. u' o
- -----------------------------------
- k4 J5 s+ v/ W* V: n" e0 ~6 j - 压缩 15360 字节为 617 字节,耗时510us
0 D4 Q. K0 R" R8 W. m - 解压 617 字节为 15360 字节,耗时149us4 U9 Q s2 |8 f, X9 K R ]
- -----------------------------------8 G1 s/ Q3 I, q6 y9 f
- -----------------------------------& A$ I5 |3 E" K0 [" j# t2 n
- 压缩 16384 字节为 621 字节,耗时501us
! ]% k C- o3 l& p5 m: } - 解压 621 字节为 16384 字节,耗时162us7 E$ Z0 g; Y: j) @( E) g5 w
- -----------------------------------
4 T9 G, o( S2 k& |' A - -----------------------------------" B: D# a o" H8 G4 V* x/ I
- 压缩 17408 字节为 625 字节,耗时513us
% b; N* K- x) y9 [- \; f - 解压 625 字节为 17408 字节,耗时173us6 R. f' L, u, y* u. m# [
- ----------------------------------- Y, l6 n: X: n" X( i0 L3 O) m
- -----------------------------------: Y& J7 G9 i$ v9 @ w9 ` b: w! f
- 压缩 18432 字节为 630 字节,耗时525us
6 C9 ?8 s) v% q6 C - 解压 630 字节为 18432 字节,耗时183us/ U$ q+ D0 _( d# B7 O7 r; w
- ------------------------------------ V( p( [5 V, [9 v. r* ~
- -----------------------------------9 a3 _; ^1 N0 G0 A9 N
- 压缩 19456 字节为 634 字节,耗时461us7 _1 Y2 I. A; Q, F4 N' ^0 ^* l
- 解压 634 字节为 19456 字节,耗时194us
3 r& ~. v U& t& z2 ?0 q7 K - -----------------------------------" E0 M+ |4 D7 t
- -----------------------------------
9 ]. @# u" N. u- a& j- O - 压缩 20480 字节为 638 字节,耗时550us& y' {5 w) q" B
- 解压 638 字节为 20480 字节,耗时204us+ V' z& R, o$ c1 M6 Q. k
3 I$ ]6 j- Y3 ~
复制代码 6 S9 q) R. c( S, j- w
6 H `; ~: w3 H0 u: |8 y |