亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

提高C++程序運(yùn)行效率的10個(gè)簡單方法

2019-11-06 06:14:00
字體:
供稿:網(wǎng)友
本文以C/C++程序?yàn)槔v述了程序運(yùn)行效率的10個(gè)簡單方法,分享給大家供大家參考之用。具體分析如下:

對于每一個(gè)程序員來說,程序的運(yùn)行效率都是一個(gè)值得重視,并為之付出努力的問題。但是程序性能的優(yōu)化也是一門復(fù)雜的學(xué)問,需要很多的知識(shí),然而并不是每個(gè)程序員都具備這樣的知識(shí),而且論述如何優(yōu)化程序提高程序運(yùn)行效率的書籍也很少。但是這并不等于我們可以忽略程序的運(yùn)行效率,下面就介紹一下本人積累的一些簡單實(shí)用的提高程序運(yùn)行效率的方法,希望對大家有所幫助。

一、盡量減少值傳遞,多用引用來傳遞參數(shù)。 至于其中的原因,相信大家也很清楚,如果參數(shù)是int等語言自定義的類型可能能性能的影響還不是很大,但是如果參數(shù)是一個(gè)類的對象,那么其效率問題就不言而喻了。例如一個(gè)判斷兩個(gè)字符串是否相等的函數(shù),其聲明如下:

bool Compare(string s1, string s2)bool Compare(string *s1, string *s2)bool Compare(string &s1, string &s2)bool Compare(const string &s1, const string &s2)

其中若使用第一個(gè)函數(shù)(值傳遞),則在參數(shù)傳遞和函數(shù)返回時(shí),需要調(diào)用string的構(gòu)造函數(shù)和析構(gòu)函數(shù)兩次(即共多調(diào)用了四個(gè)函數(shù)),而其他的三個(gè)函數(shù)(指針傳遞和引用傳遞)則不需要調(diào)用這四個(gè)函數(shù)。因?yàn)橹羔樅鸵枚疾粫?huì)創(chuàng)建新的對象。如果一個(gè)構(gòu)造一個(gè)對象和析構(gòu)一個(gè)對象的開銷是龐大的,這就是會(huì)效率造成一定的影響。

然而在很多人的眼中,指針是一個(gè)惡夢,使用指針就意味著錯(cuò)誤,那么就使用引用吧!它與使用普通值傳遞一樣方便直觀,同時(shí)具有指針傳遞的高效和能力。因?yàn)橐檬且粋€(gè)變量的別名,對其操作等同于對實(shí)際對象操作,所以當(dāng)你確定在你的函數(shù)是不會(huì)或不需要變量參數(shù)的值時(shí),就大膽地在聲明的前面加上一個(gè)const吧,就如最后的一個(gè)函數(shù)聲明一樣。 同時(shí)加上一個(gè)const還有一個(gè)好處,就是可以對常量進(jìn)行引用,若不加上const修飾符,引用是不能引用常量的。

二、++i和i++引申出的效率問題 看了上面的第一點(diǎn),你可能覺得,那不就是多調(diào)用了四個(gè)函數(shù)而已,你可能對此不屑一顧。那么來看看下面的例子,應(yīng)該會(huì)讓你大吃一驚。 至于整型變量的前加和后加的區(qū)別相信大家也是很清楚的。然而在這里我想跟大家談的卻是C++類的運(yùn)算符重載,為了與整形變量的用法一致,在C++中重載運(yùn)算符++時(shí)一般都會(huì)把前加和后加都重載。你可能會(huì)說,你在代碼中不會(huì)重載++運(yùn)算符,但是你敢說你沒有使用過類的++運(yùn)算符重載嗎?迭代器類你總使用過吧!可能到現(xiàn)在你還不是很懂我在說什么,那么就先看看下面的例子吧,是本人為鏈表寫的一個(gè)內(nèi)部迭代器。

_SingleList::Iterator& _SingleList::Iterator::Operator++()//前加{ pNote = pNote->pNext; return *this;}_SingleList::Iterator _SingleList::Iterator::operator++(int)//后加{ Iterator tmp(*this); pNote = pNote->pNext; return tmp;}

