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

C語言在2013年仍很重要

開發 后端
原作者注:在本文最開始,我并沒說明進行模2^64的計算——我當然明白那些不是“正確的”斐波那契數列,其實我不是想分析大數,我只是想探尋編譯器產生的代碼和計算機體系結構而已。

本文作者在開發Dynym項目,這是一個動態語言的通用運行時。在開發時,作者以其 他語言的運行速度作為基礎比較語言的運行速度,因此發現了一些小秘密。迭代計算斐波那契數列是測試各種語言執行速度的常見方法。作者以不同的語言進行測 試,最終發現C語言要比Python編寫的計算斐波那契數列快278.5倍。在底層開發,以及專注性能的應用程序中,選擇是顯而易見的。而為什么會有如此 大的運行性能差距呢。作者進一步研究了程序的反匯編代碼,發現差別出在內存的訪問次數,以及預測的CPU指令的正確性方面。

原作者注:在本文最開始,我并沒說明進行模2^64的計算——我當然明白那些不是“正確的”斐波那契數列,其實我不是想分析大數,我只是想探尋編譯器產生的代碼和計算機體系結構而已。

最近,我一直在開發Dynvm——一個通用的動態語言運行時。就像其他任何好的語言運行時項目一樣,開發是由基準測試程 序驅動的。因此,我一直在用基準測試程序測試各種由不同語言編寫的算法,以此對其典型的運行速度有一個感覺上的認識。一個經典的測試就是迭代計算斐波那契 數列。為簡單起見,我以2^64為模,用兩種語言編寫實現了該算法。

用Python語言實現如下:

  1. SZ = 2**64 
  2. i = 0 
  3. a, b = 10 
  4. while i < n: 
  5.     t = b 
  6.     b = (b+a) % SZ 
  7.     a = t 
  8.     i = i + 1 
  9. return b 

用C語言實現如下:

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. typedef unsigned long ulong
  4.   
  5. int main(int argc, char *argv[]) 
  6.     ulong n = atoi(argv[1]); 
  7.     ulong a = 1; 
  8.     ulong b = 0; 
  9.     ulong t; 
  10.   
  11.     for(ulong i = 0; i < n; i++) { 
  12.         t = b; 
  13.         b = a+b; 
  14.         a = t; 
  15.     } 
  16.   
  17.     printf("%lu\n", b); 
  18.     return 0; 

用其他語言實現的代碼示例,我已放在github上。

Dynvm包含一個基準測試程序框架,該框架可以允許在不同語言之間對比運行速度。在一臺Intel i7-3840QM(調頻到1.2 GHz)機器上,當 n=1,000,000 時,對比結果如下:

  1. ======================================================= 
  2.   語言                               時間 (秒) 
  3. ======================================================= 
  4.   Java                               0.133 
  5.   C Language                         0.006 
  6.   CPython                            0.534 
  7.   Javascript V8                      0.284 

很明顯,C語言是這里的老大,但是java的結果有點誤導性,因為大部分的時間是由JIT編譯器啟動(~120ms)占用的。當n=100,000,000時,結果變得更明朗:

  1. ======================================================= 
  2.   語言                              時間(秒) 
  3. ======================================================= 
  4.   Java                               0.300 
  5.   C Language                         0.172 
  6.   CPython                            47.909 
  7.   Javascript V8                      24.179 

在這里,我們探究下為什么C語言在2013年仍然很重要,以及為什么編程世界不會完全“跳槽”到Python或者 V8/Node。有時你需要原始性能,但是動態語言仍在這方面艱難掙扎著,即使對以上很簡單的例子而言。我個人相信這種情況會克服掉,通過幾個項目我們能 在這方面看到很大的希望:JVM、V8、PyPy、LuaJIT等等,但在2013年我們還沒有到達“目的地”。

然而,我們無法回避這樣的問題:為什么差距如此之大?在C語言和Python之間有278.5倍的性能差距!最不可思議的地方是,從語法角度講,以上例子中的C語言和Python內部循環基本上一模一樣。

