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

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

在C+中使用數(shù)組或STD:向量,性能差距是什么?

在C+中使用數(shù)組或STD:向量,性能差距是什么?

C++ C
SMILET 2019-06-20 17:03:21
在C+中使用數(shù)組或STD:向量,性能差距是什么?在我們的C+課程中,他們建議不再在新項(xiàng)目中使用C+數(shù)組。據(jù)我所知,Stroustroup自己建議不要使用數(shù)組。但是有顯著的性能差異嗎?
查看完整描述

3 回答

?
侃侃爾雅

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

微優(yōu)化人員的前導(dǎo)

記住:

“程序員會(huì)浪費(fèi)大量的時(shí)間來(lái)思考或擔(dān)心程序中非關(guān)鍵部分的速度,而這些提高效率的嘗試在考慮調(diào)試和維護(hù)時(shí)實(shí)際上會(huì)產(chǎn)生很大的負(fù)面影響。我們應(yīng)該忘記效率很小的問(wèn)題,比如97%的時(shí)間:過(guò)早的優(yōu)化是萬(wàn)惡之源。然而,我們不應(yīng)在這個(gè)關(guān)鍵的3%中放棄我們的機(jī)會(huì)“。

(多虧了變態(tài)(全部報(bào)價(jià))

不要使用C數(shù)組,而不是向量(或其他什么),因?yàn)槟阏J(rèn)為它更快,因?yàn)樗鼞?yīng)該是低級(jí)的。你就錯(cuò)了。

默認(rèn)使用向量(或適合您的需要的安全容器),然后如果分析器認(rèn)為這是一個(gè)問(wèn)題,看看是否可以通過(guò)使用更好的算法或更改容器來(lái)優(yōu)化它。

這就是說(shuō),我們可以回到原來(lái)的問(wèn)題。

靜態(tài)/動(dòng)態(tài)陣列?

C+數(shù)組類比低級(jí)C數(shù)組表現(xiàn)得更好,因?yàn)樗鼈儗?duì)自己了解很多,并且能夠回答C數(shù)組不能回答的問(wèn)題。更重要的是,它們通常是使用模板和/或內(nèi)聯(lián)編寫的,這意味著在調(diào)試中出現(xiàn)的大量代碼解決了在發(fā)布版本中生成的很少或沒(méi)有代碼,這意味著與其內(nèi)置的不太安全的競(jìng)爭(zhēng)沒(méi)有區(qū)別。

總而言之,它分為兩類:

動(dòng)態(tài)陣列

使用指向malloc ed/新ed數(shù)組的指針最多將與std:vectorv版本一樣快,而且安全性要低得多(請(qǐng)參閱利特的職位).

所以使用std:載體。

靜態(tài)陣列

使用靜態(tài)數(shù)組最多是:

所以請(qǐng)使用STD:數(shù)組.

未初始化存儲(chǔ)器

有時(shí),使用vector而不是原始緩沖區(qū)會(huì)導(dǎo)致可見成本,因?yàn)?/trans>vector將在構(gòu)造時(shí)初始化緩沖區(qū),而它替換的代碼沒(méi)有,正如所述伯尼在他的回答.

如果是這種情況,則可以使用unique_ptr而不是vector或者,如果代碼線中的情況不例外,則實(shí)際上編寫一個(gè)類。buffer_owner這將擁有該內(nèi)存,并允許您輕松、安全地訪問(wèn)它,包括調(diào)整大小(使用realloc),或者任何你需要的東西。


查看完整回答
反對(duì) 回復(fù) 2019-06-20
?
海綿寶寶撒

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

矢量是罩下的數(shù)組。表演是一樣的。

您可能會(huì)遇到性能問(wèn)題的一個(gè)地方是,從一開始就沒(méi)有正確地調(diào)整向量的大小。

當(dāng)向量填充時(shí),它將調(diào)整自身的大小,這可能意味著一個(gè)新的數(shù)組分配,后面是n個(gè)復(fù)制構(gòu)造函數(shù),然后是大約n個(gè)析構(gòu)函數(shù)調(diào)用,然后是一個(gè)數(shù)組DELETE。

如果您的構(gòu)造/析構(gòu)是昂貴的,那么最好首先使向量具有正確的大小。

有一個(gè)簡(jiǎn)單的方法來(lái)證明這一點(diǎn)。創(chuàng)建一個(gè)簡(jiǎn)單的類,它在構(gòu)造/銷毀/復(fù)制/分配時(shí)顯示。創(chuàng)建這些東西的向量,并開始將它們推到向量的后端。當(dāng)向量被填充時(shí),當(dāng)向量調(diào)整大小時(shí),就會(huì)出現(xiàn)一連串的活動(dòng)。然后,使用大小為預(yù)期元素?cái)?shù)的向量再試一次。你會(huì)看到區(qū)別的。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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