📄 eff2.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"><!-- This collection of hypertext pages is Copyright 1995-2005 by Steve Summit. --><!-- Content from the book "C Programming FAQs: Frequently Asked Questions" --><!-- (Addison-Wesley, 1995, ISBN 0-201-84519-9) is made available here by --><!-- permission of the author and the publisher as a service to the community. --><!-- It is intended to complement the use of the published text --><!-- and is protected by international copyright laws. --><!-- The on-line content may be accessed freely for personal use --><!-- but may not be published or retransmitted without explicit permission. --><!-- --><!-- this page built Sat Dec 24 21:47:47 2005 by faqproc version 2.7 --><!-- from source file misceff.sgml dated Sat Feb 7 19:26:17 2004 --><!-- corresponding to FAQ list version 4.0 --><html><!-- Mirrored from c-faq.com/misc/eff2.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:59:05 GMT --><head><meta name=GENERATOR content="faqproc"><title>Question 20.14</title><link href="efficiency.html" rev=precedes><link href="shifts.html" rel=precedes><link href="index.html" rev=subdocument></head><body bgcolor="#ffffff"><a href="efficiency.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="shifts.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../index-2.html"><img src="../images/buttontop.gif" alt="top/contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><hr><p><!-- qbegin --><h1>comp.lang.c FAQ list<font color=blue>·</font><!-- qtag -->Question 20.14</h1><p><font face=Helvetica size=8 color=blue><b>Q:</b></font>Are pointers really faster than arrays?How much do function calls slow things down?Is <TT>++i</TT> faster than <TT>i = i + 1</TT>?</p><p><hr><p><font face=Helvetica size=8 color=blue><b>A:</b></font>Precise answers to these and many similar questionsdependof courseon the processor and compiler in use.If you simply must know,you'll have to time test programs carefully.(Often the differences are so slight thathundreds ofthousands of iterations are required even to see them.<a href="subtle.html" rel=subdocument>[footnote]</a>Check the compiler's assembly language output,if available,to see if twopurported alternatives aren't compiled identically.)</p><p>For conventional machines,it is usuallyfaster to march through large arrays withpointers rather than array subscripts,but for some processors the reverse is true.(Better compilers shouldgenerate good coderegardless of which notation you use,thoughit's arguably easier for a compilerto convert array indices to pointers than vice versa<a href="fn98.html" rel=subdocument>[footnote]</a>.)</p><p>Function calls,though obviously incrementally slower than in-line code,contribute so much to modularity and code claritythat there is rarely good reason to avoid them.(Actually, by reducing bulk,functions can improve performance.)Also,some compilers are able to expandsmall, critical-path functionsin-line,either as an optimization or at the programmer's request.</p><p>Before rearranging expressions such as <TT>i = i + 1</TT>,remember that you are dealing with a compiler,not a keystroke-programmable calculator.Any decent compilerwill generate identical code for <TT>++i</TT>, <TT>i += 1</TT>,and <TT>i = i + 1</TT>.The reasons for using <TT>++i</TT> or <TT>i += 1</TT> over <TT>i = i + 1</TT>have to do with style, not efficiency.(See also question<a href="../expr/plusplus.html">3.12b</a>.)</p><!-- aend --><p><hr><a href="efficiency.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="shifts.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a> <a href="../questions.html"><img src="../images/buttontop.gif" alt="contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><br><!-- lastfooter --><a href="../about.html">about this FAQ list</a> <a href="../eskimo.html">about eskimo</a> <a href="../search.html">search</a> <a href="../feedback.html">feedback</a> <a href="copyright.html">copyright</a><p>Hosted by<a href="http://www.eskimo.com/"><img src="../../www.eskimo.com/img/link/eskitiny.gif" alt="Eskimo North"></a></body><!-- Mirrored from c-faq.com/misc/eff2.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:59:05 GMT --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -