收藏 分享(赏)

c 语言的效率浅析.doc

上传人:无敌 文档编号:42128 上传时间:2018-03-05 格式:DOC 页数:10 大小:111.50KB
下载 相关 举报
c  语言的效率浅析.doc_第1页
第1页 / 共10页
c  语言的效率浅析.doc_第2页
第2页 / 共10页
c  语言的效率浅析.doc_第3页
第3页 / 共10页
c  语言的效率浅析.doc_第4页
第4页 / 共10页
c  语言的效率浅析.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、a n d p e r f o r m a n c e t e s t c o p i e s o f t h e r e c o r d . I f n e c e s s a r y , r e v i e w s h o u l d b e c a r r i e d o u t ; 4 ) f o r s p r i n g h a n g e r s ( i n c l u d e d s i m p l e s p r i n g , h a n g e r s a n d c o n s t a n t s u p p o r t h a n g e r s ) i t s h

2、o u l d a l s o b e r e c o g n i z e d a s s e t t i n g a n d l o c k i n g o f l o a d s . 5 ) c h e c k t h e s u r f a c e q u a l i t y , f o l d e d l a y e r i n g a n d w i t h o u t c r a c k s , r u s t a n d o t h e r d e f e c t s . 5 ) a f t e r c o m p l e t i o n o f t h e t e s t a

3、n d c o n t r o l d r a w i n g n u m b e r o n e b y o n e , b y s e r i e s b a l e d . C o l o r a l l o y s t e e l p a r t s , t h e p a r t s m a r k i n g i n s t a l l a t i o n l o c a t i o n a n d r o t a t i o n a b o u t t h e d i r e c t i o n y o u w a n t . 7 . 3 . 1 4 . h a n g e r

4、s i n s t a l l a t i o n 7 . 3 . 1 4 . 1 h a n g e r l a y o u t a . a c l e a r d e s i g n o f h a n g e r s h o u l d b e i n s t a l l e d s t r i c t l y i n a c c o r d a n c e w i t h t h e d r a w i n g s a n d d e s i g n s s h a l l n o t b e i n s t a l l e d w r o n g , m i s s i n g ,

5、e t c . B . o w n a r r a n g e m e n t o f p i p i n g s u p p o r t a n d h a n g e r s e t a n d s e l e c t i o n s h o u l d b e b a s e d o n c o m p r e h e n s i v e a n a l y s i s o f g e n e r a l l a y o u t o f p i p i n g s y s t e m s ; c o l d i n s t a l l a t i o n o f s t e a m p

6、i p e w i t h p a r t i c u l a r a t t e n t i o n r e s e r v e d f o r c o m p e n s a t i o n o f t h e r m a l e x p a n s i o n d i s p l a c e m e n t a n d o r i e n t a t i o n . C . s u p p o r t s y s t e m s s h o u l d b e r a t i o n a l t o w i t h s t a n d p i p e l o a d s , s t a

7、t i c l o a d a n d i n c i d e n t a l l o a d ; r e a s o n a b l e p i p i n g d i s p l a c e m e n t ; g u a r a n t e e d u n d e r v a r i o u s c o n d i t i o n s , s t r e s s a r e w i t h i n t h e a l l o w e d r a n g e . S t r e n g t h , s t i f f n e s s , a n d m e e t r e q u i r

8、e m e n t s t o p r e v e n t v i b r a t i o n a n d s o o t h i n g w a t e r , w i t h o u t a f f e c t i n g t h e a d j a c e n t e q u i p m e n t m a i n t e n a n c e a n d o t h e r p i p i n g i n s t a l l a t i o n a n d e x p a n s i o n . D . e q u i p m e n t c o n n e c t e d t o t

9、h e i n t e r f a c e t o m e e t p i p e l i n e t h r u s t ( t o r q u e ) l i m i t r e q u i r e m e n t s ; i n c r e a s e t h e s t a b i l i t y o f p i p i n g s y s t e m s t o p r e v e n t p i p e l i n e . . . T u b e w a l l t h i c k n e s s ( m m ) 2 - 3 4 - 6 7 - 1 0 w e l d f o r

10、m n o s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 - 1 . 5 1 . 5 - 2 w e l d w i d t h b ( m m ) 5 - 6 7 - 6 h a s s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 . 5 - 2 2 w e l d w i d t h b ( m m ) c o v e r h a d e a c h e d g e s l