為了找到問題的答案,我搬出了反匯編器,發現了以下現象:

  1. 0000000000400480 <main>
  2. 247   400480:       48 83 ec 08             sub    $0x8,%rsp 
  3. 248   400484:       48 8b 7e 08             mov    0x8(%rsi),%rdi 
  4. 249   400488:       ba 0a 00 00 00          mov    $0xa,%edx 
  5. 250   40048d:       31 f6                   xor    %esi,%esi 
  6. 251   40048f:       e8 cc ff ff ff          callq  400460 <strtol@plt> 
  7. 252   400494:       48 98                   cltq 
  8. 253   400496:       31 d2                   xor    %edx,%edx 
  9. 254   400498:       48 85 c0                test   %rax,%rax 
  10. 255   40049b:       74 26                   je     4004c3 <main+0x43> 
  11. 256   40049d:       31 c9                   xor    %ecx,%ecx 
  12. 257   40049f:       31 f6                   xor    %esi,%esi 
  13. 258   4004a1:       bf 01 00 00 00          mov    $0x1,%edi 
  14. 259   4004a6:       eb 0e                   jmp    4004b6 <main+0x36> 
  15. 260   4004a8:       0f 1f 84 00 00 00 00    nopl   0x0(%rax,%rax,1) 
  16. 261   4004af:       00 
  17. 262   4004b0:       48 89 f7                mov    %rsi,%rdi 
  18. 263   4004b3:       48 89 d6                mov    %rdx,%rsi 
  19. 264   4004b6:       48 83 c1 01             add    $0x1,%rcx 
  20. 265   4004ba:       48 8d 14 3e             lea    (%rsi,%rdi,1),%rdx 
  21. 266   4004be:       48 39 c8                cmp    %rcx,%rax 
  22. 267   4004c1:       77 ed                   ja     4004b0 <main+0x30> 
  23. 268   4004c3:       be ac 06 40 00          mov    $0x4006ac,%esi 
  24. 269   4004c8:       bf 01 00 00 00          mov    $0x1,%edi 
  25. 270   4004cd:       31 c0                   xor    %eax,%eax 
  26. 271   4004cf:       e8 9c ff ff ff          callq  400470 <__printf_chk@plt> 
  27. 272   4004d4:       31 c0                   xor    %eax,%eax 
  28. 273   4004d6:       48 83 c4 08             add    $0x8,%rsp 
  29. 274   4004da:       c3                      retq 
  30. 275   4004db:       90                      nop 

(譯注:

  • 1、不同的編譯器版本及不同的優化選項(-Ox)會產生不同的匯編代碼。
  • 2、反匯編方法:gcc -g -O2 test.c -o test;objdumb -d test>test.txt  讀者可以自己嘗試變換優化選項對比反匯編結果)

最主要的部分是計算下一個斐波那契數值的內部循環:

  1. 262   4004b0:       48 89 f7                mov    %rsi,%rdi 
  2. 263   4004b3:       48 89 d6                mov    %rdx,%rsi 
  3. 264   4004b6:       48 83 c1 01             add    $0x1,%rcx 
  4. 265   4004ba:       48 8d 14 3e             lea    (%rsi,%rdi,1),%rdx 
  5. 266   4004be:       48 39 c8                cmp    %rcx,%rax 
  6. 267   4004c1:       77 ed                   ja     4004b0 <main+0x30> 

變量在寄存器中的分配情況如下:

  1. a:  %rsi 
  2. b:  %rdx 
  3. t:  %rdi 
  4. i:  %rcx 
  5. n:  %rax 

262和263行實現了變量交換,264行增加循環計數值,雖然看起來比較奇怪,265行實現了b=a+t。然后做一個簡單地比較,***一個跳轉指令跳到循環開始出繼續執行。