從后加的實(shí)現(xiàn)方式可以知道,對象利用自己創(chuàng)建一個(gè)臨時(shí)對象(自己在函數(shù)調(diào)用的一個(gè)復(fù)制),然后改變自己的狀態(tài),并返回這個(gè)臨時(shí)對象,而前加的實(shí)現(xiàn)方式時(shí),直接改變自己的內(nèi)部狀態(tài),并返回自己的引用。 從第一點(diǎn)的論述可以知道后加實(shí)現(xiàn)時(shí)會(huì)調(diào)用復(fù)制構(gòu)造函數(shù),在函數(shù)返回時(shí)還要調(diào)用析構(gòu)函數(shù),而由于前加實(shí)現(xiàn)方式直接改變對象的內(nèi)部狀態(tài),并返回自己的引用,至始至終也沒有創(chuàng)建新的對象,所以也就不會(huì)調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)。 然而更加糟糕的是,迭代器通常是用來遍歷容器的,它大多應(yīng)用在循環(huán)中,試想你的鏈表有100個(gè)元素,用下面的兩種方式遍歷:

for(_SingleList::Iterator it = list.begin(); it != list.end(); ++it){ //do something} for(_SingleList::Iterator it = list.begin(); it != list.end(); it++){ //do something}

如果你的習(xí)慣不好,寫了第二種形式,那么很不幸,做同樣的事情,就是因?yàn)橐粋€(gè)前加和一個(gè)后加的區(qū)別,你就要調(diào)用多200個(gè)函數(shù),其對效率的影響可就不可忽視了。

三、循環(huán)引發(fā)的討論1(循環(huán)內(nèi)定義,還是循環(huán)外定義對象) 請看下面的兩段代碼: 代碼1:

ClassTest CT;for(int i = 0; i < 100; ++i){ CT = a; //do something}

代碼2:

for(int i = 0; i < 100; ++i){ ClassTest CT = a; //do something}

你會(huì)覺得哪段代碼的運(yùn)行效率較高呢?代碼1科學(xué)家是代碼2?其實(shí)這種情況下,哪段代碼的效率更高是不確定的,或者說是由這個(gè)類ClassTest本向決定的,分析如下: 對于代碼1:需要調(diào)用ClassTest的構(gòu)造函數(shù)1次,賦值操作函數(shù)(operator=)100次;對于代碼2:需要高用(復(fù)制)構(gòu)造函數(shù)100次,析構(gòu)函數(shù)100次。 如果調(diào)用賦值操作函數(shù)的開銷比調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的總開銷小,則第一種效率高,否則第二種的效率高。

四、循環(huán)引發(fā)的討論2(避免過大的循環(huán)) 現(xiàn)在請看下面的兩段代碼, 代碼1:

for(int i = 0; i < n; ++i){ fun1(); fun2();}

代碼2:

for(int i = 0; i < n; ++i){ fun1();}for(int i = 0; i < n; ++i){ fun2();}注:這里的fun1()和fun2()是沒有關(guān)聯(lián)的,即兩段代碼所產(chǎn)生的結(jié)果是一樣的。

以代碼的層面上來看,似乎是代碼1的效率更高,因?yàn)楫吘勾a1少了n次的自加運(yùn)算和判斷,畢竟自加運(yùn)算和判斷也是需要時(shí)間的。但是現(xiàn)實(shí)真的是這樣嗎? 這就要看fun1和fun2這兩個(gè)函數(shù)的規(guī)模(或復(fù)雜性)了,如果這多個(gè)函數(shù)的代碼語句很少,則代碼1的運(yùn)行效率高一些,但是若fun1和fun2的語句有很多,規(guī)模較大,則代碼2的運(yùn)行效率會(huì)比代碼1顯著高得多。可能你不明白這是為什么,要說是為什么這要由計(jì)算機(jī)的硬件說起。 由于CPU只能從內(nèi)存在讀取數(shù)據(jù),而CPU的運(yùn)算速度遠(yuǎn)遠(yuǎn)大于內(nèi)存,所以為了提高程序的運(yùn)行速度有效地利用CPU的能力,在內(nèi)存與CPU之間有一個(gè)叫Cache的存儲(chǔ)器,它的速度接近CPU。而Cache中的數(shù)據(jù)是從內(nèi)存中加載而來的,這個(gè)過程需要訪問內(nèi)存,速度較慢。 這里先說說Cache的設(shè)計(jì)原理,就是時(shí)間局部性和空間局部性。時(shí)間局部性是指如果一個(gè)存儲(chǔ)單元被訪問,則可能該單元會(huì)很快被再次訪問,這是因?yàn)槌绦虼嬖谥h(huán)??臻g局部性是指如果一個(gè)儲(chǔ)存單元被訪問,則該單元鄰近的單元也可能很快被訪問,這是因?yàn)槌绦蛑写蟛糠种噶钍琼樞虼鎯?chǔ)、順序執(zhí)行的,數(shù)據(jù)也一般也是以向量、數(shù)組、樹、表等形式簇聚在一起的。 看到這里你可能已經(jīng)明白其中的原因了。沒錯(cuò),就是這樣!如果fun1和fun2的代碼量很大,例如都大于Cache的容量,則在代碼1中,就不能充分利用Cache了(由時(shí)間局部性和空間局部性可知),因?yàn)槊垦h(huán)一次,都要把Cache中的內(nèi)容踢出,重新從內(nèi)存中加載另一個(gè)函數(shù)的代碼指令和數(shù)據(jù),而代碼2則更很好地利用了Cache,利用兩個(gè)循環(huán)語句,每個(gè)循環(huán)所用到的數(shù)據(jù)幾乎都已加載到Cache中,每次循環(huán)都可從Cache中讀寫數(shù)據(jù),訪問內(nèi)存較少,速度較快,理論上來說只需要完全踢出fun1的數(shù)據(jù)1次即可。