11、o p e m o u t h a b o u t 2 m m a r g o n a r c w e l d i n g w e l d s t r e n g t h e n i n g s u r f a c e h e i g h t a n d w i d t h t u b e w a l l t h i c k n e s s ( m m ) 2 -3 3 -4 5 -6 w e l d f o r m w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 - 1 . 5 1 . 5 - 2 2 - 2 . 5 w i

12、 d t h b ( m m ) 自从七十年代 C 语言诞 生以来,一直以其灵 活 性、高效率和可移植 性 为软件开发人 员所钟爱, 成为 系统软 件开发的首选工具 。 而 C+ 作为 C 语言的继 承 和发展, 不仅 保留了 C 语言的 高度灵 活、高效率和易于理 解 等诸多优点,还包含 了 几乎所有面向 对象的特征,成为新 一 代软件系统构建的利 器 。 相对来说,C 语言 是一种简洁的语言, 所 涉及的概念和元素比 较 少,主要是: 宏(macro) 、 指针(pointer) 、结构(struct) 、函数(function) 和 数组(array) ,比较容易 掌握和理解。而 C+

13、不 仅包含了上面所提到 的 元素,还提供了私有成员(private m embers) 、 公有成员(public members) 、 函数 重 载(function overloading) 、 缺省参数 (default parameters) 、 构造函数、析构函数 、 对象的引用(references) 、操作符重 载(operator overloading) 、 友元(friends) 、 模 板(templates) 、 异常处理(exceptions) 等诸多的要素, 给程序 员提供了更大的设计 空 间, 同时也增加 了软件 设计的难度。 C 语言之所 以能被 广泛的应用,其

14、高效 率 是一个不可 忽略的原 因 ,C 语言的效 率能达到汇编语言的 80% 以上, 对于一种高 级 语言来说,C 语言的 高 效率就不言而 喻了。那么,C+ 相对 于 C 来说,其效 率如何 呢?实际上,C+ 的设 计者 stroustr up 要求 C+ 效率必 须至 少维持在与 C 相差 5% 以内, 所以 , 经过精心 设 计和实现的 C+ 同样有 很高的效率 ,但并非所有 C+ 程序 具有当然的高效率, 由 于 C+的特 殊性,一些不好的设 计 和实现习惯依然会对 系 统的效率造成较大的 影 响。同时,也 由于有一部分程序员 对 C+ 的一些 底层实现机 制不够了解, 就不能从 原

15、理上理解如 何提高软件系统的效 率 。 本文主要讨论两 个 方面的问题: 第 一, 对 比 C+ 的 函数调用和 C 函数调用, 解 析 C+ 的 函数调用机制 ; 第二, 例举一些 C+ 程序员不太注意的技 术 细节, 解释如 何提高 C+ 的效率。为 方便起见,本文的讨 论 以下面所描述的单一 继 承为例( 多重a n d p e r f o r m a n c e t e s t c o p i e s o f t h e r e c o r d . I f n e c e s s a r y , r e v i e w s h o u l d b e c a r r i e d o u

16、 t ; 4 ) f o r s p r i n g h a n g e r s ( i n c l u d e d s i m p l e s p r i n g , h a n g e r s a n d c o n s t a n t s u p p o r t h a n g e r s ) i t s h o u l d a l s o b e r e c o g n i z e d a s s e t t i n g a n d l o c k i n g o f l o a d s . 5 ) c h e c k t h e s u r f a c e q u a l i t y

17、 , f o l d e d l a y e r i n g a n d w i t h o u t c r a c k s , r u s t a n d o t h e r d e f e c t s . 5 ) a f t e r c o m p l e t i o n o f t h e t e s t a n d c o n t r o l d r a w i n g n u m b e r o n e b y o n e , b y s e r i e s b a l e d . C o l o r a l l o y s t e e l p a r t s , t h e p a

18、 r t s m a r k i n g i n s t a l l a t i o n l o c a t i o n a n d r o t a t i o n a b o u t t h e d i r e c t i o n y o u w a n t . 7 . 3 . 1 4 . h a n g e r s i n s t a l l a t i o n 7 . 3 . 1 4 . 1 h a n g e r l a y o u t a . a c l e a r d e s i g n o f h a n g e r s h o u l d b e i n s t a l l e