手動反編譯以上代碼,代碼看起來是這樣的

  1. loop:   t = a 
  2.         a = b 
  3.         ii = i+1 
  4.         b = a+t 
  5.         if(n > i) goto loop 

整個內部循環僅用六條X86-64匯編指令就實現了(很可能內部微指令個數也差不多。譯者注:Intel X86-64處理器會把指令進一步翻譯成微指令,所以CPU執行的實際指令數要比匯編指令多)。CPython解釋模塊對每一條高層的指令字節碼至少需要六條甚至更多的指令來解釋,相比而言,C語言完勝。除此之外,還有一些其他更微妙的地方。

拉低現代處理器執行速度的一個主要原因是對于主存的訪問。這個方面的影響十分可怕,在微處理器設計時,無數個工程時 (engineering hours)都花費在找到有效地技術來“掩藏”訪存延時。通用的策略包括:緩存、推測預取、load-store依賴性預測、亂序執行等等。這些方法確實 在使機器更快方面起了很大作用,但是不可能完全不產生訪存操作。

在上面的匯編代碼中,從沒訪問過內存,實際上變量完全存儲在CPU寄存器中。現在考慮CPython:所有東西都是堆上 的對象,而且所有方法都是動態的。動態特性太普遍了,以至于我們沒有辦法知道,a+b執行integer_add(a, b)、string_concat(a, b)、還是用戶自己定義的函數。這也就意味著很多時間花在了在運行時找出到底調用了哪個函數。動態JIT運行時會嘗試在運行時獲取這個信息,并動態產生 x86代碼,但是這并不總是非常直接的(我期待V8運行時會表現的更好,但奇怪的是它的速度只是Python的0.5倍)。因為CPython是一個純粹 的翻譯器,在每個循環迭代時,很多時間花在了解決動態特性上,這就需要很多不必要的訪存操作。

除了以上內存在搞鬼,還有其他因素。現代超標量亂序處理器核一次性可以取好幾條指令到處理器中,并且“在最方便時”執行 這些指令,也就是說:鑒于結果仍然是正確的,指令執行順序可以任意。這些處理器也可以在同一個時鐘周期并行執行多條指令,只要這些指令是不相關的。 Intel Sandy Bridge CPU可以同時將168條指令重排序,并可以在一個周期中發射(即開始執行指令)至多6條指令,同時結束(即指令完成執行)至多4條指令!粗略地以上面斐 波那契舉例,Intel這個處理器可以大約把28(譯者注:28*6=168)個內部循環重排序,并且幾乎可以在每一個時鐘周期完成一個循環!這聽起來很 霸氣,但是像其他事一樣,細節總是非常復雜的。

我們假定8條指令是不相關的,這樣處理器就可以取得足夠的指令來利用指令重排序帶來的好處。對于包含分支指令的指令流進 行重排序是非常復雜的,也就是對if-else和循環(譯者注:if-else需要判斷后跳轉,所以必然包含分支指令)產生的匯編代碼。典型的方法就是對 于分支指令進行預測。CPU會動態的利用以前分支執行結果來猜測將來要執行的分支指令的執行結果,并且取得那些它“認為”將要執行的指令。然而,這個推測 有可能是不正確的,如果確實不正確,CPU就會進入復位模式(譯者注:這里的復位不是指處理器reset,而是CPU流水線的復位),即丟棄已經取得的指 令并且重新開始取指。這種復位操作有可能對性能產生很大影響。因此,對于分支指令的正確預測是另一個需要花費很多工程時的領域。

現在,不是所有分支指令都是一樣的,有些可以很***的預測,但是另一些幾乎不可能進行預測。前面例子中的循環中的分支指令——就像反匯編代碼中267行——是最容易預測的其中一種,這個分支指令會連續向后跳轉100,000,000次。

以下是一個非常難預測的分支指令實例:

  1. void main(void) 
  2.     for(int i = 0; i < 1000000; i++) { 
  3.          int n = random(); 
  4.          if(n >= 0) { 
  5.             printf("positive!\n"); 
  6.         } else { 
  7.             printf("negative!\n"); 
  8.         } 
  9.     } 