五、局部變量VS靜態(tài)變量 很多人認(rèn)為局部變量在使用到時(shí)才會(huì)在內(nèi)存中分配儲(chǔ)存單元,而靜態(tài)變量在程序的一開始便存在于內(nèi)存中,所以使用靜態(tài)變量的效率應(yīng)該比局部變量高,其實(shí)這是一個(gè)誤區(qū),使用局部變量的效率比使用靜態(tài)變量要高。 這是因?yàn)榫植孔兞渴谴嬖谟诙褩V械?,對其空間的分配僅僅是修改一次esp寄存器的內(nèi)容即可(即使定義一組局部變量也是修改一次)。而局部變量存在于堆棧中最大的好處是,函數(shù)能重復(fù)使用內(nèi)存,當(dāng)一個(gè)函數(shù)調(diào)用完畢時(shí),退出程序堆棧,內(nèi)存空間被回收,當(dāng)新的函數(shù)被調(diào)用時(shí),局部變量又可以重新使用相同的地址。當(dāng)一塊數(shù)據(jù)被反復(fù)讀寫,其數(shù)據(jù)會(huì)留在CPU的一級緩存(Cache)中,訪問速度非???。而靜態(tài)變量卻不存在于堆棧中。 可以說靜態(tài)變量是低效的。

六、避免使用多重繼承 在C++中,支持多繼承,即一個(gè)子類可以有多個(gè)父類。書上都會(huì)跟我們說,多重繼承的復(fù)雜性和使用的困難,并告誡我們不要輕易使用多重繼承。其實(shí)多重繼承并不僅僅使程序和代碼變得更加復(fù)雜,還會(huì)影響程序的運(yùn)行效率。 這是因?yàn)樵贑++中每個(gè)對象都有一個(gè)this指針指向?qū)ο蟊旧?,而C++中類對成員變量的使用是通過this的地址加偏移量來計(jì)算的,而在多重繼承的情況下,這個(gè)計(jì)算會(huì)變量更加復(fù)雜,從而降低程序的運(yùn)行效率。而為了解決二義性,而使用虛基類的多重繼承對效率的影響更為嚴(yán)重,因?yàn)槠淅^承關(guān)系更加復(fù)雜和成員變量所屬的父類關(guān)系更加復(fù)雜。

七、盡量少使用dynamic_cast dynamic_cast的作用是進(jìn)行指針或引用的類型轉(zhuǎn)換,dynamic_cast的轉(zhuǎn)換需要目標(biāo)類型和源對象有一定的關(guān)系:繼承關(guān)系。 實(shí)現(xiàn)從子類到基類的指針轉(zhuǎn)換,實(shí)際上這種轉(zhuǎn)換是非常低效的,對程序的性能影響也比較大,不可大量使用,而且繼承關(guān)系越復(fù)雜,層次越深,其轉(zhuǎn)換時(shí)間開銷越大。在程序中應(yīng)該盡量減少使用。

