精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

優(yōu)化C++代碼(4):消除冗余代碼

開發(fā) 后端
這篇文章講述了消除冗余代碼(Dead Code Elimination)的優(yōu)化方法,我簡寫為DCE。顧名思義:只要其計算結(jié)果沒有被程序所使用, 該計算就被丟棄。

這篇文章講述了消除冗余代碼(Dead Code Elimination)的優(yōu)化方法,我簡寫為DCE。顧名思義:只要其計算結(jié)果沒有被程序所使用, 該計算就被丟棄。

這時你可能會說,你的代碼只會計算有用的結(jié)果,從沒有無用的東西,只有白癡才會平白無故地添加那些無用的代碼—–例如,會在做一些有用事情的同時,還在計算著圓周率的前1000位。那么消除冗余代碼的優(yōu)化,到底什么時候才有用呢?

我之所以這么早就開始講述DCE的優(yōu)化,是因為如果不清楚DCE的話,在探索其他一些更有趣的優(yōu)化方法中會造成一些破壞和混亂。看一下下面的小例子,文件Sum.cpp:

  1. int main() { 
  2.     long long s = 0; 
  3.     for (long long i = 1; i <= 1000000000; ++i) s += i; 
  4. }

我們對于在計算這十億個數(shù)的和時,循環(huán)的執(zhí)行速度很感興趣。(的確,這種做法太愚蠢了,我們高中時就學過有一個閉公式可以計算出結(jié)果,但這不是重點)

使用命令 CL /Od /FA Sum.cpp 來 構(gòu)建這個程序,并用Sum命令來運行程序。注意這個構(gòu)建使用/Od開關(guān)禁用了代碼優(yōu)化。 在我的PC機上,運行這個程序花費了4秒。 現(xiàn)在試著使用CL /O2 /FA Sum.cpp 來編譯優(yōu)化過的代碼。這次運行很快,幾乎察覺不到有延遲。編譯器對我們的代碼的優(yōu)化有這么出色嗎?答案是否定的(但它的確是以一種奇怪的方式改變了我們的 代碼)

我們看一下/Od版本生成的代碼,它保存在Sum.asm里。我精減了一些代碼并注釋了一些文本,讓它只顯示循環(huán)體:

這些指令跟你預料中的差不多。 變量i保存以在RSP為寄存器,i$1為偏移量的棧上;在asm文件的其他地方,我們發(fā)現(xiàn)i$1=0.  使用RAX寄存器讓i自增長。同樣地,變量s保存在RSP為寄存器,S$為偏移量的棧上,s$=8.  并在RCX中來計算每次循環(huán)的累積和。

我們注意到每次循環(huán)時,先從棧上獲取i的值,再把新值寫回去,變量s同樣如此。可以說這段代碼很幼稚—–它是由很愚蠢的編譯器生成的(也就說,優(yōu)化被禁用了)。 例如,我們本來可以將變量i和s一直保存在寄存器中,而不用每次循環(huán)迭代時都要訪問內(nèi)存。

關(guān)于未優(yōu)化的代碼就說這么多了。那么進行優(yōu)化后所生成代碼是什么樣呢? 來看一下使用/O2構(gòu)建的程序?qū)?yīng)的Sum.asm文件,再一次把文件精簡到只剩下循環(huán)體的實現(xiàn),

結(jié)果是:

  1. ;; there’s nothing here! 

對,它是空的,沒有任何計算s的指令。

你可能會說,那這個答案肯定錯了.但是我們怎么知道這個答案就是錯的呢?因為優(yōu)化器已經(jīng)推斷出程序在任何時候都沒用到S, 所以才懶得計算它。你不能說答案是錯的,除非你需要核對該答案,對吧?

我們這不是被DCE優(yōu)化給耍了嗎? 如果你不需要觀察計算結(jié)果,程序是不會進行計算的。

優(yōu)化器的這個問題其實跟量子物理學的基本原理很類似,可以用大眾科普文章里經(jīng)常提到的一句話來解釋,“如果森林里一棵樹倒下了,但是如果周圍都沒人,它還會有聲音嗎?”。