如果random()是真正隨機的(事實上在C語言中遠非如此),那么對于if-else的預測還不如隨便猜來的準確。幸運的是,大部分的分支指令沒有這么頑皮,但是也有很少一部分和上面例子中的循環分支指令一樣變態。

回到我們的例子上:C代碼實現的斐波那契數列,只產生一個非常容易預測的分支指令。相反地,CPython代碼就非常糟糕。首先,所有純粹的翻譯器有一個“分配”循環,就像下面的例子:

  1. void exec_instruction(instruction_t *inst) 
  2.     switch(inst->opcode) { 
  3.         case ADD:    // do add 
  4.         case LOAD:   // do load 
  5.         case STORE:  // do store 
  6.         case GOTO:   // do goto 
  7.     } 

編譯器無論如何處理以上代碼,至少有一個間接跳轉指令是必須的,而這種間接跳轉指令是比較難預測的。

接下來回憶一下,動態語言必須在運行時確定如“ADD指令的意思是什么”這樣基本的問題,這當然會產生——你猜對了——更加變態的分支指令。

以上所有因素加起來,***導致一個278.5倍的性能差距!現在,這當然是一個很簡單的例子,但是其他的只會比這更變 態。這個簡單例子足以凸顯低級靜態語言(例如C語言)在現代軟件中的重要地位。我當然不是2013年里C語言***的粉絲,但是C語言仍然主導著低級控制領 域及對性能要求高的應用程序領域。

原文鏈接:http://jabsoft.io/2013/08/29/why-c-still-matters-in-2013-a-simple-example/

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

責任編輯:陳四芳 來源: 伯樂在線
相關推薦

2022-02-09 18:15:10

語言宏定義軟件

2021-04-03 12:39:20

SQL數據庫編程語言

2016-10-18 08:20:30

經驗科技新聞早報

2024-04-11 07:00:00

人工智能

2013-11-28 13:39:29

東軟創新解決方案

2011-05-18 17:33:15

CC++

2020-08-11 11:51:47

標準物聯網IOT

2011-06-16 18:01:48

網站優化SEO

2023-02-15 08:00:00

2021-02-14 13:38:17

Python開發函數

2022-07-15 13:43:40

網絡安全黑客

2021-02-18 00:19:40

編程語言程序員工具

2016-11-16 13:51:46

數據庫NoSQL大數據

2019-08-28 14:55:50

物聯網數據技術

2012-07-17 10:42:52

開源軟件

2013-11-13 10:24:53

Xbox微軟

2023-02-13 11:06:58

決策智能數據分析

2010-05-20 14:07:46

IIS錯誤

2020-12-30 13:30:38

數據中心計算機超級計算機

2022-06-09 16:24:00

C波段5G頻譜
點贊
收藏

51CTO技術棧公眾號