八、減少除法運(yùn)算的使用 無論是整數(shù)還是浮點(diǎn)數(shù)運(yùn)算,除法都是一件運(yùn)算速度很慢的指令,在計(jì)算機(jī)中實(shí)現(xiàn)除法是比較復(fù)雜的。所以要減少除法運(yùn)算的次數(shù),下面介紹一些簡單方法來提高效率: 1、通過數(shù)學(xué)的方法,把除法變?yōu)槌朔ㄟ\(yùn)算,如if(a > b/c),如果a、b、c都是正數(shù),則可寫成if(a*c > b) 2、讓編譯器有優(yōu)化的余地,如里你要做的運(yùn)算是int型的n/8的話,寫成(unsigned)n/8有利于編譯器的優(yōu)化。而要讓編譯器有優(yōu)化的余地,則除數(shù)必須為常數(shù),而這也可以用const修飾一個(gè)變量來達(dá)到目的。

九、將小粒度函數(shù)聲明為內(nèi)聯(lián)函數(shù)(inline) 正如我們所知,調(diào)用函數(shù)是需要保護(hù)現(xiàn)場,為局部變量分配內(nèi)存,函數(shù)結(jié)束后還要恢復(fù)現(xiàn)場等開銷,而內(nèi)聯(lián)函數(shù)則是把它的代碼直接寫到調(diào)用函數(shù)處,所以不需要這些開銷,但會(huì)使程序的源代碼長度變大。 所以若是小粒度的函數(shù),如下面的Max函數(shù),由于不需要調(diào)用普通函數(shù)的開銷,所以可以提高程序的效率。

int Max(int a, int b){ return a>b?a:b;}

十、多用直接初始化 與直接初始化對應(yīng)的是復(fù)制初始化,什么是直接初始化?什么又是復(fù)制初始化?舉個(gè)簡單的例子,

ClassTest ct1;ClassTest ct2(ct1); //直接初始化ClassTest ct3 = ct1; //復(fù)制初始化

那么直接初始化與復(fù)制初始化又有什么不同呢?直接初始化是直接以一個(gè)對象來構(gòu)造另一個(gè)對象,如用ct1來構(gòu)造ct2,復(fù)制初始化是先構(gòu)造一個(gè)對象,再把另一個(gè)對象值復(fù)制給這個(gè)對象,如先構(gòu)造一個(gè)對象ct3,再把ct1中的成員變量的值復(fù)制給ct3,從這里,可以看出直接初始化的效率更高一點(diǎn),而且使用直接初始化還是一個(gè)好處,就是對于不能進(jìn)行復(fù)制操作的對象,如流對象,是不能使用賦值初始化的,只能進(jìn)行直接初始化。可能我說得不太清楚,那么下面就引用一下經(jīng)典吧! 以下是PRimer是的原話: “當(dāng)用于類類型對象時(shí),初始化的復(fù)制形式和直接形式有所不同:直接初始化直接調(diào)用與實(shí)參匹配的構(gòu)造函數(shù),復(fù)制初始化總是調(diào)用復(fù)制構(gòu)造函數(shù)。復(fù)制初始化首先使用指定構(gòu)造函數(shù)創(chuàng)建一個(gè)臨時(shí)對象,然后用復(fù)制構(gòu)造函數(shù)將那個(gè)臨時(shí)對象復(fù)制到正在創(chuàng)建的對象”,還有一段這樣說,“通常直接初始化和復(fù)制初始化僅在低級別優(yōu)化上存在差異,然而,對于不支持復(fù)制的類型,或者使用非explicit構(gòu)造函數(shù)的時(shí)候,它們有本質(zhì)區(qū)別:

ifstream file1("filename")://ok:direct initializationifstream file2 = "filename";//error:copy constructor is private

