源码移植注意事项
: t+ o$ ^" v6 `& n+ L工程中加入miniLZO源文件为
9 i* |- p: q, _# V4 |5 h. y$ A( X3 D- H! L
6 M+ n# j5 |9 S' k5 K5 ^7 \, R8 Q4 u' [+ l
keil5中优化设置选项须设置禁止优化,否则压缩算法可能被优化导致无法正确运行。
% s6 @: A4 r7 {) w6 S
2 W* D5 t X$ }+ |% ^$ q7 [3 p" b, g7 U2 U
5 Y9 V9 X u* G8 _4 U$ A
测试程序
, \9 a& ?2 X Y8 n( _- #include "sys.h"9 f6 D2 f3 R) E% {
- #include "delay.h"
0 L. G8 r* p) K! y, \, m - #include "usart.h"* \* m* y- g' C" o- h5 F' S* d
- #include "led.h"
6 u8 h4 y- Q' m/ \ - #include "key.h") O& d# V/ }! M0 S s5 \4 x. t2 u
- #include "minilzo.h"" J u( f# o! ^6 Q! d) R5 p
- #include <stdlib.h>' p6 t: P" k, g" ] b A! R
- " C. P4 E/ T2 f$ Q$ g. ]
- ! K2 @& l7 G: \% D' T- P4 W
- /************************************************" w% `3 e* F( X, K# @6 _) x/ C
- ALIENTEK 阿波罗STM32F7开发板 实验3
0 M3 _) \; S& A* |# ]- p, m2 V - 串口实验-HAL库函数版
6 n6 ]; c# ~7 s - 技术支持:<a href="http://www.openedv.com" target="_blank">www.openedv.com</a>+ v7 N1 c. ~$ v/ T
- 淘宝店铺:<a href="http://eboard.taobao.com" target="_blank">http://eboard.taobao.com</a>
( w+ H8 Z9 ]" u5 h - 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
' F' B) Y. U; a - 广州市星翼电子科技有限公司 : `$ [6 J w. x! o4 @9 b
- 作者:正点原子 @ALIENTEK4 ]" ?( B+ i: @+ K
- ************************************************/
: E3 {: |. p9 K( } d# i% k% i2 A - Z3 z5 e0 p |0 }5 }0 T
- 6 R5 l: O- a: w& D
- /* 定义例程名和例程发布日期 */
' b3 G1 j! P+ q! _; @$ N - #define EXAMPLE_NAME "V7-MiniLZO无损压缩算法移植和使用"8 A' o2 u8 Q# l
- #define EXAMPLE_DATE "2019-10-11"
& q+ }: ~' c* `2 p& [% e' e - #define DEMO_VER "1.0"& {% i3 A: {6 @% H( i4 F# Z
- ( W( c' H& h O. L! ?% x& }4 ~
- static void PrintfLogo(void);
+ I# @) X7 y+ J. r9 e7 { - static void PrintfHelp(void);
) l) m4 j$ V0 s* }2 Y c8 r - static uint8_t TestMiniLZO(uint32_t _Len);
$ s: | F' [# p
( g9 @# r" q9 _
2 [7 S* w8 ~( ]3 T+ Q; F" e6 {, V- /* 定义测试用的输入输出缓冲和大小 */% g3 M, S" a/ Q9 [* @
- #define IN_LEN (20*1024ul)6 _2 d3 K7 N+ c
- #define OUT_LEN (IN_LEN + IN_LEN / 16 + 64 + 3)5 Z9 ]: D) ~( @4 m8 F/ J# o+ ~
- static unsigned char __LZO_MMODEL in [ IN_LEN ];
' ?! k8 H) | r+ y5 _ - static unsigned char __LZO_MMODEL out [ OUT_LEN ];
. F8 Y, Y, E- o( J
; L/ ~# q$ R6 \0 J# M `1 y, @- /* 压缩需要内存大小 */
5 C: ]1 Q/ x) ]# d' W - #define HEAP_ALLOC(var,size) \
8 @3 C* o2 R) U1 @6 ^& q: r( w - lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) ]
6 P, C5 a% o3 b, H* T* M - ) t' B$ E2 \( y; R) n' r( U
- static HEAP_ALLOC(wrkmem, LZO1X_1_MEM_COMPRESS);* E* G$ b! Y( B7 Q: R4 H2 _7 \
-
9 `, l0 u* r5 X! C% G7 Z+ h - /* 定义个变量,避免警告 */
/ Z( m4 d0 W6 @# Y4 q" K7 A - #if defined ( __CC_ARM )
& V! B- l ~7 }# P+ ~8 f: ` - __attribute__((section (".RAM_D1"))) uint8_t InTempData[IN_LEN];
6 _0 R& n% K9 Q6 t - __attribute__((section (".RAM_D1"))) uint16_t TempValues1;) E( K2 B; A$ a0 M d: q5 {
- __attribute__((section (".RAM_D2"))) uint16_t TempValues2;/ |7 V) y. {4 b3 ]3 W7 u' K% R' h
- __attribute__((section (".RAM_D3"))) uint16_t TempValues3;
+ V0 s! G& N: O& ~2 ]/ b4 p% }9 k" H; A - #endif
I7 P0 `' C! Q0 c1 v - ( F: Z% h& L4 U
- 2 t+ o- O4 j: j. r0 E$ h3 n/ W7 ?+ [
- int main(void)- c; R" z3 o3 a5 \: u9 d) W( d
- {9 K. ~' c# W( m7 U- z0 U
- u8 len;
& I& k9 W5 [, r - u16 times=0; % _# _0 |8 N) Q
- Cache_Enable(); //打开L1-Cache
7 x" v8 H5 u+ m& F - HAL_Init(); //初始化HAL库1 x, H: c+ Q; [/ v) g. C0 P a
- Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
( {+ A# {. ]8 ]8 ` - delay_init(216); //延时初始化
3 F2 ~/ A9 Z7 c, C, K6 I. e. Y - uart_init(115200); //串口初始化
' S1 L$ i, r6 ^ - LED_Init(); //初始化LED! O' y, m1 h# }/ c8 z* l P
- ' y, r" O, ~. V4 j. M& a# F1 x! i
- 6 g' Y9 O/ l6 T# I0 W* u
- #if defined ( __CC_ARM )
/ i9 z& y7 d$ f - TempValues1 = 0; /* 避免MDK警告 */
) x8 n- J" J J/ ` t' |0 N% q/ { - TempValues2 = 0;' J2 Y1 i" g( [$ |
- TempValues3 = 0;
. B3 u" n( \4 c( S - #endif+ q! u% ?3 z) `# y: m! a
- : u8 v4 P- _! v( I" T0 p$ m( _, E
- PrintfLogo(); /* 打印例程名称和版本等信息 */) \' K, u! `6 ^3 x+ d6 I
- PrintfHelp(); /* 打印操作提示 */4 ^& }7 p' M3 p
-
' i+ {1 |3 T5 Q* [ - ) t4 W( X& n6 F' x4 L9 d6 G! W
- /* 初始化 LZO */* Q; X- B/ E6 N6 y
- if (lzo_init() != LZO_E_OK)& i* U7 k% K/ w
- {
$ ]' x8 E: R) A1 F& P; s - printf("LZO初始化失败 \r\n");) ]/ ]2 I6 R2 e" G# u
- printf("一般是编译造成的操作,可以重新编译,并设置不做任何优化,同时使能-DLZO_DEBUG进行调试\r\n");" Z) a% ]6 E' a2 }4 |; u+ ]+ q
- }& K2 [( R8 g. |
9 o, R. V5 i. C& Y- /* 测试数据的压缩和解压 */- [9 }/ s% J! A: O( Q. z B
- TestMiniLZO(1024*1);
" i8 k9 D- O9 O6 O6 M# _# { - TestMiniLZO(1024*2);
' T% K& Z# l+ ?6 k. A" d - TestMiniLZO(1024*3);
8 Y# @$ }8 H3 e( x0 z - TestMiniLZO(1024*4); 0 i3 C4 E6 {. I4 J' d
- TestMiniLZO(1024*5);
0 }) E( `5 h* p* z - TestMiniLZO(1024*6);
" N& ? e- f! D1 D- u - TestMiniLZO(1024*7);
- U; ?7 t/ k3 l# g - TestMiniLZO(1024*8);
& n& b; S3 J8 N, k% W, Z) D& @ - TestMiniLZO(1024*9);# z& f8 Y, U l; a" W
- TestMiniLZO(1024*10); % Z1 d0 l- i! X: F
- TestMiniLZO(1024*11);" B, w) B1 R& k" @+ C
- TestMiniLZO(1024*12); 6 x# D3 I; }- o7 `/ I% {$ L5 O- W
- TestMiniLZO(1024*13);; s" O. b0 |" w! N9 g, e
- TestMiniLZO(1024*14);
4 n# [9 l8 t; X5 ? - TestMiniLZO(1024*15);
- k, O) H: M4 n- a* P9 h: p7 C - TestMiniLZO(1024*16); 4 L' B; O& E |3 q6 [$ T' D
- TestMiniLZO(1024*17);
/ y+ x* W* r( L8 b" t1 H - TestMiniLZO(1024*18);0 l+ g1 N& B$ t/ _( r
- TestMiniLZO(1024*19);
5 v+ H9 {/ T! `' a W: y - TestMiniLZO(1024*20);
$ W) ~. Q1 C1 o; N n1 W4 ? - 2 ] C7 U$ _0 h5 s1 D
- while(1)
) k2 y5 l+ m5 r, _2 c! V& [ - {
' P. N5 V$ C) M0 V# F - if(USART_RX_STA&0x8000)
; O% \ P u$ i) `( w: X+ \ - { # }& ^' t/ o; {4 O7 K9 v
- len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
4 K" i. m; X2 J; D - printf("\r\n您发送的消息为:\r\n");% V- y6 h; `* P; w8 |
- HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000); //发送接收到的数据
3 p' q, R* A* ]; i* J. E - while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET); //等待发送结束+ o+ x' y0 o! |3 g, Y- H) A" |$ K, z
- printf("\r\n\r\n");//插入换行% A1 r/ e. r5 c4 Z9 w( ?
- USART_RX_STA=0;3 Z1 x, g6 Z' _0 n
- }else
' [4 z. M1 Y. d8 |! E - {. u, ]9 t; h- F, y: i
- times++;+ ~0 e/ B# c* r" f" d5 A1 t9 D
- if(times%30==0)LED0_Toggle;//闪烁LED,提示系统正在运行.) S Q6 ?' T+ H. |; h8 m+ Q
- delay_ms(10);
" n) ]. ~% ]4 Q5 q% o - } L4 W c* o" |( D
- }2 N @/ |8 V2 u/ R; W4 g, d6 l
- }
" Y0 F, z! \+ m( j' v - / J# U, Y1 t6 j5 M9 |4 p
/ Z# Y; A1 S: a! |3 C S
+ m Y* Q( E$ O* f9 T- /*5 w* q3 N3 S4 Q& O: G% y
- *********************************************************************************************************0 W7 ~ h$ B* G$ R& v7 o
- * 函 数 名: TestMiniLZO
$ u% e. l$ [" B - * 功能说明: _Len 要压缩的数据量。
- P4 S8 H" A6 v9 a, Y. `$ g- k# j - * 形 参: 无+ R: y9 f; X8 w' L+ l
- * 返 回 值: 无8 a9 G3 w( p/ d) m1 }8 C$ L
- *********************************************************************************************************3 l# y0 k/ L, w
- */0 w% w; r1 g9 H( Z% K$ `
- static uint8_t TestMiniLZO(uint32_t _Len)+ R" g4 [9 B1 Y. X* {) W1 @
- {! k' a/ c4 q. D1 T4 p. I
- uint32_t i;
* w7 N0 [: d" `& u - int r;9 ?! X* S+ T' |$ v
- lzo_uint in_len;
1 M9 }, l6 k D6 } - lzo_uint out_len;
/ |( D2 z) x) a - lzo_uint new_len;
* [5 T$ Z! w* X9 w/ E/ P( l: Z - uint32_t start, end, cnt;$ f: L, G9 K d+ m
; I6 V3 y; I. @! Z% g' j. Z/ A1 T- if(_Len > IN_LEN)
$ g4 i" |6 y5 e- Y3 e- S% C - {
/ [9 [5 Z; d0 `" k4 Y - printf("函数参数_Len超出允许的最大值%d\r\n", IN_LEN);9 T4 ^- U. b1 z2 e7 Q! B& S$ Y
- }' O$ z n' u1 V' }& b3 y, l* L
-
U" B" \9 M1 @5 Z2 p, {8 Z6 H# t - /* 准备要压缩的数据 */; d5 _& Q- F9 U4 _0 Y
- in_len = _Len;
5 z Y# R: e" u! a- B, ]7 X8 \ - 4 Z5 i1 N) H8 N$ v% I) o: q
-
) Y& F5 y1 I: _3 f - lzo_memset(in,0,in_len);
' J. ~6 a) _& L. D) S - + y; V, n g3 d5 R. H7 N7 N7 h. q
- for(i=0; i< in_len; i++)
# f& U0 h' u" D3 G# L - {4 Q; e: h0 `6 f& C' I c
- in<i> = rand()%256;
7 l" c: p! _0 z - </i> InTempData<span style="font-style: italic;"><span style="font-style: normal;"> = in</span><span style="font-style: normal;">;
; K5 {( Y* P4 g/ o& {9 K - }8 I B& ^' X- o& l5 |! ^
- , A% |9 Q9 ]$ J% ~4 c% P& x
- printf("-----------------------------------\r\n");
4 t- `' Y4 U S: f4 F) z - printf("-----------------------------------\r\n");% o& ^$ B. I% Q4 _5 I% o
-
2 m1 _( n/ [7 g, I. J - /* 将in数组中的数据压缩到out数组 */( _0 C5 l' D5 R" `3 d
- start = SysTick->VAL;
: r4 _/ Y2 ]" b& f0 ^7 y' k - r = lzo1x_1_compress(in,in_len,out,&out_len,wrkmem);
; Y$ u% q1 O% I" c: S - end = SysTick->VAL;
9 i0 X# A' k2 W8 G1 N+ | - cnt = abs(end - start)/216;4 J' J5 I7 G2 _
- ( b' i! @; ]' Z
- if (r == LZO_E_OK)0 W3 Y/ j* ]' j, i4 y
- printf("压缩 %lu 字节为 %lu 字节,耗时%dus\r\n",
. b, A" Q6 _" X$ `! {6 |/ x - (unsigned long) in_len, (unsigned long) out_len, cnt);! S$ M" X# \$ o I! y
- else$ w8 d s% p; D* ~ ~$ }
- {
4 }# x2 }! N% X+ z+ d W - printf("内部错误 - 压缩失败: %d\r\n", r);( p# h$ m/ c& o3 ]# x
- return 2;' b/ q4 t( J7 X4 C/ W) |1 K
- }( ^! H5 ~$ @& f
-
' D" g1 F! X3 ?- @ - /* 检查是否有位解压的数据 */5 B; S% w1 B5 T$ {: A
- if (out_len >= in_len)# {; X9 J" f$ D t
- {. ~7 V& [/ b* R4 ]( Z }( v& b
- printf(" 有未解压的数据 \r\n");+ H0 e' o9 V7 w7 R
- return 0;- b$ U6 B3 I) P, `
- }
( E0 F; z5 `# M7 ^5 H - 5 W- c0 f$ i: M2 m# p/ q; m
- /* 将压缩后的数组out,解压到in数组 */
9 b5 a$ Y9 O( K4 C& i9 g9 X - start = SysTick->VAL;
0 b1 N& A0 L* z/ R: ] - r = lzo1x_decompress(out,out_len,in,&new_len,NULL);
g' y* }0 z) b- R5 q - end = SysTick->VAL;. n" L% C" J% J9 ]* j2 z- ^0 g
- cnt = abs(end - start)/216;
1 b$ c" E& f2 R5 Q5 d. F* d - if (r == LZO_E_OK && new_len == in_len)
3 O0 Y$ a/ W9 Z @, D- H - printf("解压 %lu 字节为 %lu 字节,耗时%dus\r\n",
d% [1 p& x& [) T& d - (unsigned long) out_len, (unsigned long) in_len, cnt);
5 `. u) q, f( x: T, o/ Z z - else
1 | [; g3 h* ~& W3 M" \2 w - {) z9 `: F6 N; V0 n$ r, p: C$ M
- printf("内部错误 - 压缩失败: %d\r\n", r);+ K0 P1 g( p9 U9 Z6 h: S/ Z% C
- return 1;* d0 {% A# O/ _% J: N
- }
2 J" i) G7 P+ W* V) Y& {* g5 C - ! o, k w! m- ]; H; ~
- /* 校验压缩是否成功 */
1 p! @% N+ e" A, J - for(i = 0; i < in_len; i++)
% I* A# J) L/ U+ Q - {% n9 C8 M2 H8 e: m8 }
- if(InTempData</span><span style="font-style: normal;"> != in</span><span style="font-style: normal;">)* I" l9 X! |4 x
- {' b" z/ c- J1 w& Z
- printf("测试压缩失败\r\n");. W! V0 s4 D( I6 |4 ?
- }
3 K7 z8 q1 \/ H/ ~, K - }
, f3 r L" p8 Z, V/ h$ ?% } -
+ V# L& D: K; _& ~& v0 L' { - return 0; R# R3 f9 h$ F/ D1 A2 ~
- }5 c1 G2 {! b. S0 V7 I# S/ V, U
- ; u/ K+ W9 N( d% k
- : ^- C& ~4 c' V$ y; y3 t/ J8 D
- /*! F$ @- h$ ~3 u1 j: m6 |
- *********************************************************************************************************0 P+ _0 w2 t) v/ M$ Y
- * 函 数 名: PrintfHelp
e, f- l/ S6 v" j- C# B6 v* A - * 功能说明: 打印操作提示
" k, ?/ ]$ n8 _ - * 形 参:无
( ?8 \7 P' ^5 Y7 e' Q( R& H2 H - * 返 回 值: 无* P9 \* y; B$ l; q- Y
- *********************************************************************************************************
, e6 {. ]0 F2 f' l0 l/ r$ q5 u - */
" q2 r: m$ n2 q+ d L, Z - static void PrintfHelp(void)
' Q5 X8 J1 [) i, ? - {3 I$ t4 J5 F, Z& n$ c! a
- printf("操作提示:\r\n");7 z) `! ?4 u! q+ p
- printf("1. 数据压缩和解压测试,请下载程序并重新给板子上电,上电后自动打印\r\n");
' P$ B% q( ^; Y/ C3 f4 \ - }
& c- f& s3 M8 e& W3 E! K - ; E4 T/ P& D7 G' `: g( j3 n+ H
- /*+ N7 b, z+ u6 X0 Q
- *********************************************************************************************************
* n* j! R3 E. J4 m+ l - * 函 数 名: PrintfLogo @( m, {9 N u# @4 s. z) W6 d: Q
- * 功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的超级终端软件可以观察结果
7 `, @2 y! p/ a5 N, \ - * 形 参:无
$ C. e; `9 y# Z6 }1 ]% s4 k9 {* Z - * 返 回 值: 无
" B, G% Z" [4 \* E: u - *********************************************************************************************************
8 o$ c O- x/ X$ N7 h - */
7 _# x: Q Y- z9 u: E( X6 M - static void PrintfLogo(void)
* R+ `0 b1 }3 M! m, _ - {4 c" E( ?1 s9 T d1 A) T
- printf("*************************************************************\n\r");3 |; B/ g! e' b) t" ?
- 4 I' i/ i1 y# c; I( l5 i
- /* 检测CPU ID */
' r5 r9 U9 ~, ]3 G. e - // {6 X* G1 L7 T0 C0 g# K) [
- // uint32_t CPU_Sn0, CPU_Sn1, CPU_Sn2;
5 A& p+ W0 {7 m% N" w9 Z7 H - //
& s# E# o+ {+ r1 x7 G8 m0 U - // CPU_Sn0 = *(__IO uint32_t*)(0x1FF1E800);3 N5 o) ^" H3 u& t! M
- // CPU_Sn1 = *(__IO uint32_t*)(0x1FF1E800 + 4);; m! J6 G6 D; ` }$ g1 h2 _5 r2 n2 Z
- // CPU_Sn2 = *(__IO uint32_t*)(0x1FF1E800 + 8);; c1 |: [+ h. S, i* p( }1 E
: M: \0 L# {: i+ c( \1 _" G+ ~/ S- // printf("\r\nCPU : STM32H743XIH6, BGA240, 主频: %dMHz\r\n", SystemCoreClock / 1000000);/ |# u6 V; h8 j, \, f: O0 a
- // printf("UID = %08X %08X %08X\n\r", CPU_Sn2, CPU_Sn1, CPU_Sn0);3 d9 }! o3 W/ \
- // }! @1 x1 G' O3 m' K! c* J# R
; T. V- G x* p+ ^- [: L0 O7 c- printf("\n\r");
7 r0 _3 s" W5 D4 o2 |8 ^ - printf("*************************************************************\n\r");
: d" E8 c4 Z9 a" K - printf("* 例程名称 : %s\r\n", EXAMPLE_NAME); /* 打印例程名称 */
8 `* P$ R2 O8 | - printf("* 例程版本 : %s\r\n", DEMO_VER); /* 打印例程版本 */6 G! i, m% j6 a+ A. @& c
- printf("* 发布日期 : %s\r\n", EXAMPLE_DATE); /* 打印例程日期 */9 {) }9 O9 @% a* [2 V! N
$ j+ D D, S( p. {, E* v3 a: |- /* 打印ST的HAL库版本 */
' W y/ R9 B. Q# E - printf("* HAL库版本 : V1.3.0 (STM32F7xx HAL Driver)\r\n");) m/ j$ N0 o& t" e' p+ ~3 ^; k% p
- printf("*************************************************************\n\r");- }5 W, _- s# R' |) I% a
- }</span></span>
复制代码
K5 z* Q, H, E5 f _测试结果
}1 [8 }# Z P0 E( ]& V1 T- *************************************************************
6 u2 k$ ~; L5 s, N( o - * 例程名称 : V7-MiniLZO无损压缩算法移植和使用# j# s, x0 L7 V) x+ x8 h# v' W A
- * 例程版本 : 1.0
0 i' n- u5 M0 H% n* u4 J$ ^: z - * 发布日期 : 2019-10-11
1 [9 J: N9 k8 }2 ^( [ - * HAL库版本 : V1.3.0 (STM32F7xx HAL Driver)
5 ^3 I6 m2 R' g# `/ R - *************************************************************) O {0 d" Z W
- 操作提示:
- |5 N* T! N' _) [+ z& W% ~# u - 1. 数据压缩和解压测试,请下载程序并重新给板子上电,上电后自动打印 B+ N$ x2 k% C& A
- -----------------------------------
/ K) l j# J; A - -----------------------------------, Y# b* C9 {2 }9 y8 ]4 O
- 压缩 1024 字节为 561 字节,耗时328us
7 g0 a5 n- h! C2 W0 Y - 解压 561 字节为 1024 字节,耗时9us4 e! [' h3 c; c# U& @
- -----------------------------------
) |: C3 s) X$ ^1 F - -----------------------------------: b: n: Z6 X; X0 ^! W2 S
- 压缩 2048 字节为 565 字节,耗时334us: P' G( N B, f& q
- 解压 565 字节为 2048 字节,耗时17us( ]; U8 u) |/ Q: R- W) x
- -----------------------------------" X/ ~6 U' g1 g4 |* b2 X# w
- -----------------------------------
1 o4 ~3 Z! t) i) b9 r4 K9 L - 压缩 3072 字节为 569 字节,耗时345us
/ m- d8 h" ]. ]1 J- ] - 解压 569 字节为 3072 字节,耗时27us
0 C# ?4 t) E$ ~# @- _: h - -----------------------------------
, r* P* {4 g* Q - -----------------------------------
9 i" ~( [& y2 \+ x) D - 压缩 4096 字节为 573 字节,耗时357us
5 c$ W+ L$ L' y5 c3 C- Y7 t! U - 解压 573 字节为 4096 字节,耗时36us# D( ~; |! Q: l; |& M) ]! Z1 ^) o# I) ^
- -----------------------------------( `+ X* C1 o; P) D
- -----------------------------------" Q7 D+ O1 q2 K. j# r( L) }
- 压缩 5120 字节为 577 字节,耗时367us( e; g5 y3 p! ^7 N% Z
- 解压 577 字节为 5120 字节,耗时46us* q+ u2 D* I8 C5 N" L, q2 C
- -----------------------------------
9 i/ n" C5 \ g3 T! }2 v( _+ B - -----------------------------------
5 d C( R! j2 D( `) \- `/ e2 C - 压缩 6144 字节为 581 字节,耗时379us
: K' T: C x8 i8 y' m7 W - 解压 581 字节为 6144 字节,耗时56us
. J8 O6 G. c7 W# @- }: S( D' _' u - -----------------------------------" A' e& ]# `4 B7 t5 a- X; o1 P$ h& c
- -----------------------------------! M: z E, l* J2 k$ D. N* s
- 压缩 7168 字节为 585 字节,耗时391us
" D6 e% N$ v+ h7 \ - 解压 585 字节为 7168 字节,耗时66us& B) @% d3 p( v- n |" Y: C+ |3 N
- -----------------------------------
% w U6 {0 t4 Y: y: [ - -----------------------------------
7 ^* p4 u$ W% o6 f$ W - 压缩 8192 字节为 589 字节,耗时596us
4 z& T: K3 N) o% b7 d5 f6 b- V6 f) h! p8 I - 解压 589 字节为 8192 字节,耗时76us
, d6 ?+ K* U4 n1 j( |& ? - -----------------------------------2 a, R) I1 H6 @/ D7 e
- ----------------------------------- j+ ~: {% ~+ W5 c
- 压缩 9216 字节为 593 字节,耗时585us( z$ g5 f' e7 c/ L6 b* |
- 解压 593 字节为 9216 字节,耗时86us* I) c8 T6 q1 G4 x7 D6 K- G9 v, x
- -----------------------------------
# Q! M( o. o4 K- ~* p8 J1 h - ----------------------------------- }5 g- k0 A, C; J
- 压缩 10240 字节为 597 字节,耗时572us; U6 _- `/ H9 l6 ^
- 解压 597 字节为 10240 字节,耗时96us
9 u8 M8 d1 Z2 C - -----------------------------------' Y/ Z* S9 r) K5 {5 j F
- -----------------------------------
6 s& u. H0 C4 I! K9 i. ]" | - 压缩 11264 字节为 601 字节,耗时440us
/ Y' l! u0 K9 V2 E) e - 解压 601 字节为 11264 字节,耗时892us
2 Y* u- T' b8 h1 [' Q% p - -----------------------------------7 o b5 y3 T, y
- -----------------------------------& J% |" P. I$ }# B. Y
- 压缩 12288 字节为 605 字节,耗时548us% ~) O, D A5 a; v% p
- 解压 605 字节为 12288 字节,耗时116us& s/ Y. P, M' ^2 L' v
- -----------------------------------( X2 t7 B: l& P# t
- -----------------------------------, l( \/ Y0 @8 n @
- 压缩 13312 字节为 609 字节,耗时534us
u, \1 L& `. v9 S9 ~ - 解压 609 字节为 13312 字节,耗时128us
9 o# H8 j+ ~: i/ Q' \# D6 m- R - -----------------------------------
4 U5 ^: D( v0 @6 ]; p2 S: Y - -----------------------------------+ J+ {" }/ ?% U( {) k9 |; k) [: C7 A
- 压缩 14336 字节为 613 字节,耗时476us: \4 Y. }% n/ ^& k8 ?# f
- 解压 613 字节为 14336 字节,耗时859us# ^! D5 m k, `) p; Q4 u7 `
- -----------------------------------
: H7 H2 n$ `! _9 e& X - -----------------------------------
9 T, L- B0 U! w. K7 P+ y - 压缩 15360 字节为 617 字节,耗时510us
" ?* w# L- ^( V$ @7 i( F% d - 解压 617 字节为 15360 字节,耗时149us3 e; [# H% Y& z$ p0 J! A* o# I- [
- -----------------------------------
T5 D' C4 h5 I6 n) Q! ~9 k& J. I8 [ - -----------------------------------
( K2 q: Q! D- r - 压缩 16384 字节为 621 字节,耗时501us
5 a8 w5 k% \! `6 d3 J" I4 R. ^ - 解压 621 字节为 16384 字节,耗时162us9 K) {* j |( c( n) c& s" s
- -----------------------------------6 Q* ]& G% X$ ^; d# e2 W
- -----------------------------------
& j& E+ _7 L& X: C' e" R0 ]* ^ - 压缩 17408 字节为 625 字节,耗时513us
5 F0 p" e+ E7 U, ^) S1 G* y - 解压 625 字节为 17408 字节,耗时173us
n: I; H0 B W0 ^! O - -----------------------------------1 Y) L6 U- F6 l9 c, H
- -----------------------------------
( F" l; B+ \2 Q2 m. J G - 压缩 18432 字节为 630 字节,耗时525us
8 X9 x5 M- C0 d$ ? - 解压 630 字节为 18432 字节,耗时183us5 k" e6 z" \& [
- -----------------------------------7 v9 c' L! W7 U% B( x0 [* C0 x+ F
- -----------------------------------5 m$ n: A4 w; K- s- `/ y3 E* y/ M
- 压缩 19456 字节为 634 字节,耗时461us
6 h, N8 p' B b8 N4 F- s! q - 解压 634 字节为 19456 字节,耗时194us
# \( R: h/ o9 Q" L. S/ X; ? - -----------------------------------
$ s+ P# u' n r" t3 [ - -----------------------------------4 T! J9 L W9 j- P u+ b2 d, r9 h
- 压缩 20480 字节为 638 字节,耗时550us0 v$ W- \' S/ i
- 解压 638 字节为 20480 字节,耗时204us& @, i8 \6 l/ b* T! K" D/ s
- ) F3 M1 y9 v8 Y6 w* [4 J
复制代码
% U# j" N0 s5 b. c# R+ h% O' y: ^* V
|