我們可以在代碼里添加打印變量s的語句來觀察計算結(jié)果,代碼如下:

  1. #include <stdio.h> 
  2. int main() { 
  3.     long long s = 0; 
  4.     for (long long i = 1; i <= 1000000000; ++i) s += i; 
  5.     printf("%lld ", s); 

運行/Od版本的程序打印出了正確結(jié)果,還是花費了4秒,/O2版本打印出同樣的結(jié)果,速度卻快得多(具體快多少,可以看下下面的可選部分,實際上,速度高達7倍多)。

到現(xiàn)在為止,我已經(jīng)講述了這篇文章的主要觀點:在進行編譯器優(yōu)化分析的時候一定要十分小心,衡量它們的優(yōu)點時,千萬不要被DCE給誤導了。 下面是使用DCE優(yōu)化時需要注意的四個步驟:

  1. 檢查計時,確保沒有突然提高一個數(shù)量級;
  2. 檢查生成的代碼(使用 /FA)
  3. 如果不太確定,可以添加一個printf語句
  4.  把你感興趣的代碼放到一個獨立的.CPP文件里,和含有main函數(shù)的文件分開。只要你不進行整個程序的優(yōu)化,就一定會奏效(使用/GL,我們后面會講到)。

不管怎么樣,我們從這個例子中還是學到了一些很有意思的東西,下面四個小節(jié)為可選部分。

  1. xor    edx, edx 
  2. mov    eax, 1 
  3. mov    ecx, edx 
  4. mov    r8d, edx 
  5. mov    r9d, edx 
  6. npad   13 
  7. $LL3@main: 
  8. inc    r9 
  9. add    r8, 2 
  10. add    rcx, 3 
  11. add    r9, rax                           ;; r9  = 2  8 18 32 50 ... 
  12. add    r8, rax                           ;; r8  = 3 10 21 36 55 ... 
  13. add    rcx, rax                          ;; rcx = 4 12 24 40 60 ... 
  14. add    rdx, rax                          ;; rdx = 1  6 15 28 45 ... 
  15. add    rax, 4                            ;; rax = 1  5  9 13 17 ... 
  16. cmp    rax, 1000000000                   ;; i <= 1000000000 ? 
  17. jle    SHORT $LL3@main                   ;; yes, so loop back 

注意看循環(huán)體包含了和未優(yōu)化版本一樣多的指令,為什么會快很多呢?那是因為優(yōu)化后的循環(huán)體的指令使用的是寄存器,而不是內(nèi)存地址。 我們都知道,寄存器的訪問速度比內(nèi)存快得多。 下面的延遲就展示了內(nèi)存訪問時如何將你的程序降到蝸牛般的速度:

Location

延時

Register

1 cycle

L1

4 cycles

L2

10 cycles

L3

75 cycles

DRAM

60 ns

所以,未優(yōu)化版本是在棧上進行讀寫的,比起在寄存器中進行計算慢多了(寄存器的存取時間只需一個周期)。

但是還有其他原因的,注意/Od版本的執(zhí)行循環(huán)的時候計數(shù)器每次加1,/O2版本的計數(shù)器(保存在RAX寄存器中)每次加4。

優(yōu)化器已經(jīng)展開循環(huán),每次迭代都會把四項加起來,像這樣:

s = (1 + 2 + 3 + 4) + (5 + 6 + 7 + 8) + (9 + 10 + 11 + 12) + (13 + . . .

通過展開這個循環(huán),可以看到每四次迭代才對循環(huán)做一個判斷,而不是每次都進行判斷,這樣CPU可以節(jié)省更多的時間做一些有用的事,而不是在不停地進行循環(huán)判斷。

還有,它不是將結(jié)果存在一個地方,而是使用了四個獨立的寄存器,分別求和,像這樣:

RDX = 1 + 5 +  9 + 13 + ...  =  1,  6, 15, 28 ...
R9  = 2 + 6 + 10 + 14 + ...  =  2,  8, 18, 32 ...
R8  = 3 + 7 + 11 + 15 + ...  =  3, 10, 21, 36 ...
RCX = 4 + 8 + 12 + 16 + ...  =  4, 12, 24, 40 ...

循環(huán)結(jié)束時,再把四個寄存器的和加起來,得到最終結(jié)果。

(讀者朋友們可以思考下這個練習,如果循環(huán)總數(shù)不是4的倍數(shù),那優(yōu)化器會怎么處理?)

可選2: 精確的性能測試

之前,我在沒有使用printf函數(shù)的/O2版本的程序中說過,“運行速度之快以致于你察覺不到有任何延遲”, 下面就用一個例子更準確地描述下這種說法:

  1. #include <stdio.h> 
  2. #include <windows.h> 
  3. int main() { 
  4.   LARGE_INTEGER start, stop; 
  5.   QueryPerformanceCounter(&start); 
  6.     long long s = 0; 
  7.     for (long long i = 1; i <= 1000000000; ++i) s += i; 
  8.   QueryPerformanceCounter(&stop); 
  9.   double diff = stop.QuadPart - start.QuadPart; 
  10.   printf("%f", diff); 

程序中使用了QueryPerformanceCounter 來計算運行時間(這就是我之前的博客里寫到的精簡版本的高分辨率計時器)。 在測量性能的時候,心中一定謹記一些注意事項(我以前有寫過一個列表),但是對這個特殊的例子,其實也沒什么用,我們一會兒就能看到:

  我在PC機上運行了/Od版本的程序,打印diff的值,大約為7百萬。(計算結(jié)果的單位并不重要,只需知道 這個值越大,程序運行的時間就越長)。而/O2版本,diff的值則為0.原因就得歸功于DCE優(yōu)化了。

我們?yōu)榱俗柚笵CE,添加一個printf函數(shù),/Od版本的diff值大約為1百萬—-速度提升了7倍。

可選3:x64 匯編程序 “擴展”

我們在回頭看看文章里的匯編代碼部分,在初始化寄存器部分,會發(fā)現(xiàn)有點奇怪:

  1. xor    edx, edx                          ;; rdx = 0     (64-bit!) 
  2. mov    eax, 1                            ;; rax = i = 1 (64-bit!) 
  3. mov    ecx, edx                          ;; rcx = 0     (64-bit!) 
  4. mov    r8d, edx                          ;; r8  = 0     (64-bit!) 
  5. mov    r9d, edx                          ;; r9  = 0     (64-bit!) 
  6. npad   13                                ;; multi-byte nop alignment padding 
  7. $LL3@main: 

記得原始C++語言會使用long long類型的變量來保存循環(huán)計數(shù)器和總和。 在VC++編譯器中,會映射成64位的整數(shù),所以我們會料到生成碼應(yīng)該會用x64的64位寄存器。

上一篇文章中,我已經(jīng)講過了,指令xor  reg reg是 用來將reg的值置為0的一種高效的方法。但是第一條指令是在對EDX寄存器(RDX寄存器的低32位字節(jié))進行xor運算,下一條指令是將 EAX(也就是RAX寄存器的低32位字節(jié))賦值為1。下面的三條指令也是同樣的方式。從表面來看,這樣每一個目標寄存器的高32位字節(jié)都存儲的是一個任 意的隨機數(shù),而循環(huán)體的計算部分是在擴展的64位寄存器上進行的,這樣的計算結(jié)果怎么可能是對的?

答案是因為最初由AMD發(fā)布的x64位指令集,會將64位的目標寄存器的高32位字節(jié)自動擴展為零。 下面是該手冊的3.4.5小節(jié)的兩個知識點:

1. 32位寄存器的零擴展: 如果寄存器為32位,自動將通用目標寄存器的高32位擴展為零。

2. 8位和16位字節(jié)寄存器 無擴展: 如果是8位和16位寄存器,則不對64位通用寄存器做改變。

最后,注意一下npad 13 這條指令(其實是一個偽操作,一條匯編指令)。用來確保下一條指令(從循環(huán)體開始)遵循16字節(jié)的內(nèi)存對齊,可以提高性能(有時,用于微架構(gòu))。

可選4:  printf 和 std::out

 你也許會問,在上個實驗中,為什么我使用了C的printf函數(shù),而不是C++的std::out呢? 試試看,其實兩者都可以,但是后者生成的asm文件要大很多,所以瀏覽起來不太方便: 相比前面的1.7K字節(jié)文件, 后者生成的文件達0.7M 字節(jié)。

原文鏈接:http://blog.jobbole.com/47231/

譯文鏈接:http://blog.jobbole.com/47231/

責任編輯:陳四芳 來源: 伯樂在線
相關(guān)推薦

2012-07-27 10:30:12

重構(gòu)

2020-11-10 08:54:55

Lombok

2013-09-04 09:55:32

C++

2013-09-03 09:35:10

2010-01-13 13:27:00

C++優(yōu)化

2024-01-25 16:19:27

2010-01-14 14:40:21

C++代碼

2010-01-18 16:17:53

C++代碼

2023-10-30 10:29:50

C++最小二乘法

2023-11-15 17:58:58

C++代碼

2020-07-07 10:55:01

C++C語言代碼

2010-01-18 13:42:51

C++代碼

2010-02-05 10:23:09

C++基本函數(shù)

2010-02-02 15:59:32

C++賦值函數(shù)

2010-01-22 13:45:36

C++代碼

2013-09-03 09:30:42

C++代碼優(yōu)化

2011-05-18 17:56:38

C#C++

2011-05-18 18:05:47

C#C++

2010-01-21 10:23:53

C++代碼

2010-02-04 09:33:08

C++指針重載
點贊
收藏

51CTO技術(shù)棧公眾號

黑森林av导航| 欧美体内she精视频| 成人网在线视频| 天天干中文字幕| 爱爱精品视频| 亚洲激情综合网| 国产成人成网站在线播放青青| 免费人成年激情视频在线观看| 精品综合久久88少妇激情| 中文字幕视频一区| 成人在线免费观看一区| 香蕉视频一区二区| 精品国产精品久久一区免费式| 色婷婷国产精品久久包臀| 久久久精品动漫| 在线免费av网| 亚洲二区精品| 欧美一二区视频| 又粗又黑又大的吊av| 国产香蕉视频在线看| 久久99精品久久久久久动态图| 欧美xxxx18性欧美| 久久久精品视频国产| а√天堂中文资源在线bt| 国产日韩av一区| 日韩免费在线视频| 97精品在线播放| 免费成人蒂法| 国产在线一区不卡| 成人动漫精品一区二区| 国产成人jvid在线播放| 天天综合天天做| 97视频一区| 欧美亚洲一区二区在线观看| 国产资源第一页| 天天操天天爱天天干| 精品一区二区在线免费观看| 欧日韩在线观看| 欧美h片在线观看| 西野翔中文久久精品字幕| 欧美剧情片在线观看| 欧美黑人经典片免费观看| 男女视频在线观看| 国内成人免费视频| 国产精品久久9| 黄色在线观看国产| 黑人一区二区| 久久躁日日躁aaaaxxxx| 精品人妻无码一区| 欧美国产极品| 精品国产成人系列| 污免费在线观看| 精品久久久网| 狠狠躁夜夜躁人人爽天天天天97| 国产av第一区| 免费a级在线播放| 日本在线播放一区二区三区| 91成人在线视频| 亚洲色偷偷综合亚洲av伊人| 日韩极品在线| 亚洲国产成人在线视频| 亚洲少妇一区二区| 久久久加勒比| 欧美在线看片a免费观看| 日韩欧美一区三区| 免费在线小视频| 亚洲精品国产视频| 亚洲精品中文字幕在线| 99er在线视频| 中文字幕乱伦视频| 蜜桃av一区| 国产成人欧美在线观看| www成人在线| 午夜精品999| 欧美成人精品三级在线观看| 看免费黄色录像| 欧美激情精品久久久六区热门| 亚洲性视频网站| 一区二区黄色片| 欧洲美女日日| 色婷婷av一区二区三区久久| 美女三级黄色片| 欧美1区2区3区| 欧美肥老妇视频| 唐朝av高清盛宴| 18成人免费观看视频| 高清欧美电影在线| 中文字幕精品三级久久久| 亚洲国产一区二区三区a毛片| 午夜精品久久久久久99热| 亚洲第一在线播放| 99精品久久| 国产精品com| 国产男男gay体育生白袜| 国产资源在线一区| 91精品视频免费| 国产情侣自拍小视频| 国产在线国偷精品免费看| 高清av免费一区中文字幕| 人妻妺妺窝人体色www聚色窝| 91网站最新网址| 视频一区免费观看| 午夜伦全在线观看| 亚洲欧洲精品天堂一级| 欧美日韩福利在线| 欧美www.| 欧美日韩一区不卡| 国产伦精品一区二区三区88av| 久久悠悠精品综合网| 一区二区三区无码高清视频| 污软件在线观看| 涩涩av在线| 国内综合精品午夜久久资源| 欧美激情视频网址| 无码一区二区三区在线观看| 国内外成人在线视频| 黄色99视频| av午夜在线| 亚洲天堂网中文字| 国产一区二区在线视频播放| 亚洲精品乱码日韩| 亚洲国产精品网站| 女尊高h男高潮呻吟| 亚洲九九视频| 8090成年在线看片午夜| 精品人妻一区二区三区潮喷在线| 美腿丝袜亚洲一区| 久久国产精品一区二区三区| 久cao在线| 欧美日韩一区二区免费在线观看| 亚洲 激情 在线| 偷拍亚洲精品| 欧美华人在线视频| 五月天激情四射| 国产一区二区三区免费看| 国产精品一区二区三区四区五区 | 国产日韩欧美a| 99久久免费观看| 日韩综合av| 欧美日韩精品一区二区在线播放| 精品国产免费久久久久久婷婷| 一呦二呦三呦国产精品| 美女黄色丝袜一区| 最近中文在线观看| 国产福利精品一区二区| 国产精品一区二区不卡视频| 成人免费网址| 欧美人狂配大交3d怪物一区| 人人妻人人澡人人爽人人精品| 999久久久91| 国产精品亚洲аv天堂网| 亚洲av片一区二区三区| 日韩一级精品| 亚洲第一在线综合网站| 日本三级免费观看| 亚洲网址在线观看| 欧美成人午夜视频| 国产精品毛片一区二区在线看舒淇| 99视频一区二区| 国产激情片在线观看| 四虎永久精品在线| 精品久久久999| 中文字幕 视频一区| 国产午夜精品福利| 日本免费不卡一区二区| 牛牛影视久久网| 欧美中文字幕第一页| 六月婷婷中文字幕| 亚洲va天堂va国产va久| 国产成人av片| 一本色道久久综合亚洲精品不卡 | 亚洲精品国产91| 久久美女性网| 日本不卡久久| 欧美aaa视频| 亚洲欧洲日产国码av系列天堂| 天堂中文在线网| 99精品欧美一区二区蜜桃免费| 一区二区视频在线播放| 日韩毛片网站| 欧美刺激性大交免费视频| 国产精品乱码久久久| 亚洲精品写真福利| 老司机久久精品| 国产日韩欧美一区二区三区| 国产精品久久久久久久午夜| 国产在线视频福利| 欧美精品久久久久久久久老牛影院| 久久只有这里有精品| 免费在线观看成人| 午夜免费电影一区在线观看| 国产精品igao视频网网址不卡日韩| 欧美大码xxxx| 狠狠躁夜夜躁av无码中文幕| 亚洲国产裸拍裸体视频在线观看乱了 | yellow视频在线观看一区二区| 亚洲国产无线乱码在线观看| 国产精品免费视频网站| 成人做爰69片免费| 日韩电影免费在线| 亚洲精品国产精品国自产观看 | 国产精选一区二区| 激情开心成人网| 久久97精品久久久久久久不卡| 亚洲三区在线播放| 在线观看免费亚洲| 日本中文字幕网| 亚洲人一二三区| 欧美性生交xxxxx| 美国三级日本三级久久99| 国产精品自拍片| 日韩理论在线| 精品日产一区2区三区黄免费| 国产精品成人**免费视频| 国产精品18久久久久久麻辣| 草美女在线观看| 色小说视频一区| 国产在线资源| 亚洲精美色品网站| 亚洲国产成人在线观看| 欧美日韩精品欧美日韩精品一综合| 国产一级中文字幕| 亚洲欧美成aⅴ人在线观看| jizz中文字幕| 26uuu国产日韩综合| 美女久久久久久久久| 日韩中文字幕91| 男人天堂999| 在线观看一区视频| av动漫在线免费观看| 欧美激情黄色片| 色播五月综合| 激情五月综合网| 欧美精品与人动性物交免费看| 精品视频高潮| www.久久久| 99re8这里有精品热视频8在线| 91探花福利精品国产自产在线| 久久婷婷五月综合色丁香| 国产精品久久久久久久久久99 | 久久偷拍免费视频| 成人毛片视频在线观看| 国产精品成人免费一区久久羞羞| av男人的天堂在线| 狠狠色噜噜狠狠狠狠97| 五月婷婷激情网| 一区二区三区 在线观看视频| 中国美女黄色一级片| 欧美国产精品一区| 色www亚洲国产阿娇yao| 国产精品久久久久久久久搜平片| 午夜激情福利电影| 久久麻豆一区二区| 国产伦理片在线观看| 国产精品麻豆视频| 免费黄色激情视频| 亚洲日本在线天堂| 欧美日韩免费做爰视频| 亚洲综合一二三区| 91香蕉在线视频| 精品国产福利在线| 中文字幕亚洲精品在线| 午夜精品久久久久久久久久久| 日本少妇在线观看| 色综合天天综合网天天看片| 夜夜爽妓女8888视频免费观看| 在线免费观看一区| 艳妇乳肉豪妇荡乳av| 欧美一区二区三区免费视频| 精品黑人一区二区三区在线观看| 精品伦理精品一区| 香蕉视频网站在线| 亚洲欧洲国产伦综合| avav免费在线观看| 欧美日本亚洲视频| 综合日韩av| 国产精自产拍久久久久久| 国产一区二区三区视频在线| 国产另类自拍| 日韩大胆成人| 欧美一区二视频| 一级性生活大片| 国产精品拍天天在线| 婷婷伊人五月天| 激情av一区二区| 中文字幕一二区| 制服丝袜在线91| www.五月天激情| 欧美成人欧美edvon| 男人av在线| 欧美裸体xxxx极品少妇| 欧美freesex黑人又粗又大| 国产精品视频专区| 伊色综合久久之综合久久| 奇米精品在线| 欧美私人啪啪vps| 日韩av在线第一页| 蜜臀精品久久久久久蜜臀 | 波多野结衣一区二区在线| 欧美日韩亚洲丝袜制服| 午夜精品久久久久久久99| 亚洲人在线观看| 成人短视频在线| 国产成人精品电影| 国产suv精品一区二区四区视频| 日韩成人在线资源| 在线成人h网| 在线播放黄色av| 91麻豆免费视频| 久久久国产精品黄毛片| 91黄视频在线| 亚洲人成色77777| 亚洲精品不卡在线观看| 风间由美久久久| 亚洲精品a级片| 国产高清精品在线观看| 国产精品18久久久久久久久久久久 | heyzo在线欧美播放| 国产女精品视频网站免费| 日本妇女一区| 日本大片免费看| 国内外成人在线| 自拍偷拍第9页| 欧美午夜女人视频在线| 囯产精品一品二区三区| 在线电影中文日韩| 超碰aⅴ人人做人人爽欧美| 91免费观看网站| 99tv成人| 男人添女人下面免费视频| 久久久久久夜精品精品免费| 日韩乱码人妻无码中文字幕| 日韩欧美一级二级三级| 91.xxx.高清在线| 久久久久久亚洲精品中文字幕| 91成人福利社区| 视频二区一区| 日本不卡一区二区三区| 久久国产柳州莫菁门| 日韩欧美一区二区在线| 韩国av免费在线| 久久人人爽人人爽人人片av高请| 99re8这里有精品热视频免费| 久久精品在线免费视频| 国内不卡的二区三区中文字幕| 日韩精品一区二区三区在线视频| 欧美日韩在线直播| 91伦理视频在线观看| 国产精品入口尤物| 网友自拍一区| 六月丁香婷婷在线| 久久亚洲精品国产精品紫薇| 探花视频在线观看| 亚洲视频视频在线| 国产精品少妇在线视频| 麻豆91精品视频| 国精产品一区一区二区三区mba| 色综合av在线| 岛国在线大片| 91精品国产综合久久香蕉| 亚洲高清资源在线观看| 古装做爰无遮挡三级聊斋艳谭| 亚洲色图视频网站| 亚洲欧美另类一区| 69久久夜色精品国产69乱青草| 欧美人与动xxxxz0oz| 久久久噜噜噜www成人网| 久久免费偷拍视频| 伊人久久亚洲综合| 欧美成人精品在线视频| 久久1电影院| 成人小视频在线看| 中文字幕在线不卡国产视频| 国产夫妻性生活视频| 久久福利视频网| 精品少妇一区| 亚洲乱码国产一区三区| 欧美国产乱子伦| 性色av蜜臀av| 97不卡在线视频| 欧美日韩123| 一二三级黄色片| 一区二区三区蜜桃网| 色播色播色播色播色播在线| 国产99久久精品一区二区永久免费| 久久国产电影| 美女黄色一级视频| 欧美日韩视频不卡| 草美女在线观看| 亚洲五月六月| gogogo免费视频观看亚洲一| 中文字幕永久在线| 九九精品视频在线| 青青草这里只有精品| 日韩免费毛片视频| 一区二区三区四区激情| 国产日产精品久久久久久婷婷| 亚洲一区二区三区乱码aⅴ| 最新日韩在线| 日本高清一二三区|