注:如還對直接初始化和復(fù)制初始化有疑問,可以參考一下前面的一篇文章: C++直接初始化與復(fù)制初始化的區(qū)別深入解析,里面有有關(guān)直接初始化和復(fù)制初始化的詳細(xì)解釋。 補(bǔ)充: 這里只是一點(diǎn)點(diǎn)的建議,雖然說了這么多,但是還是要說一下的就是:要避免不必要的優(yōu)化,避免不成熟的優(yōu)化,不成熟的優(yōu)化的是錯(cuò)誤的來源,因?yàn)榫幾g器會(huì)為你做很多你所不知道的優(yōu)化。 希望本文所述對提高大家C++程序設(shè)計(jì)效率能有所幫助。

轉(zhuǎn)載自:http://www.jb51.net/article/54792.htm

方法補(bǔ)充:

十一、推遲定義本地變量 雖然C語言中標(biāo)準(zhǔn)是將變量統(tǒng)一定義在開頭,但是在C++中最好放棄這種做法,因?yàn)檫@會(huì)帶來不必要的開銷,而且費(fèi)時(shí)費(fèi)力。 定義一個(gè)對象變量通常需要調(diào)用一次函數(shù)(構(gòu)造函數(shù))。如果一個(gè)變量只在某些情況下需要(例如在一個(gè)if聲明語句內(nèi)),僅在其需要的時(shí)候定義,這樣,構(gòu)造函數(shù)僅在其被使用的時(shí)候調(diào)用。 并且,推遲變量的定義會(huì)提高程序的效率,增強(qiáng)程序的可讀性,形成更好的可視性。

十二、在一大段內(nèi)存進(jìn)行初始化時(shí),盡量使用memset,例如數(shù)組的多次初始化

十三、如果程序中cout使用次數(shù)很少或只用一次,則可以使用std::cout來節(jié)省空間。因?yàn)檫@樣比導(dǎo)入整個(gè)命名空間更經(jīng)濟(jì)

十四、對于類的對象返回引用比返回對象的效率要高。 因?yàn)椴粫?huì)調(diào)用拷貝構(gòu)造函數(shù),生成臨時(shí)對象;但是特別注意臨時(shí)對象和局部變量不能返回引用;


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

