第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C中的I+和+i之間是否存在性能差異?

C中的I+和+i之間是否存在性能差異?

C
動(dòng)漫人物 2019-07-09 16:41:56
C中的I+和+i之間是否存在性能差異?..i++和++i如果沒有使用結(jié)果值?
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

執(zhí)行摘要:否。

i++可能比++i,因?yàn)榕f的價(jià)值i可能需要保存以供以后使用,但在實(shí)踐中,所有現(xiàn)代編譯器都將對(duì)此進(jìn)行優(yōu)化。

我們可以通過查看此函數(shù)的代碼來演示這一點(diǎn),++ii++.

$ cat i++.cextern void g(int i);void f(){
    int i;

    for (i = 0; i < 100; i++)
        g(i);}

文件是相同的,除了++ii++:

$ diff i++.c ++i.c6c6<     for (i = 0; i < 100; i++)--->     for (i = 0; i < 100; ++i)

我們將編譯它們,并獲得生成的匯編程序:

$ gcc -c i++.c ++i.c
$ gcc -S i++.c ++i.c

我們可以看到,生成的對(duì)象和匯編程序文件都是相同的。

$ md5 i++.s ++i.s
MD5 (i++.s) = 90f620dda862cd0205cd5db1f2c8c06eMD5 (++i.s) = 90f620dda862cd0205cd5db1f2c8c06e$ md5 *.o
MD5 (++i.o) = dd3ef1408d3a9e4287facccec53f7d22
MD5 (i++.o) = dd3ef1408d3a9e4287facccec53f7d22


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

從…效率與意圖安德魯·科尼格:

首先,我們還不清楚++ii++,至少在涉及整數(shù)變量的情況下。

以及:

因此,我們應(yīng)該問的問題不是這兩種操作中哪一種更快,而是這兩種操作中哪一種更準(zhǔn)確地表達(dá)了您想要完成的任務(wù)。我認(rèn)為,如果您不使用表達(dá)式的值,則永遠(yuǎn)不會(huì)有使用該表達(dá)式的理由。i++而不是++i,因?yàn)閺膩頉]有理由復(fù)制變量的值,增加變量,然后丟棄副本。

因此,如果沒有使用結(jié)果值,我將使用++i..但這并不是因?yàn)樗行剩且驗(yàn)樗_地陳述了我的意圖。


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

更好的答案是++i有時(shí)會(huì)更快但永遠(yuǎn)不會(huì)變慢。

似乎每個(gè)人都認(rèn)為i是一個(gè)常規(guī)的內(nèi)置類型,如int..在這種情況下,不會(huì)有可衡量的差別。

但是如果i是復(fù)雜的類型,那么你很可能會(huì)發(fā)現(xiàn)一個(gè)可衡量的差別。為i++在增量類之前,必須復(fù)制類的副本。根據(jù)副本中涉及的內(nèi)容,它實(shí)際上可能會(huì)慢一些,因?yàn)?/trans>++it您可以只返回最后的值。

Foo Foo::operator++(){
  Foo oldFoo = *this; // copy existing value - could be slow
  // yadda yadda, do increment
  return oldFoo;}

另一個(gè)不同之處在于++i您可以選擇返回引用而不是值。同樣,根據(jù)創(chuàng)建對(duì)象副本所涉及的內(nèi)容,這可能會(huì)慢一些。

在現(xiàn)實(shí)世界中,這種情況可能發(fā)生的例子是迭代器的使用。復(fù)制迭代器不太可能成為應(yīng)用程序的瓶頸,但養(yǎng)成使用++i而不是i++結(jié)果不受影響的地方。


查看完整回答
反對(duì) 回復(fù) 2019-07-09
  • 3 回答
  • 0 關(guān)注
  • 423 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)