19、 d s t r i c t l y i n a c c o r d a n c e w i t h t h e d r a w i n g s a n d d e s i g n s s h a l l n o t b e i n s t a l l e d w r o n g , m i s s i n g , e t c . B . o w n a r r a n g e m e n t o f p i p i n g s u p p o r t a n d h a n g e r s e t a n d s e l e c t i o n s h o u l d b e b a s e

20、 d o n c o m p r e h e n s i v e a n a l y s i s o f g e n e r a l l a y o u t o f p i p i n g s y s t e m s ; c o l d i n s t a l l a t i o n o f s t e a m p i p e w i t h p a r t i c u l a r a t t e n t i o n r e s e r v e d f o r c o m p e n s a t i o n o f t h e r m a l e x p a n s i o n d i s p

21、 l a c e m e n t a n d o r i e n t a t i o n . C . s u p p o r t s y s t e m s s h o u l d b e r a t i o n a l t o w i t h s t a n d p i p e l o a d s , s t a t i c l o a d a n d i n c i d e n t a l l o a d ; r e a s o n a b l e p i p i n g d i s p l a c e m e n t ; g u a r a n t e e d u n d e r v a

22、 r i o u s c o n d i t i o n s , s t r e s s a r e w i t h i n t h e a l l o w e d r a n g e . S t r e n g t h , s t i f f n e s s , a n d m e e t r e q u i r e m e n t s t o p r e v e n t v i b r a t i o n a n d s o o t h i n g w a t e r , w i t h o u t a f f e c t i n g t h e a d j a c e n t e q u

23、 i p m e n t m a i n t e n a n c e a n d o t h e r p i p i n g i n s t a l l a t i o n a n d e x p a n s i o n . D . e q u i p m e n t c o n n e c t e d t o t h e i n t e r f a c e t o m e e t p i p e l i n e t h r u s t ( t o r q u e ) l i m i t r e q u i r e m e n t s ; i n c r e a s e t h e s t a

24、 b i l i t y o f p i p i n g s y s t e m s t o p r e v e n t p i p e l i n e . . . T u b e w a l l t h i c k n e s s ( m m ) 2 - 3 4 - 6 7 - 1 0 w e l d f o r m n o s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 - 1 . 5 1 . 5 - 2 w e l d w i d t h b ( m m ) 5 - 6 7 - 6

25、 h a s s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 . 5 - 2 2 w e l d w i d t h b ( m m ) c o v e r h a d e a c h e d g e s l o p e m o u t h a b o u t 2 m m a r g o n a r c w e l d i n g w e l d s t r e n g t h e n i n g s u r f a c e h e i g h t a n d w i d t h t u

26、 b e w a l l t h i c k n e s s ( m m ) 2 -3 3 -4 5 -6 w e l d f o r m w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 - 1 . 5 1 . 5 - 2 2 - 2 . 5 w i d t h b ( m m ) 继承有其特殊性,另 作 讨论) 。 class X public: virtual X(); / 析构函数 virtual void VirtualFunc(); / 虚函数 inline int InlineFunc() return m_iMe

27、mber; / 内联函 数 void NormalFunc(); / 普通成员函数 static void StaticFunc(); / 静态函数 private: int m_iMember; ; class XX: public X public: XX(); virtual XX(); virtual void VirtualFunc(); private: String m_strName; int m_iMember2; a n d p e r f o r m a n c e t e s t c o p i e s o f t h e r e c o r d . I f n e c

28、 e s s a r y , r e v i e w s h o u l d b e c a r r i e d o u t ; 4 ) f o r s p r i n g h a n g e r s ( i n c l u d e d s i m p l e s p r i n g , h a n g e r s a n d c o n s t a n t s u p p o r t h a n g e r s ) i t s h o u l d a l s o b e r e c o g n i z e d a s s e t t i n g a n d l o c k i n g o f

29、 l o a d s . 5 ) c h e c k t h e s u r f a c e q u a l i t y , f o l d e d l a y e r i n g a n d w i t h o u t c r a c k s , r u s t a n d o t h e r d e f e c t s . 5 ) a f t e r c o m p l e t i o n o f t h e t e s t a n d c o n t r o l d r a w i n g n u m b e r o n e b y o n e , b y s e r i e s b a

30、 l e d . C o l o r a l l o y s t e e l p a r t s , t h e p a r t s m a r k i n g i n s t a l l a t i o n l o c a t i o n a n d r o t a t i o n a b o u t t h e d i r e c t i o n y o u w a n t . 7 . 3 . 1 4 . h a n g e r s i n s t a l l a t i o n 7 . 3 . 1 4 . 1 h a n g e r l a y o u t a . a c l e a r

31、 d e s i g n o f h a n g e r s h o u l d b e i n s t a l l e d s t r i c t l y i n a c c o r d a n c e w i t h t h e d r a w i n g s a n d d e s i g n s s h a l l n o t b e i n s t a l l e d w r o n g , m i s s i n g , e t c . B . o w n a r r a n g e m e n t o f p i p i n g s u p p o r t a n d h a n

32、 g e r s e t a n d s e l e c t i o n s h o u l d b e b a s e d o n c o m p r e h e n s i v e a n a l y s i s o f g e n e r a l l a y o u t o f p i p i n g s y s t e m s ; c o l d i n s t a l l a t i o n o f s t e a m p i p e w i t h p a r t i c u l a r a t t e n t i o n r e s e r v e d f o r c o m p

33、 e n s a t i o n o f t h e r m a l e x p a n s i o n d i s p l a c e m e n t a n d o r i e n t a t i o n . C . s u p p o r t s y s t e m s s h o u l d b e r a t i o n a l t o w i t h s t a n d p i p e l o a d s , s t a t i c l o a d a n d i n c i d e n t a l l o a d ; r e a s o n a b l e p i p i n g

34、 d i s p l a c e m e n t ; g u a r a n t e e d u n d e r v a r i o u s c o n d i t i o n s , s t r e s s a r e w i t h i n t h e a l l o w e d r a n g e . S t r e n g t h , s t i f f n e s s , a n d m e e t r e q u i r e m e n t s t o p r e v e n t v i b r a t i o n a n d s o o t h i n g w a t e r ,

35、 w i t h o u t a f f e c t i n g t h e a d j a c e n t e q u i p m e n t m a i n t e n a n c e a n d o t h e r p i p i n g i n s t a l l a t i o n a n d e x p a n s i o n . D . e q u i p m e n t c o n n e c t e d t o t h e i n t e r f a c e t o m e e t p i p e l i n e t h r u s t ( t o r q u e ) l i

36、 m i t r e q u i r e m e n t s ; i n c r e a s e t h e s t a b i l i t y o f p i p i n g s y s t e m s t o p r e v e n t p i p e l i n e . . . T u b e w a l l t h i c k n e s s ( m m ) 2 - 3 4 - 6 7 - 1 0 w e l d f o r m n o s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m )

37、 1 - 1 . 5 1 . 5 - 2 w e l d w i d t h b ( m m ) 5 - 6 7 - 6 h a s s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 . 5 - 2 2 w e l d w i d t h b ( m m ) c o v e r h a d e a c h e d g e s l o p e m o u t h a b o u t 2 m m a r g o n a r c w e l d i n g w e l d s t r e n g

38、 t h e n i n g s u r f a c e h e i g h t a n d w i d t h t u b e w a l l t h i c k n e s s ( m m ) 2 -3 3 -4 5 -6 w e l d f o r m w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 - 1 . 5 1 . 5 - 2 2 - 2 . 5 w i d t h b ( m m ) ; C+ 的 的函数分 为 四种: 内联函数(inline member function) 、 静 态成员函数(s tatic

39、 member function) 、虚函数(virtual member function) 和普通成员 函数。 内联函数类似于 C 语言中的宏定义函数 调 用,C+ 编译器将内联 函数的函数体 扩展在函数调用的位 置 , 使内联函数看起来象 函数, 却不需要承受函 数调用的开销, 对于一些函数体比较 简 单的内联函数来说, 可 以大大提高内联函数 的 调用效率。但 内联函数并非没有代 价 ,如果内联函数体比 较 大,内联函数的扩展 将 大大增加目标 文件和可运行文 件的 大 小; 另外,inline 关键字 对编译器只是一种提 示 , 并非一个强 制指令,也就是说, 编 译器可能会忽略某些