18深夜视频在线观看| 96国产粉嫩美女| av免费播放网站| 男女性激情视频在线观看| 欧美在线视频全部完| 91精品国产欧美一区二区成人| 国产精品久久久久毛片| 日韩精品一区二区三区国语自制| 成人午夜激情免费视频| gogogo高清免费观看在线视频| 四虎地址8848jia| 国产成人天天5g影院| 亚洲一区区二区| 欧美视频第一| 久久99国产精品久久久久久久久| 美女扒开腿让男人桶爽久久动漫| 一区二区三区黄色| 欧美国产日韩一二三区| 久久精品视频在线| 影音av在线| 久久精品国产亚洲av麻豆| 欧美13一14另类| 黄色亚洲精品| 国产精品第八页| 可以直接在线观看的av| 久久久9色精品国产一区二区三区| 久久综合av免费| 免费a级人成a大片在线观看| 国产精品久久久久久久天堂第1集| 日韩欧美高清在线播放| 中文字幕在线观看的网站| 色综合天天综合色综合av| 成人a'v在线播放| 国产乡下妇女三片| 韩国中文字幕在线| 99久久99久久精品免费看蜜桃| 女人天堂av在线播放| 18av在线播放| 亚洲午夜av| 欧美激情在线看| 日韩成人精品视频在线观看| 91美女片黄在线观| 99久精品视频在线观看视频| 国产视频高清免费| 国产免费黄色片| 国产亚洲精品久久久久久| 欧美暴力喷水在线| 欧洲在线视频| 91精品国产高清久久久久久91裸体| 国内精品写真在线观看| freesex欧美| 日本韩国欧美在线观看| 欧美男人的天堂| 国产二区不卡| www.在线观看av| 日韩电影在线观看电影| 宅男噜噜噜66国产精品免费| 男人天堂午夜在线| 日本少妇在线观看| 国产精欧美一区二区三区| 久久久国产精品网站| 无码人妻av一区二区三区波多野| 最近2019免费中文字幕视频三| 九九热免费视频| 亚洲欧美不卡| 国产欧美一区二区三区国产幕精品| 在线免费看黄| 欧美最猛性xxxxx喷水| 男女av在线| 丰满少妇乱子伦精品看片| 91超碰在线电影| 日韩美女免费视频| 99久久777色| 最新电影电视剧在线观看免费观看| 亚洲午夜av在线| 大香伊人中文字幕精品| 欧美亚洲国产一区二区三区| 国产亚洲美女精品久久久| 久久久91精品国产一区二区三区| 激情欧美日韩一区二区| 亚洲国产1区| 日韩伦理电影网站| 精品国产乱码久久久久久108| 中文字幕日韩第一页| www.av天天| 丰满少妇久久久久久久| 三级在线视频| 亚洲国产尤物| 欧美日免费三级在线| 久久精品久久久精品美女| 国产精品日韩一区二区三区| 成人www视频网站免费观看| 国产91丝袜在线播放九色| 永久免费看mv网站入口78| 粉嫩av一区二区三区免费观看| 国内精品一区二区三区四区| www三级免费| 久久成人激情视频| 97人妻人人澡人人爽人人精品| 亚洲色图官网| 最近中文字幕2019第二页视频| 精品久久久久久久久中文字幕| 意大利激情丛林无删减版dvd| 一区二区三区精品久久久| 在线电影欧美日韩一区二区私密| 日韩大片在线永久免费观看网站| 欧美激情国产在线| 韩国精品主播一区二区在线观看| 精品婷婷伊人一区三区三| 久久久久亚洲av无码麻豆| 性欧美在线看片a免费观看| 毛片av免费在线观看| 久久av偷拍| 国产午夜精品视频免费不卡69堂| 视频一区视频二区中文| 三级小视频在线观看| 免费久久99精品国产自| 日韩一级免费看| 国产精品久久久久久久久久齐齐| 开心色怡人综合网站| 青青一区二区| 怡红院男人天堂| 亚洲国产精品综合小说图片区| 不卡免费追剧大全电视剧网站| 这里只有精品在线| 免费看的黄色网| 懂色av蜜臀av粉嫩av永久| 国产口爆吞精一区二区| 亚洲伦理精品| 中文字幕在线观看不卡视频| 国产成人久久精品77777综合| 精品欧美一区二区久久久| 亚洲精品一区二区三区香蕉| 99视频一区| 6080午夜伦理| 国产精品久久久久久久久久久久久久久| 日本韩国精品一区二区在线观看| 天天影视涩香欲综合网| 欧美变态凌虐bdsm| 精品黑人一区二区三区观看时间| 中文字幕日韩av| 国产无遮挡免费视频| 精品一区二区不卡| 成人午夜视频在线观看免费| 在线观看日韩精品视频| 操操操综合网| 欧美日韩亚洲综合一区二区三区激情在线| 国产精品扒开腿做爽爽爽视频软件| 国产精品成人免费视频| 国产激情在线播放| 天堂中文视频在线| 性高湖久久久久久久久| 爱情岛论坛亚洲品质自拍视频网站| 黑人巨大精品一区二区在线| 麻豆影院在线观看| 中文字幕在线中文字幕日亚韩一区| 亚洲国产精品视频在线| 加勒比av一区二区| 黄网站色视频免费观看| 可以免费观看的黄色网址| 制服丝袜专区在线| 久久6免费高清热精品| 亚洲毛片网站| 中日韩脚交footjobhd| 成人情趣视频| 国产微拍精品一区| 视频91a欧美| 欧美大胆a视频| 樱花草国产18久久久久| 中文在线аv在线| 50路60路老熟妇啪啪| 色婷婷狠狠18| av一级在线观看| 欧美大片免费久久精品三p| 成人黄动漫网站免费| 99re热在线观看| 国产黄色在线播放| 久久久久久久久久久影院| 黄色一级片av| 99久久精品久久久久久清纯| 黄色一级视频免费看| 99久久久久国产精品| 久久久久久美女| 麻豆国产欧美日韩综合精品二区| 六月婷婷七月丁香| 亚洲国产精品久久久久久6q| 亚洲精品一区二区三区网址| 韩国三级电影久久久久久| 精品国产18久久久久久洗澡| 欧洲综合视频| 精品无人国产偷自产在线| 精品粉嫩aⅴ一区二区三区四区| 国产婷婷97碰碰久久人人蜜臀| 深爱五月激情五月| 国内精品久久99人妻无码| 久久久亚洲福利精品午夜| 九色91国产| 丁香一区二区三区| 视频精品一区| 亚洲精品美女在线| 国产91精品入口| 亚洲 欧美 自拍偷拍| 一本色道久久88亚洲精品综合| 欧美一区二区三区精品| 国产欧美日韩精品丝袜高跟鞋| 99riav国产| 人妻 丝袜美腿 中文字幕| 国产午夜精品理论片a级探花| 日韩亚洲国产精品| 欧美日韩不卡一区| 少妇人妻精品一区二区三区| 国产一级淫片免费| 黄页免费在线观看视频| 深夜视频一区二区| 99精品国产高清一区二区| 亚洲天堂成人网| 日韩欧美精品在线| 国产va免费精品高清在线观看| 婷婷亚洲一区二区三区| 懂色av成人一区二区三区| 欧美一区2区| 成人精品视频一区二区三区| 中文字幕91视频| 久久国产精品影视| 一卡二卡在线观看| 国产精品一区二区电影| segui88久久综合9999| 蜜桃传媒视频麻豆一区| 一本到高清视频免费精品| 真实乱视频国产免费观看| 一道本一区二区| 五月花成人网| sese一区| 亚洲色图综合网| 欧美精品免费观看二区| 在线小视频网址| 高清av一区| 五月天婷婷基地| 男人的天堂在线视频免费观看| 一二三四国产精品| 浮力国产第一页| 三年中国国语在线播放免费| 91传媒视频在线播放| 久久综合狠狠综合久久综青草| 精品国产免费久久| 欧美国产成人精品一区二区三区| 国产成人免费视频网站视频社区| 一本大道久久精品| 香蕉视频在线观看黄| 成人97精品毛片免费看| 欧美一区二区三区免费大片| 久久蜜桃资源一区二区老牛| 来吧亚洲综合网| 先锋影音中文字幕| 日韩精品中文字幕久久臀| www.av在线| 日本tube24xxxxx| 人妻 日韩精品 中文字幕| 性金发美女69hd大尺寸| 韩国av电影免费观看| 亚洲av网址在线| 久操精品在线| 精品国产白色丝袜高跟鞋| 日韩精品乱码免费| 一色桃子av在线| 高清乱码免费看污| 天堂在线视频观看| 3atv一区二区三区| 欧美色xxxx| 91短视频版在线观看www免费| 淫片在线观看| 成午夜精品一区二区三区软件| 免费看污视频的网站| 伊人亚洲福利一区二区三区| 日韩在线三区| 国产亚洲精品久久久优势| 久久久久久久久久久国产精品| 日本美女一区二区| jzzjzzjzz亚洲成熟少妇| 欧美乱大交xxxxx另类| 亚洲区小说区图片区qvod| 久久久美女视频| 你懂的一区二区| 日韩欧美精品三级| 国产第一页在线观看| 欧美亚洲国产一区二区三区va| 中国特级黄色片| 欧美专区18| 欧美区二区三区| 欧美壮男野外gaytube| 西西444www无码大胆| 正在播放一区二区| 91大神福利视频在线| 伊人青青综合网站| 免费国产h视频在线观看86| 精品久久亚洲一级α| 久久精选视频| 中国视频免男男gay| 911国产网站尤物在线观看| 五月激情综合| 一区二区三区日韩在线| 午夜精品久久久久久久99水蜜桃| 亚洲国语精品自产拍在线观看| 黄色av网址在线播放| 中文字幕日韩在线观看| 熟女俱乐部一区二区| 天堂网av成人| 日韩av免费在线看| 婷婷社区五月天| 97超级在线观看免费高清完整版电视剧| 热色播在线视频| 色综合97天天综合网| 久久久九九九热| 婷婷夜色潮精品综合在线| 色先锋资源在线播放av| 欧美美女在线直播| 国产制服91一区二区三区制服| 国产日韩欧美电影在线观看| 中文乱码字幕高清一区二区| 国产精品网友自拍| 国产欧美日韩一区二区三区在线观看| 午夜精品一区二区三区视频免费看| 少妇人妻互换不带套| 青青操免费在线视频| 欧美网站在线观看| 少妇又紧又色又爽又刺激视频| 日韩制服丝袜av| 手机av免费在线观看|