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

6種快速統計代碼執行時間的方法,真香!

開發 前端
我們在日常開發中經常需要測試一些代碼的執行時間,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基準測試套件)這么重的測試框架,所以本文就匯總了一些 Java 中比較常用的執行時間統計方法,總共包含以下 6 種。

[[333530]]

本文轉載自微信公眾號「Java中文社群」,作者磊哥  。轉載本文請聯系Java中文社群公眾號。 

我們在日常開發中經常需要測試一些代碼的執行時間,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基準測試套件)這么重的測試框架,所以本文就匯總了一些 Java 中比較常用的執行時間統計方法,總共包含以下 6 種,如下圖所示:

 

方法一:System.currentTimeMillis

此方法為 Java 內置的方法,使用 System#currentTimeMillis 來統計執行的時間(統計單位:毫秒),示例代碼如下:

  1. public class TimeIntervalTest { 
  2.     public static void main(String[] args) throws InterruptedException { 
  3.         // 開始時間 
  4.         long stime = System.currentTimeMillis(); 
  5.         // 執行時間(1s) 
  6.         Thread.sleep(1000); 
  7.         // 結束時間 
  8.         long etime = System.currentTimeMillis(); 
  9.         // 計算執行時間 
  10.         System.out.printf("執行時長:%d 毫秒.", (etime - stime)); 
  11.     } 

以上程序的執行結果為:

執行時長:1000 毫秒.

方法二:System.nanoTime

此方法為 Java 內置的方法,使用 System#nanoTime 來統計執行時間(統計單位:納秒),它的執行方法和 System#currentTimeMillis 類似,示例代碼如下:

  1. public class TimeIntervalTest { 
  2.     public static void main(String[] args) throws InterruptedException { 
  3.         // 開始時間 
  4.         long stime = System.nanoTime(); 
  5.         // 執行時間(1s) 
  6.         Thread.sleep(1000); 
  7.         // 結束時間 
  8.         long etime = System.nanoTime(); 
  9.         // 計算執行時間 
  10.         System.out.printf("執行時長:%d 納秒.", (etime - stime)); 
  11.     } 

以上程序的執行結果為:

執行時長:1000769200 納秒.

小貼士:1 毫秒 = 100 萬納秒。

方法三:new Date

此方法也是 Java 的內置方法,在開始執行前 new Date() 創建一個當前時間對象,在執行結束之后 new Date() 一個當前執行時間,然后再統計兩個 Date 的時間間隔,示例代碼如下:

  1. import java.util.Date
  2.  
  3. public class TimeIntervalTest { 
  4.     public static void main(String[] args) throws InterruptedException { 
  5.         // 開始時間 
  6.         Date sdate = new Date(); 
  7.         // 執行時間(1s) 
  8.         Thread.sleep(1000); 
  9.         // 結束時間 
  10.         Date edate = new Date(); 
  11.         //  統計執行時間(毫秒) 
  12.         System.out.printf("執行時長:%d 毫秒." , (edate.getTime() - sdate.getTime()));  
  13.     } 

以上程序的執行結果為:

  • 執行時長:1000 毫秒.

方法四:Spring StopWatch

如果我們使用的是 Spring 或 Spring Boot 項目,可以在項目中直接使用 StopWatch 對象來統計代碼執行時間,示例代碼如下:

  1. StopWatch stopWatch = new StopWatch(); 
  2. // 開始時間 
  3. stopWatch.start(); 
  4. // 執行時間(1s) 
  5. Thread.sleep(1000); 
  6. // 結束時間 
  7. stopWatch.stop(); 
  8. // 統計執行時間(秒) 
  9. System.out.printf("執行時長:%d 秒.%n", stopWatch.getTotalTimeSeconds()); // %n 為換行 
  10. // 統計執行時間(毫秒) 
  11. System.out.printf("執行時長:%d 毫秒.%n", stopWatch.getTotalTimeMillis());  
  12. // 統計執行時間(納秒) 
  13. System.out.printf("執行時長:%d 納秒.%n", stopWatch.getTotalTimeNanos()); 

以上程序的執行結果為:

執行時長:0.9996313 秒. 執行時長:999 毫秒. 執行時長:999631300 納秒.

小貼士:Thread#sleep 方法的執行時間稍有偏差,在 1s 左右都是正常的。

方法五:commons-lang3 StopWatch

如果我們使用的是普通項目,那我們可以用 Apache commons-lang3 中的StopWatch 對象來實現時間統計,首先先添加 commons-lang3 的依賴:

  1. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> 
  2. <dependency> 
  3.   <groupId>org.apache.commons</groupId> 
  4.   <artifactId>commons-lang3</artifactId> 
  5.   <version>3.10</version> 
  6. </dependency> 

然后編寫時間統計代碼:

  1. import org.apache.commons.lang3.time.StopWatch; 
  2.  
  3. import java.util.concurrent.TimeUnit; 
  4.  
  5. public class TimeIntervalTest { 
  6.     public static void main(String[] args) throws InterruptedException { 
  7.         StopWatch stopWatch = new StopWatch(); 
  8.         // 開始時間 
  9.         stopWatch.start(); 
  10.         // 執行時間(1s) 
  11.         Thread.sleep(1000); 
  12.         // 結束時間 
  13.         stopWatch.stop(); 
  14.         // 統計執行時間(秒) 
  15.         System.out.println("執行時長:" + stopWatch.getTime(TimeUnit.SECONDS) + " 秒."); 
  16.         // 統計執行時間(毫秒) 
  17.         System.out.println("執行時長:" + stopWatch.getTime(TimeUnit.MILLISECONDS) + " 毫秒."); 
  18.         // 統計執行時間(納秒) 
  19.         System.out.println("執行時長:" + stopWatch.getTime(TimeUnit.NANOSECONDS) + " 納秒."); 
  20.     } 

以上程序的執行結果為:

執行時長:1 秒. 執行時長:1000 毫秒.

執行時長:1000555100 納秒.

方法六:Guava Stopwatch

除了 Apache 的 commons-lang3 外,還有一個常用的 Java 工具包,那就是 Google 的 Guava,Guava 中也包含了 Stopwatch 統計類。首先先添加 Guava 的依賴:

  1. <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> 
  2. <dependency> 
  3.   <groupId>com.google.guava</groupId> 
  4.   <artifactId>guava</artifactId> 
  5.   <version>29.0-jre</version> 
  6. </dependency> 

然后編寫時間統計代碼:

  1. import com.google.common.base.Stopwatch; 
  2.  
  3. import java.util.concurrent.TimeUnit; 
  4.  
  5. public class TimeIntervalTest { 
  6.     public static void main(String[] args) throws InterruptedException { 
  7.         // 創建并啟動計時器 
  8.         Stopwatch stopwatch = Stopwatch.createStarted(); 
  9.         // 執行時間(1s) 
  10.         Thread.sleep(1000); 
  11.         // 停止計時器 
  12.         stopwatch.stop(); 
  13.         // 執行時間(單位:秒) 
  14.         System.out.printf("執行時長:%d 秒. %n", stopwatch.elapsed().getSeconds()); // %n 為換行 
  15.         // 執行時間(單位:毫秒) 
  16.         System.out.printf("執行時長:%d 豪秒.", stopwatch.elapsed(TimeUnit.MILLISECONDS)); 
  17.     } 

以上程序的執行結果為:

執行時長:1 秒.

執行時長:1000 豪秒.

原理分析本文我們從 Spring 和 Google 的 Guava 源碼來分析一下,它們的 StopWatch 對象底層是如何實現的?

1.Spring StopWatch 原理分析

在 Spring 中 StopWatch 的核心源碼如下:

  1. package org.springframework.util; 
  2.  
  3. import java.text.NumberFormat; 
  4. import java.util.LinkedList; 
  5. import java.util.List; 
  6. import java.util.concurrent.TimeUnit; 
  7. import org.springframework.lang.Nullable; 
  8.  
  9. public class StopWatch { 
  10.     private final String id; 
  11.     private boolean keepTaskList; 
  12.     private final List<StopWatch.TaskInfo> taskList; 
  13.     private long startTimeNanos; 
  14.     @Nullable 
  15.     private String currentTaskName; 
  16.     @Nullable 
  17.     private StopWatch.TaskInfo lastTaskInfo; 
  18.     private int taskCount; 
  19.     private long totalTimeNanos; 
  20.  
  21.     public StopWatch() { 
  22.         this(""); 
  23.     } 
  24.  
  25.     public StopWatch(String id) { 
  26.         this.keepTaskList = true
  27.         this.taskList = new LinkedList(); 
  28.         this.id = id; 
  29.     } 
  30.  
  31.     public String getId() { 
  32.         return this.id; 
  33.     } 
  34.  
  35.     public void setKeepTaskList(boolean keepTaskList) { 
  36.         this.keepTaskList = keepTaskList; 
  37.     } 
  38.  
  39.     public void start() throws IllegalStateException { 
  40.         this.start(""); 
  41.     } 
  42.  
  43.     public void start(String taskName) throws IllegalStateException { 
  44.         if (this.currentTaskName != null) { 
  45.             throw new IllegalStateException("Can't start StopWatch: it's already running"); 
  46.         } else { 
  47.             this.currentTaskName = taskName; 
  48.             this.startTimeNanos = System.nanoTime(); 
  49.         } 
  50.     } 
  51.  
  52.     public void stop() throws IllegalStateException { 
  53.         if (this.currentTaskName == null) { 
  54.             throw new IllegalStateException("Can't stop StopWatch: it's not running"); 
  55.         } else { 
  56.             long lastTime = System.nanoTime() - this.startTimeNanos; 
  57.             this.totalTimeNanos += lastTime; 
  58.             this.lastTaskInfo = new StopWatch.TaskInfo(this.currentTaskName, lastTime); 
  59.             if (this.keepTaskList) { 
  60.                 this.taskList.add(this.lastTaskInfo); 
  61.             } 
  62.  
  63.             ++this.taskCount; 
  64.             this.currentTaskName = null
  65.         } 
  66.     } 
  67.     // .... 忽略其他代碼 

從上述 start() 和 stop() 的源碼中可以看出,Spring 實現時間統計的本質還是使用了 Java 的內置方法 System.nanoTime() 來實現的。

2.Google Stopwatch 原理分析

Google Stopwatch 實現的核心源碼如下:

  1. public final class Stopwatch { 
  2.     private final Ticker ticker; 
  3.     private boolean isRunning; 
  4.     private long elapsedNanos; 
  5.     private long startTick; 
  6.     @CanIgnoreReturnValue 
  7.     public Stopwatch start() { 
  8.         Preconditions.checkState(!this.isRunning, "This stopwatch is already running."); 
  9.         this.isRunning = true
  10.         this.startTick = this.ticker.read(); 
  11.         return this; 
  12.     } 
  13.  
  14.     @CanIgnoreReturnValue 
  15.     public Stopwatch stop() { 
  16.         long tick = this.ticker.read(); 
  17.         Preconditions.checkState(this.isRunning, "This stopwatch is already stopped."); 
  18.         this.isRunning = false
  19.         this.elapsedNanos += tick - this.startTick; 
  20.         return this; 
  21.     } 
  22.     // 忽略其他源碼... 

從上述源碼中可以看出 Stopwatch 對象中調用了 ticker 類來實現時間統計的,那接下來我們進入 ticker 類的實現源碼:

  1. public abstract class Ticker { 
  2.     private static final Ticker SYSTEM_TICKER = new Ticker() { 
  3.         public long read() { 
  4.             return Platform.systemNanoTime(); 
  5.         } 
  6.     }; 
  7.     protected Ticker() { 
  8.     } 
  9.     public abstract long read(); 
  10.     public static Ticker systemTicker() { 
  11.         return SYSTEM_TICKER; 
  12.     } 
  13. final class Platform { 
  14.     private static final Logger logger = Logger.getLogger(Platform.class.getName()); 
  15.     private static final PatternCompiler patternCompiler = loadPatternCompiler(); 
  16.  
  17.     private Platform() { 
  18.     } 
  19.  
  20.     static long systemNanoTime() { 
  21.         return System.nanoTime(); 
  22.     } 
  23.     // 忽略其他源碼... 

從上述源碼可以看出 Google Stopwatch 實現時間統計的本質還是調用了 Java 內置的 System.nanoTime() 來實現的。

結論

對于所有框架的 StopWatch 來說,其底層都是通過調用 Java 內置的 System.nanoTime() 得到兩個時間,開始時間和結束時間,然后再通過結束時間減去開始時間來統計執行時間的。

總結

本文介紹了 6 種實現代碼統計的方法,其中 3 種是 Java 內置的方法:

  • System.currentTimeMillis()
  • System.nanoTime()
  • new Date()

還介紹了 3 種常用框架 spring、commons-langs3、guava 的時間統計器 StopWatch。

在沒有用到 spring、commons-langs3、guava 任意一種框架的情況下,推薦使用 System.currentTimeMillis() 或 System.nanoTime() 來實現代碼統計,否則建議直接使用StopWatch 對象來統計執行時間。

知識擴展—Stopwatch 讓統計更方便

StopWatch 存在的意義是讓代碼統計更簡單,比如 Guava 中 StopWatch 使用示例如下:

  1. import com.google.common.base.Stopwatch; 
  2.  
  3. import java.util.concurrent.TimeUnit; 
  4.  
  5. public class TimeIntervalTest { 
  6.     public static void main(String[] args) throws InterruptedException { 
  7.         // 創建并啟動計時器 
  8.         Stopwatch stopwatch = Stopwatch.createStarted(); 
  9.         // 執行時間(1s) 
  10.         Thread.sleep(1000); 
  11.         // 停止計時器 
  12.         stopwatch.stop(); 
  13.         // 執行統計 
  14.         System.out.printf("執行時長:%d 毫秒. %n"
  15.                 stopwatch.elapsed(TimeUnit.MILLISECONDS)); 
  16.         // 清空計時器 
  17.         stopwatch.reset(); 
  18.         // 再次啟動統計 
  19.         stopwatch.start(); 
  20.         // 執行時間(2s) 
  21.         Thread.sleep(2000); 
  22.         // 停止計時器 
  23.         stopwatch.stop(); 
  24.         // 執行統計 
  25.         System.out.printf("執行時長:%d 秒. %n"
  26.                 stopwatch.elapsed(TimeUnit.MILLISECONDS)); 
  27.     } 

我們可以使用一個 Stopwatch 對象統計多段代碼的執行時間,也可以通過指定時間類型直接統計出對應的時間間隔,比如我們可以指定時間的統計單位,如秒、毫秒、納秒等類型。

原文鏈接:https://mp.weixin.qq.com/s/e5UeSfygPUWf49AtD0RgMQ

 

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2018-07-18 15:13:56

MCU代碼時間

2010-09-08 15:00:03

SQL語句執行

2012-01-10 10:44:36

字符串

2010-11-18 15:53:30

Oracle語句執行時

2021-02-24 11:44:35

語言計算函數嵌入式系統

2009-11-26 11:05:44

PHP計算頁面執行時間

2024-05-10 08:44:53

C#軟件開發優化代碼

2011-05-17 13:32:04

oracle

2025-01-16 07:00:00

AOPSpringBoot后端

2023-01-27 15:28:04

開發Python內存

2010-09-06 13:17:19

SQL Server語句

2010-04-28 12:33:36

Oracle自定義函數

2024-04-12 07:50:40

Python監控利器Time 模塊

2024-07-03 13:51:02

SQL毛刺數據庫

2019-08-28 07:45:45

數據存儲層多線程

2018-11-22 09:15:45

Linux命令進程

2020-08-03 16:00:31

Linux命令進程

2024-05-07 08:55:46

C#軟件開發代碼執行時間

2022-09-13 08:51:26

Python性能優化

2021-11-05 07:47:55

API計算任務
點贊
收藏

51CTO技術棧公眾號

欧美综合色免费| 久久麻豆一区二区| 久久99热精品这里久久精品| 国产69视频在线观看| 亚洲欧洲美洲av| 日韩一区欧美一区| 欧美三级电影在线播放| 一本色道久久综合无码人妻| 在线看片成人| 精品激情国产视频| 精品国产av色一区二区深夜久久 | 欧美激情欧美激情在线五月| jizz欧美性20| 欧美日韩黄色| 欧美色图12p| 777av视频| 国产福利视频在线| 国产调教视频一区| 粉嫩精品一区二区三区在线观看 | 蜜桃精品视频在线观看| 欧美精品aaa| 国产在线免费av| 美国十次av导航亚洲入口| 欧美日韩在线播放三区四区| 国产青青在线视频| av大大超碰在线| 国产精品素人视频| 久久另类ts人妖一区二区| 99久久精品无免国产免费| 日本午夜精品一区二区三区电影| 欧美精品videos性欧美| 神马午夜精品91| 青青草97国产精品麻豆| 亚洲美女视频网站| 一区二区免费在线观看视频| 一区二区三区欧洲区| 欧美精品国产精品| 波多结衣在线观看| 3d性欧美动漫精品xxxx软件| 五月激情丁香一区二区三区| heyzo一本久久综合| 欧美在线小视频| 日韩av三级在线| 欧美黄色视屏| 亚洲视频中文字幕| 亚洲狠狠婷婷综合久久久| 久久久久久欧美精品色一二三四| 日韩精品视频免费看| 欧美在线二区| 久久影视电视剧免费网站清宫辞电视| 91l九色lporny| 免费久久久久久久久| 亚洲精品99久久久久中文字幕| 992tv人人草| 国产精品视频一区视频二区| 91精品一区二区三区在线观看| 日本一二区免费| 免费一区二区三区四区| 欧美欧美欧美欧美首页| 亚洲欧美日韩精品一区| 日韩成人在线一区| 欧美精品一二三区| www.久久com| 日韩在线成人| 欧美精品一区二区三区很污很色的| 麻豆免费在线观看视频| 亚洲天堂av资源在线观看| 精品免费视频一区二区| 97精品人妻一区二区三区蜜桃| 97久久亚洲| 日韩hd视频在线观看| 偷拍女澡堂一区二区三区| 九九综合久久| 久久精品夜夜夜夜夜久久| 全网免费在线播放视频入口| 黄色免费成人| 57pao成人永久免费视频| 亚洲精品国产无码| 寂寞少妇一区二区三区| 91观看网站| 三级网站免费观看| 久久精品一区蜜桃臀影院| 天堂精品视频| 日本不卡影院| 欧美日韩一区二区在线| 一区二区三区 欧美| 精品视频在线观看免费观看| 亚洲国产精久久久久久| 第一次破处视频| 欧美freesex交免费视频| 久久人人爽人人| 最近中文字幕免费观看| 国产精品白丝jk黑袜喷水| 精品国产一区二区三区日日嗨| 欧洲亚洲在线| 亚洲免费观看高清完整版在线| 黄色大片中文字幕| 成人在线高清| 欧美精品一区二区三区在线| 国产视频不卡在线| 韩日在线一区| 国产精品av网站| 性欧美8khd高清极品| 久久精品一级爱片| 免费网站在线观看视频| 成人国产精品一区二区免费麻豆| 69堂精品视频| www.自拍偷拍| 夜间精品视频| 国产精品1234| 亚洲三级中文字幕| 久久色视频免费观看| 亚洲一区 在线播放| 校园春色亚洲色图| 精品国产免费久久| 免费看特级毛片| 五月婷婷六月丁香| 成人动漫一区| 色一情一乱一乱一91av| 污免费在线观看| 国精一区二区| 81精品国产乱码久久久久久| 99精品久久久久久中文字幕| 国产色91在线| 成人综合视频在线| 香蕉大人久久国产成人av| 日韩视频精品在线| 99re热视频| 久久久综合精品| 国产天堂视频在线观看| 精品国产亚洲一区二区三区在线| 亚洲深夜福利在线| 亚洲成人av影片| 99视频在线观看一区三区| 无颜之月在线看| 高清久久一区| 久久这里只有精品99| 久草热在线观看| 久久久欧美精品sm网站| 国产精品wwwww| 久久不见久久见国语| 97av在线影院| 日本大片在线观看| 色哟哟欧美精品| 波多野结衣 在线| 亚洲资源av| 麻豆传媒一区| 日日av拍夜夜添久久免费| 亚洲伦理中文字幕| 日韩中文字幕在线观看视频| 91视频国产观看| 狠狠爱免费视频| 免费黄色成人| 国产精品中文字幕在线观看| 97在线观看免费观看高清 | 成人免费观看cn| 凹凸av导航大全精品| 欧美激情亚洲另类| 人妻少妇精品无码专区| 精品成人国产在线观看男人呻吟| 国产视频精品视频| 国产日韩一区二区三区在线| 农村寡妇一区二区三区| 日韩一级二级| 日韩亚洲综合在线| 亚洲国产精品成人久久蜜臀| 亚洲午夜电影在线| 亚洲永久精品ww.7491进入| 久久一二三四| 中文字幕在线亚洲精品| 欧美特黄不卡| 91精品国产91久久久久福利| 美女毛片在线看| 欧美日韩国产色站一区二区三区| 看免费黄色录像| 成+人+亚洲+综合天堂| 久久婷婷国产精品| 欧美mv日韩| 国产成人精品福利一区二区三区 | 国产精品美女免费看| 亚洲xxxxxx| 欧美va亚洲va香蕉在线| 美女又爽又黄免费视频| 国产精品国产自产拍高清av王其| 中文字幕日韩久久| 一本久久知道综合久久| 亚洲国产高清国产精品| 综合伊人久久| 国产精品99久久99久久久二8| 免费高清在线观看| 亚洲精品720p| 国产美女永久免费| 日韩欧美国产视频| 极品久久久久久| 91年精品国产| 又黄又爽又色的视频| 美女久久一区| 国产精品三级一区二区| 精品久久中文| 极品校花啪啪激情久久| 国精品产品一区| 69**夜色精品国产69乱| 成人在线观看亚洲| 亚洲视频在线视频| 亚洲精品国产精| 欧美精品一二三区| 中文字幕在线看人| 亚洲一区在线播放| 2017亚洲天堂| 26uuu亚洲| 国产精品无码自拍| 久久国内精品自在自线400部| 欧美 日韩 亚洲 一区| 亚洲精品a级片| 无遮挡亚洲一区| 少妇久久久久| 国产精品加勒比| 久久伊人久久| 91精品国产综合久久香蕉922| 在线天堂资源| 午夜精品久久久久久久99黑人| 麻豆视频在线观看免费网站| 亚洲欧美国产高清va在线播| 国产成人自拍一区| 91麻豆精品国产91久久久资源速度 | 在线区一区二视频| 中文字幕日韩一级| 亚洲一区二区三区视频在线播放| 香蕉久久久久久久| 国产欧美精品一区| 香蕉视频久久久| 久久网站热最新地址| 亚洲视频在线播放免费| 国产不卡高清在线观看视频| 在线免费黄色网| 精品一区精品二区高清| 一区二区xxx| 青青草国产精品97视觉盛宴| 成人在线免费播放视频| 先锋影音久久| 成人免费观看视频在线观看| 99riav国产精品| 乱人伦xxxx国语对白| 亚洲福利国产| 久久精品视频16| 模特精品在线| 青青草av网站| 免费在线观看不卡| 黄大色黄女片18第一次| 老司机午夜精品| 国产成人美女视频| 国产一区二区伦理片| 在线观看亚洲色图| 久久99精品久久久久| 极品粉嫩美女露脸啪啪| 国产在线精品免费| 日本wwwxx| a亚洲天堂av| 三级电影在线看| 久久影院午夜论| 精品人妻一区二区三区蜜桃视频| 国产拍揄自揄精品视频麻豆| 亚洲女同二女同志奶水| 亚洲老妇xxxxxx| 日本一区二区欧美| 欧美色xxxx| 中文字幕乱码人妻无码久久| 欧美日韩亚洲国产综合| a级片在线播放| 亚洲国产精品va在线| 国产中文字幕在线| 久久精品久久久久久| 第一av在线| 国产激情久久久久| 国产精品xnxxcom| 国产精品乱子乱xxxx| 婷婷精品在线观看| 小说区图片区图片区另类灬| 亚洲国产精品成人| www.av中文字幕| 欧美aaaaaa午夜精品| www激情五月| 91网上在线视频| 任我爽在线视频| 亚洲国产精品天堂| 自拍偷拍福利视频| 欧美成人免费网站| 黄色软件在线| 欧美多人乱p欧美4p久久| 亚洲天堂av影院| 成人免费直播live| 视频福利一区| 先锋影音男人资源| 先锋影音久久| 人妻 丝袜美腿 中文字幕| 久久精品一二三| 久久久精品视频在线| 在线观看国产一区二区| 亚洲乱码在线观看| 中文字幕国产日韩| av女在线播放| 91在线观看免费网站| 亚洲美女久久| 日本高清视频免费在线观看| 日本强好片久久久久久aaa| 日本性生活一级片| 亚洲人成网站色在线观看| 无码人妻丰满熟妇区bbbbxxxx| 日韩三级中文字幕| 成人高清网站| 热re99久久精品国产66热| 日韩一级淫片| 青少年xxxxx性开放hg| 久久深夜福利| 精品1卡二卡三卡四卡老狼| 国产精品灌醉下药二区| 亚洲熟女综合色一区二区三区| 日韩欧美视频在线 | 欧美日韩国产二区| 91另类视频| 免费成人看片网址| 亚洲深夜福利| 精品国产一二区| 亚洲视频一区在线观看| 天天干天天插天天射| 亚洲男人天堂古典| 欧美激情网站| 国产精品中出一区二区三区| 欧美阿v一级看视频| 国产乱码一区二区三区四区| 国产精品美女久久久久aⅴ | 国产一区二三区| 最新日韩免费视频| 欧美性大战久久久久久久蜜臀| 日韩av成人| 欧美在线影院在线视频| 日韩激情网站| 少妇无码av无码专区在线观看| 成人午夜看片网址| 久久国产精品二区| 精品欧美一区二区三区精品久久| 污污的网站在线免费观看| 成人在线播放av| 亚洲免费二区| 久久久精品视频国产| 亚洲天堂精品视频| 999精品国产| 欧美黑人国产人伦爽爽爽| 在线视频亚洲欧美中文| 4444亚洲人成无码网在线观看| 国产一区二区视频在线播放| 中文字幕在线观看成人| 日韩午夜激情视频| 久久香蕉av| 国产亚洲精品久久飘花| 一区二区三区成人精品| 五级黄高潮片90分钟视频| 在线观看国产91| 日本激情在线观看| 亚洲最大av在线| 国产精品v一区二区三区| 尤物网站在线观看| 一本大道久久a久久综合婷婷 | 伦理一区二区| 欧美黄色一级片视频| 国产精品视频免费| av小说天堂网| 性色av一区二区咪爱| 九九热爱视频精品视频| 污污的视频免费| 亚洲综合无码一区二区| 亚洲 美腿 欧美 偷拍| 国产98色在线| 亚洲色图网站| 中文字幕一区三区久久女搜查官| 色综合婷婷久久| 丝袜美腿美女被狂躁在线观看| 亚洲aⅴ日韩av电影在线观看| 136国产福利精品导航网址| 亚洲一区二区三区日韩| 日韩一级完整毛片| 日本不卡一二三| 国产免费一区二区三区四在线播放| 成人午夜av影视| 欧美一级淫片免费视频黄| 久久精品成人动漫| 欧美日韩一区二区三区不卡视频| 亚洲精品一二三四五区| 亚洲一区在线播放| av片在线看| 国产精品一区二区不卡视频| 肉色丝袜一区二区| 九九热这里有精品视频| 亚洲日本成人网| 无码国模国产在线观看| 天堂在线资源视频| 亚洲成人av福利| 麻豆视频在线| 久久精彩视频| 国产成人精品aa毛片|