成人午夜电影网站| 欧美日韩福利| 欧美日韩精品综合在线| 91xxx视频| 黄色三级网站在线观看| 久久只有精品| 欧美日本黄视频| 波多野结衣av在线免费观看| 欧美在线se| 亚洲成人av免费| 亚洲美女网站18| 欧美视频在线观看一区二区三区| 日韩国产精品久久久| 色综合五月天导航| 国产精成人品免费观看| 在线综合色站| 欧美日韩精品一区二区| 免费观看国产精品视频| 免费网站看v片在线a| 91色乱码一区二区三区| 91系列在线播放| 99久久久无码国产精品免费蜜柚 | 精品乱码一区二区三区四区| 亚洲图片欧美视频| 亚洲一区二区三区涩| 亚洲色大成网站www| 国产一区999| 国产成人精品视频| 国产成人亚洲欧洲在线| 中文字幕免费一区二区| 国产亚洲欧美日韩一区二区| 精品视频站长推荐| 精品视频在线播放一区二区三区 | 欧美国产日韩一区| 欧美另类69xxxx| 最新精品国偷自产在线| 337p日本欧洲亚洲大胆色噜噜| 国产无遮挡猛进猛出免费软件| 一区一区三区| 天涯成人国产亚洲精品一区av| 欧美日韩午夜爽爽| 国内外激情在线| 欧美国产精品久久| 日韩av高清在线播放| 无码国产色欲xxxx视频| 成人18视频日本| 国产伦精品一区二区三区| 国产色视频在线| 极品销魂美女一区二区三区| 国产在线观看不卡| 一区精品在线观看| 麻豆精品一区二区综合av| 国产精品久久久久久久久久东京| 天天干,天天干| 香蕉久久a毛片| 国产成人精品a视频一区www| 亚洲s码欧洲m码国产av| 西西裸体人体做爰大胆久久久| 国产91精品久久久久久久| 国产网友自拍视频| 亚洲日本欧美| 国产97在线|亚洲| 成年人晚上看的视频| 奇米综合一区二区三区精品视频| 国产精品美腿一区在线看| 糖心vlog精品一区二区| 蜜臂av日日欢夜夜爽一区| 成人黄色短视频在线观看| 国产露脸91国语对白| 国内精品伊人久久久久av影院| 亚洲一区久久久| 蜜桃在线一区二区| 久久亚洲综合色一区二区三区| 欧美激情专区| aaa在线免费观看| 亚洲乱码中文字幕| 久草视频这里只有精品| 在线观看的黄色| 欧洲亚洲精品在线| 蜜臀一区二区三区精品免费视频 | 色呦呦在线观看视频| 亚洲www啪成人一区二区麻豆| 黄色免费福利视频| yw.尤物在线精品视频| 3d成人h动漫网站入口| 免费观看一区二区三区| 日韩高清三区| 日韩视频精品在线| 国产精品二区一区二区aⅴ| 裸体素人女欧美日韩| 国产日本欧美一区二区三区| 性一交一乱一色一视频麻豆| 91首页免费视频| 青青草原国产免费| 欧美男人天堂| 欧美一区二区视频在线观看| 一区二区视频观看| 久久社区一区| 55夜色66夜色国产精品视频| 在线观看亚洲一区二区| 成人午夜精品一区二区三区| 欧美一区视久久| 欧美亚洲天堂| 欧美日韩在线一区二区| 妖精视频一区二区| 大片网站久久| 97人人做人人爱| 99久久精品国产成人一区二区 | 日韩欧美精品一区二区三区| 欧美日韩精品一区二区| 三级男人添奶爽爽爽视频| 成人一区二区| 午夜精品免费视频| 国产精品伦一区二区三区| 久久久久亚洲蜜桃| www.男人天堂网| 日韩福利在线观看| 日韩精品一区二区三区第95| 欧美日韩在线国产| 青青草一区二区三区| 精品欧美一区二区在线观看视频| 91精品久久久| 欧美日本国产视频| 精品无码在线观看| 国产农村妇女精品一二区| 51国产成人精品午夜福中文下载| 国产乱理伦片a级在线观看| 亚洲va欧美va国产va天堂影院| 午夜一区二区视频| 俺要去色综合狠狠| …久久精品99久久香蕉国产| 精品国产伦一区二区三| 国产精品萝li| 亚洲免费一级视频| 狠狠色狠狠色综合婷婷tag| 国产91精品久久久久久| 无码国精品一区二区免费蜜桃| 亚洲一区二区三区爽爽爽爽爽| 欧美日韩精品区别| 99视频精品全部免费在线视频| 国产精品高潮呻吟久久av无限| 亚洲色图狠狠干| 欧美日韩国产区| 亚洲视频在线播放免费| 在线日本成人| 国产伦精品一区二区三区高清版| 欧美xxxx做受欧美88bbw| 日韩视频中午一区| 青青草手机视频在线观看| 激情欧美一区二区| 中文字幕在线中文字幕日亚韩一区| 97成人超碰| 在线视频国产日韩| 久久久久久久久久一级| 欧美激情在线一区二区三区| 亚洲福利精品视频| 欧美好骚综合网| 91香蕉亚洲精品| 久久久123| 亚洲精品wwwww| 一级做a爰片久久毛片| 国产亚洲欧美色| 天堂av8在线| 欧美成人tv| 国产视频一区二区不卡| 亚洲少妇视频| 在线性视频日韩欧美| 国产精品一区二区av白丝下载| 1024成人网| 久久久国产精品久久久| 91久久亚洲| 日韩国产精品一区二区| 亚洲国产伊人| 欧美精品九九久久| 神马亚洲视频| 欧美日韩久久一区| 久久国产一级片| 久久天天做天天爱综合色| 亚洲一级免费观看| 自拍日韩欧美| 久久亚洲免费| 日韩第二十一页| 国外成人在线直播| 九色在线免费| 日韩一级二级三级| 黄色片免费观看视频| 欧美激情一区在线观看| 久久无码人妻一区二区三区| 国产亚洲永久域名| 亚洲狠狠婷婷综合久久久| 日本99精品| 国产ts人妖一区二区三区| 黄色一级片在线观看| 亚洲黄色有码视频| 亚洲系列在线观看| 亚洲www啪成人一区二区麻豆| 欧美一区二区三区粗大| 成人一道本在线| 在线观看国产一级片| 激情久久一区| 亚洲欧美丝袜| 日韩高清三区| 99视频免费观看| 婷婷激情一区| 欧美激情在线观看| 日本高清视频在线观看| 日韩av中文字幕在线播放| 国产又色又爽又黄又免费| 欧美丝袜一区二区三区| 一区视频免费观看| 国产人成亚洲第一网站在线播放 | 美女av一区| 亚洲一区二区三区香蕉| 高清电影一区| 午夜精品久久17c| 中文字幕有码在线视频| 中文字幕成人在线| 三区在线观看| 精品久久久久久综合日本欧美| 亚洲熟女乱色一区二区三区久久久 | 日本一区二区三区四区在线观看| heyzo欧美激情| 91在线观看免费高清完整版在线观看| 亚洲成av在线| 国产z一区二区三区| 国产精品电影| 欧美激情视频在线| 欧美96在线| 亚洲无线码在线一区观看| 五月婷婷伊人网| 精品日韩欧美一区二区| 国产绿帽刺激高潮对白| 欧美三级在线看| 高潮毛片又色又爽免费| 精品国产精品三级精品av网址| 欧美日韩中文视频| 一区二区视频免费在线观看| 免费91在线观看| 中日韩av电影| 内射毛片内射国产夫妻| 久久精品一区四区| 国产激情在线免费观看| 91小视频免费观看| 精品中文字幕在线播放 | 国产呦系列欧美呦日韩呦| 免费一区二区三区在线视频| 亚洲自拍偷拍福利| 日本一区二区三区视频在线看| 91丝袜美腿美女视频网站| 国产精品黄色片| 国产精品永久免费在线| 日本成人一区二区| 国产欧美日韩丝袜精品一区| 久久精品黄色| 91系列在线观看| 亚洲日本视频在线| 国产一区二区精品在线| 丝袜美腿综合| 日韩免费av电影| 99九九热只有国产精品| 裸体大乳女做爰69| 欧美1级日本1级| 欧美午夜性视频| 亚洲理论在线| 国产免费人做人爱午夜视频| 日韩国产欧美在线播放| 久久精品国产露脸对白| 国产麻豆精品95视频| 亚洲一二三四五| 91麻豆免费观看| 国产18无套直看片| 亚洲精品乱码久久久久久黑人 | 国产免费无遮挡吸奶头视频| 国产精品色婷婷久久58| 久草综合在线视频| 图片区小说区国产精品视频| 无码人妻一区二区三区免费| 欧美美女激情18p| 蜜桃av中文字幕| 亚洲午夜av电影| 国产人成网在线播放va免费| 国产69精品久久久| 人人视频精品| 91在线精品观看| 日韩理论电影中文字幕| 亚洲春色在线视频| 国产中文一区| 久久久久久久片| 国产白丝精品91爽爽久久| 中文幕无线码中文字蜜桃| 国产精品久久久久久一区二区三区| 久草免费新视频| 欧美视频一区在线| 风流老熟女一区二区三区| 亚洲午夜女主播在线直播| 18在线观看的| 国产精品99蜜臀久久不卡二区 | 精品国产青草久久久久福利| 国产一级在线| 久久久久久久久久久人体| 黄色欧美视频| 精品中文字幕人| 欧美~级网站不卡| 在线黄色免费观看| av电影在线观看一区| 成人高潮免费视频| 一本色道a无线码一区v| 亚洲a视频在线观看| 亚洲美女免费在线| 成人爱爱电影网址| 黄页网站在线看| 国产成人a级片| 少妇真人直播免费视频| 国产精品看片你懂得| 日韩免费av片| 欧美午夜影院一区| 亚洲成人一级片| 色偷偷亚洲男人天堂| 国产羞羞视频在线播放| 91精品国产综合久久香蕉的用户体验 | 一呦二呦三呦精品国产| 91视频最新| 欧美一区2区| 无码精品a∨在线观看中文| 国产精品18久久久久久vr| 亚洲一区 欧美| 日韩欧美综合在线视频| 天天干,夜夜操| 久久99久久亚洲国产| www.久久热| 亚洲图片都市激情| 日韩va欧美va亚洲va久久| 一级特级黄色片| 午夜精品影院在线观看| 亚洲黄色精品视频| 不卡毛片在线看| 四虎地址8848精品| 丝袜足脚交91精品| 老司机免费视频久久| 欲求不满的岳中文字幕| 亚洲自拍偷拍欧美| 亚洲精品视频专区| 久久99国产精品自在自在app| 91麻豆精品一二三区在线| 亚洲国产高清国产精品| 日韩高清不卡一区| 丁香激情五月少妇| 欧美图片一区二区三区| 成人h小游戏| 国产在线98福利播放视频| 国产精品久久观看| 久久精品国产露脸对白| 亚洲精品高清视频在线观看| 精品国产va久久久久久久| 色综合久久中文字幕综合网小说| 欧美黄视频在线观看| 欧美一二三不卡| 成人国产精品免费网站| 日产精品久久久久| 亚洲日本欧美中文幕| 在线成人视屏| 中文字幕日韩一区二区三区| 国产一区视频网站| 欧美丰满艳妇bbwbbw| 精品嫩草影院久久| 老牛影视精品| 日本一区精品| 精品无码三级在线观看视频 | 亚洲大全视频| 最新版天堂资源在线| 五月激情六月综合| 极品白浆推特女神在线观看| 国产精品视频yy9099| 51精产品一区一区三区| 中文字幕99页| 91久久精品一区二区三区| 久久国产精品一区| 国产精品亚洲综合| 久久精品卡一| 黑人狂躁日本娇小| 精品国产一区二区三区久久久蜜月 | 国产精品女主播在线观看| 国产精品爽爽久久久久久| 久久免费成人精品视频| 欧美日韩爱爱| 亚洲天堂小视频| 日韩欧美999| 成人免费观看视频大全| 国产视频精品网| 久久99国产精品免费| 日本三级黄色大片| 中文字幕亚洲一区二区三区五十路| 婷婷综合国产| 爱情岛论坛vip永久入口| 亚洲综合免费观看高清完整版| 国产在线超碰| 国产精品一 二 三| 日本sm残虐另类| 可以免费看的av毛片| 久久亚洲精品一区|