精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

色综合久久久| 黄色免费在线看| 日韩国产欧美在线播放| 精品国产依人香蕉在线精品| ass极品水嫩小美女ass| 人成在线免费网站| 国产精品萝li| 精品一卡二卡三卡四卡日本乱码| 免费观看日批视频| 一本一道久久a久久精品蜜桃| 欧美精品一区二区不卡| 在线免费视频a| 波多野结衣中文在线| 国产欧美日韩综合| 成人综合色站| 国产精品露脸视频| 亚洲欧洲日本mm| 久久精品人人做人人爽| 中文字字幕码一二三区| 精品久久亚洲| 欧美日韩亚洲综合| 欧美亚洲一二三区| 五月花成人网| 国产精品丝袜在线| 久久综合九色综合久99| 午夜精品久久久久久久96蜜桃| 久久精品国产清高在天天线| 色在人av网站天堂精品| 蜜桃av免费观看| 亚洲精品亚洲人成在线观看| 精品久久久久久久久久久久久久久久久 | 少妇精品视频一区二区| 精品一区二区三区不卡| 国产成人免费av| 久久不卡免费视频| 欧美三级第一页| 超碰97人人做人人爱少妇| 91成人在线免费视频| 欧美一级一片| 日韩欧美中文一区二区| 天天摸天天舔天天操| 第四色男人最爱上成人网| 欧美日韩中文字幕日韩欧美| 妺妺窝人体色www看人体| 黄色在线论坛| 中文字幕亚洲在| 亚洲一区三区| 最新电影电视剧在线观看免费观看| www成人在线观看| 精品国产一二| 四虎精品在线| proumb性欧美在线观看| 国产一区二区不卡视频| 国精产品乱码一区一区三区四区| 国产成人免费av在线| 亚洲在线观看视频| 性生活视频软件| 国产91精品一区二区| 成人在线视频网址| 少妇一区二区三区四区| jlzzjlzz亚洲日本少妇| 精品一区久久| 精品亚洲综合| 国产精品三级在线观看| 一级做a爰片久久| 黄色成人在线观看| 亚洲免费色视频| 999久久欧美人妻一区二区| 免费在线观看av电影| 亚洲一区二区三区影院| 奇米精品一区二区三区| 国产综合色区在线观看| 欧美日本乱大交xxxxx| 欧洲美女亚洲激情| 成人av激情人伦小说| 日韩精品在线观看视频| 欧美黄色高清视频| 亚洲激情五月| 97超级碰在线看视频免费在线看| www.毛片.com| 久久成人免费电影| 国产经典一区二区三区 | 国产高清亚洲| 精品国产乱码久久| www在线观看免费视频| 欧美好骚综合网| 久久久久久国产三级电影| 日日骚av一区二区| 韩国v欧美v亚洲v日本v| 国内精品久久久久久久果冻传媒| 免费在线国产| 亚洲欧美日韩国产成人精品影院| 人妻少妇精品无码专区二区| 性欧美gay| 日韩欧美国产一区二区三区| 亚洲精品乱码久久久久久不卡| 日韩成人a**站| 久久久中文字幕| 日韩av免费播放| 国产成人av影院| 色噜噜狠狠色综合网| 日本高清在线观看| 91久久精品一区二区| 秋霞午夜鲁丝一区二区| 国产探花一区| 欧美激情精品久久久久久大尺度| 无码人妻久久一区二区三区 | 欧美午夜精品理论片a级按摩| 99国产精品免费视频| 国产精品自拍区| 久久久久久久久亚洲| 中文字幕有码视频| 91蝌蚪porny九色| 日韩专区第三页| 久久久国产精品网站| 日韩av网站电影| 亚洲av鲁丝一区二区三区| 日韩精品电影一区亚洲| 国产综合18久久久久久| av免费看在线| 欧美日韩在线播放三区四区| 熟妇高潮精品一区二区三区| 欧美激情亚洲| 成人乱人伦精品视频在线观看| 日韩a级作爱片一二三区免费观看| 亚洲免费观看高清在线观看| 中文久久久久久| 免费精品国产| 欧美亚洲另类制服自拍| 天天干天天爱天天操| 夜夜亚洲天天久久| 国产精品嫩草影视| 羞羞色午夜精品一区二区三区| 国产不卡视频在线| 日韩大胆人体| 欧美视频裸体精品| 北岛玲一区二区| 99在线|亚洲一区二区| 99国内精品久久久久久久软件| 欧美性猛交xxx乱大交3蜜桃| 欧美伊人精品成人久久综合97 | 中文字幕精品一区二区三区在线| 精品国产乱码久久久| 国产999精品久久久影片官网| 亚洲av成人无码久久精品老人 | 国产高清第一页| 亚洲少妇中出一区| 欧美午夜精品理论片| 国产精品成人a在线观看| 国产男人精品视频| 国产原创在线观看| 欧美一区二区在线免费播放| √天堂中文官网8在线| 国产一区二区三区精品视频| 在线观看欧美一区| 日韩一二三区| 久久久久亚洲精品国产| 蜜桃视频久久一区免费观看入口| 亚洲成人自拍一区| 污污内射在线观看一区二区少妇| 国产精品入口| 欧美一卡2卡3卡4卡无卡免费观看水多多| 在线观看网站免费入口在线观看国内| 国产视频一区在线| www.久久网| 最好看的中文字幕久久| 一级黄色大片免费看| 亚洲青涩在线| 青青草原亚洲| 国产精品1区| 久久久免费精品视频| 三级理论午夜在线观看| 欧美亚洲动漫另类| 男女做暖暖视频| 成人免费视频播放| 妞干网在线免费视频| 欧美hd在线| 国产成人精品免费视频大全最热| 中文在线最新版地址| 最新亚洲国产精品| 亚洲av色香蕉一区二区三区| 色综合久久久久久久久久久| 一级片黄色录像| 成人在线视频一区二区| 人妻熟女一二三区夜夜爱| 第一会所sis001亚洲| 97久久精品午夜一区二区| 日韩深夜视频| 久久影院资源网| 全部免费毛片在线播放网站| 欧美精品视频www在线观看| 国产在线视频卡一卡二| 国产网站一区二区| 性一交一黄一片| 天堂蜜桃91精品| 久操手机在线视频| 欧美色婷婷久久99精品红桃| 动漫一区二区在线| 日韩深夜福利网站| 欧美一区二区.| 污污的网站在线免费观看| 亚洲人成在线一二| 亚洲福利在线观看视频| 欧美优质美女网站| 日本中文字幕免费| 中文字幕一区二区三区四区不卡 | 懂色av成人一区二区三区| 在线视频中文字幕一区二区| 久草视频中文在线| 国产精品青草久久| 特级西西人体wwwww| 国产精品亚洲人在线观看| caoporn超碰97| 亚洲精品少妇| 日本成人在线不卡| 日韩在线观看| 热re99久久精品国产99热| 成人福利一区| 5g影院天天爽成人免费下载| 成人福利一区二区| 国产a∨精品一区二区三区不卡| 国产盗摄一区二区| 久久夜色撩人精品| 日本在线看片免费人成视1000| 日韩国产欧美精品一区二区三区| 国产激情视频在线播放| 欧美日韩一区二区三区视频| 国产又大又粗又爽| 精品动漫一区二区三区| 麻豆成人在线视频| 亚洲日本在线a| 久久精品日韩无码| 欧美高清在线精品一区| 日韩在线免费观看av| 91蝌蚪porny| 美国黄色a级片| 91色乱码一区二区三区| 亚洲男人在线天堂| av在线不卡观看免费观看| 免费观看污网站| 福利电影一区二区| 熟女人妻一区二区三区免费看| 激情综合亚洲精品| 91日韩精品视频| 韩国午夜理伦三级不卡影院| 午夜免费福利视频在线观看| 免费成人在线网站| the porn av| 精品一区二区三区在线观看国产| 日韩在线不卡一区| 韩国女主播成人在线| 午夜激情影院在线观看| 国产一区二区三区在线观看精品| 国产999免费视频| 国产乱妇无码大片在线观看| 日本人dh亚洲人ⅹxx| 国产凹凸在线观看一区二区| 久久久久久久久久影视| 成人av在线网站| 毛茸茸多毛bbb毛多视频| 久久综合色8888| 在哪里可以看毛片| 国产精品免费视频一区| 免费中文字幕日韩| 亚洲成人福利片| 久久久黄色大片| 欧美日本高清视频在线观看| 精品女同一区二区三区| 欧美精品一区二| 国产专区在线| 久久视频在线免费观看| 毛片在线导航| 国产91网红主播在线观看| 国产69精品久久| 99国精产品一二二线| 天堂俺去俺来也www久久婷婷| 视频在线99re| 欧美日韩国产色综合一二三四| 日本韩国欧美在线观看| 免费观看在线综合| 免费看的av网站| 91伊人久久大香线蕉| 国产视频123区| 亚洲一区二三区| 无码人妻精品一区二区三区不卡| 8x福利精品第一导航| 日本精品久久久久| 中文字幕日本欧美| 黄色成人在线网| 国产精品中文字幕在线| 国产91精品入| 亚洲乱码一区二区三区三上悠亚| 欧美日韩hd| 日本成人中文字幕在线| 国产成人精品www牛牛影视| 91网站免费视频| 亚洲免费视频中文字幕| 岛国av中文字幕| 日韩欧美成人一区二区| 国产高清自拍视频在线观看| 欧美日本黄视频| 91大神在线观看线路一区| 国产精品制服诱惑| 久久麻豆精品| 免费在线观看的av网站| 国产黑丝在线一区二区三区| 日本乱子伦xxxx| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美巨乳在线| 欧美精品在线观看| 九九热这里有精品| 奇米精品在线| 亚洲九九精品| 黄页网站在线看| 国产精品久久精品日日| 亚洲精品中文字幕乱码三区91| 日韩午夜小视频| 秋霞午夜在线观看| 国产精品久久久久91| 欧洲vs亚洲vs国产| 国产成人艳妇aa视频在线 | 国产精品久久久久久亚洲色| 亚洲欧洲日韩在线| 国产精品欧美综合| 亚洲欧美日韩精品久久奇米色影视 | 国内精品视频在线| 亚洲高清999| 一区二区三区四区免费观看| 美洲天堂一区二卡三卡四卡视频| 中文字幕人妻一区二区| 欧美日韩午夜视频在线观看| 成人乱码一区二区三区| 免费91在线视频| 国产精品视频一区视频二区| 正在播放91九色| 青青草成人在线观看| 韩国女同性做爰三级| 日韩欧美亚洲综合| 奇米影视888狠狠狠777不卡| 国内成人精品一区| 国产成人澳门| 黄色成人在线看| a级精品国产片在线观看| jizz国产免费| 亚洲精品xxxx| 三级中文字幕在线观看| 久久视频在线观看中文字幕| 亚洲视频1区| 人妻丰满熟妇av无码久久洗澡 | 国产精品情趣视频| 国产一区二区三区黄片| 久久天天躁狠狠躁夜夜躁| 99精品视频在线免费播放| 一区视频二区视频| 精久久久久久久久久久| 私库av在线播放| 亚洲成人免费网站| 久久毛片亚洲| 亚洲精品一区二区毛豆| 免费av网站大全久久| 国产免费久久久久| 日韩精品一区二区三区在线播放| 日本在线视频中文有码| 国产亚洲欧美另类一区二区三区| 免费日韩精品中文字幕视频在线| 免费人成又黄又爽又色| 欧美日韩在线播放三区四区| 成人福利网站| 国产伦一区二区三区色一情| 噜噜噜躁狠狠躁狠狠精品视频| 一区二区精品免费| 4438亚洲最大| 波多野结衣中文在线| 日本最新一区二区三区视频观看| 美女性感视频久久| 国产精品99精品| 亚洲日本成人网| www.欧美| 91九色在线观看视频| 国产精品日日摸夜夜摸av| aaaa一级片| 日本高清不卡的在线| 国产精品99久久| 色婷婷精品久久二区二区密| 色视频欧美一区二区三区| 超碰个人在线| 欧美亚洲免费高清在线观看| 久草精品在线观看| 日韩伦人妻无码| xxxxx成人.com| 任你躁在线精品免费| 亚洲黄色av片| 日韩欧美在线观看视频| 搞黄网站在线观看| 欧美日韩国产免费一区二区三区 | 亚洲精品日产aⅴ| 久久久久久自在自线| 久久久国产精华液| 亚洲一区二区久久久| 91成人福利|