|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UNIX编程三部曲之第三曲如何实现加减乘除服务线程池(下): S+ ? l" C7 r" ^; J
8 ~4 w- I# L; L五、性能分析& d' {! s8 R) {- i9 B+ `
R* V3 r- `4 o# G" Y1 m+ G
5.1 时间复杂度
0 T2 J$ N/ h2 Y
) j5 N' g% _, S6 q& }5 x 时间复杂度是指执行算法所需要的计算工作量,它定量描述了该算法的运行时间。# S c. m" e/ }
0 o& U E& T3 o5.2 空间复杂度+ n5 i5 F6 d6 N7 T: W g% H
2 o! G2 c, P& o/ t8 w. l3 i) F
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。" Z8 \9 i- P' @" |( ]. T/ }
; _2 |4 z' d5 i! b0 T# q$ ~8 O
对于存储算法本身所占用的存储空间,从multi_pthread.c这个文件来说,大小为4.31KB,文件很小,multi_pthread.c这个文件运行过程中生成的文件大小也是非常小,mutex.c这个文件只有1.2KB,seg.c这个文件只有480B。+ @- G0 `. d! R" `( a
2 [" J1 F' B' a: _
对于算法的输入输出数据所占用的存储空间,算法本身输入的数据为存储在文件中的单词数据;算法的输出数据其中之一为输出到荧屏的提示信息,这样虽然在空间复杂度上作出了一点点牺牲,但是给用户带来的信息量却是很大的,带来了很大的方便;另外的输出数据为输出到文件中的数据,从上面文件大小的分析中可知,数据占用的数据量并不大。
. U! d" N( u# O: C; @, T8 _/ d8 C' Z$ Q
对于算法在运行过程中临时占用的存储空间,程序编译后运行的过程中是一定会占用内存的,程序在运行过程中所占用的临时空间主要为定义变量、结构体、互斥锁进程、并行进程的运行、读写操作、程序本身运行等操作所需要的内存空间,可以看出,在保证程序完整执行的情况下,运行过程并不会占用太大的内存空间。! n3 a8 N4 M& {( N5 g# Y; b- i
% J, b- F; A% a* K: [ - z ?( l4 v% ^. ]2 C9 j
5.3 文件大小; N' k& O( K% r0 |6 M' c s
4 Z; K2 j3 t S/ L1 U2 p整个作业的文件占用空间为38K,可见文件很小。
; Y5 v) c0 d4 d \3 l
" q! h8 j4 c/ e7 c/ m
9 A: U& Y7 U: L# u" Q5 w9 J! S8 }+ j六、运行情况说明5 e! e& y% q0 R# t T. f
# Z8 Z6 \* Y: ], _3 t, I) r) ~ T6.1 mutex.c程序运行测试9 O5 B# l* s$ e( b; T
n& O% n& ]8 x1 g+ X, G( e
) [+ U: a: |. Y" S( b, H* q
4 _' m+ p: r# [3 m' V+ }4 K9 O
% k5 L a9 [5 d' {+ \) E" n |
|