40、 inline 关键 字,如果被忽 略 ,内联函数 将被当作普通的函数 调 用,编译器一般会忽 略 一些复杂的内联函数 , 如函数体中有 复杂语句,包括循环 语 句、递归调用等。所 以 ,内联函数的函数体 定 义要简单,否 则在效率上会得不偿 失 。 静态函数的调用 , 如下面的几种方式: X obj; X* ptr = obj.StaticFunc(); ptr-StaticFunc(); X:StaticFunc(); a n d p e r f o r m a n c e t e s t c o p i e s o f t h e r e c o r d . I f n e c e s

41、s a r y , r e v i e w s h o u l d b e c a r r i e d o u t ; 4 ) f o r s p r i n g h a n g e r s ( i n c l u d e d s i m p l e s p r i n g , h a n g e r s a n d c o n s t a n t s u p p o r t h a n g e r s ) i t s h o u l d a l s o b e r e c o g n i z e d a s s e t t i n g a n d l o c k i n g o f l o

42、a d s . 5 ) c h e c k t h e s u r f a c e q u a l i t y , f o l d e d l a y e r i n g a n d w i t h o u t c r a c k s , r u s t a n d o t h e r d e f e c t s . 5 ) a f t e r c o m p l e t i o n o f t h e t e s t a n d c o n t r o l d r a w i n g n u m b e r o n e b y o n e , b y s e r i e s b a l e

43、d . C o l o r a l l o y s t e e l p a r t s , t h e p a r t s m a r k i n g i n s t a l l a t i o n l o c a t i o n a n d r o t a t i o n a b o u t t h e d i r e c t i o n y o u w a n t . 7 . 3 . 1 4 . h a n g e r s i n s t a l l a t i o n 7 . 3 . 1 4 . 1 h a n g e r l a y o u t a . a c l e a r d e

44、s i g n o f h a n g e r s h o u l d b e i n s t a l l e d s t r i c t l y i n a c c o r d a n c e w i t h t h e d r a w i n g s a n d d e s i g n s s h a l l n o t b e i n s t a l l e d w r o n g , m i s s i n g , e t c . B . o w n a r r a n g e m e n t o f p i p i n g s u p p o r t a n d h a n g e

45、r s e t a n d s e l e c t i o n s h o u l d b e b a s e d o n c o m p r e h e n s i v e a n a l y s i s o f g e n e r a l l a y o u t o f p i p i n g s y s t e m s ; c o l d i n s t a l l a t i o n o f s t e a m p i p e w i t h p a r t i c u l a r a t t e n t i o n r e s e r v e d f o r c o m p e n

46、s a t i o n o f t h e r m a l e x p a n s i o n d i s p l a c e m e n t a n d o r i e n t a t i o n . C . s u p p o r t s y s t e m s s h o u l d b e r a t i o n a l t o w i t h s t a n d p i p e l o a d s , s t a t i c l o a d a n d i n c i d e n t a l l o a d ; r e a s o n a b l e p i p i n g d i

47、s p l a c e m e n t ; g u a r a n t e e d u n d e r v a r i o u s c o n d i t i o n s , s t r e s s a r e w i t h i n t h e a l l o w e d r a n g e . S t r e n g t h , s t i f f n e s s , a n d m e e t r e q u i r e m e n t s t o p r e v e n t v i b r a t i o n a n d s o o t h i n g w a t e r , w i

48、t h o u t a f f e c t i n g t h e a d j a c e n t e q u i p m e n t m a i n t e n a n c e a n d o t h e r p i p i n g i n s t a l l a t i o n a n d e x p a n s i o n . D . e q u i p m e n t c o n n e c t e d t o t h e i n t e r f a c e t o m e e t p i p e l i n e t h r u s t ( t o r q u e ) l i m i

49、t r e q u i r e m e n t s ; i n c r e a s e t h e s t a b i l i t y o f p i p i n g s y s t e m s t o p r e v e n t p i p e l i n e . . . T u b e w a l l t h i c k n e s s ( m m ) 2 - 3 4 - 6 7 - 1 0 w e l d f o r m n o s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 - 1 . 5 1 . 5 - 2 w e l d w i d t h b ( m m ) 5 - 6 7 - 6 h a s s l o p e m o u t h w e l d s t r e n g t h e n i n g h e i g h t h ( m m ) 1 . 5 - 2 2 w e l d w i d t h b ( m m ) c o v e r h a d e a c h e d g e s l o p e m o u t h a b o

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报