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

Apworks框架各種倉儲實現的性能基準測試

開發 后端
周末抽空簡單地對Apworks框架所支持的三種倉儲實現:Entity Framework、NHibernate以及MongoDB進行了性能基準測試,并對其結果進行對比。從對比的結果來看,MongoDB倉儲的性能要遠勝于其它兩者。基準測試采用的是我在兩年前開發的一個基于Visual Studio Unit Test Framework的基準測試程序(名為:Visual Benchmark),該程序可以設定基準測試引擎,并對測試結果進行圖形化呈現。在本文末尾會簡要地對此軟件進行介紹,有興趣的朋友不妨了解一下。

單體測試的設計

由于Visual Benchmark是基于Visual Studio Unit Test Framework的單體測試用例的,因此,我們只需要在Visual Studio中開發有待測試的單體測試程序即可。在開發單體測試程序之前,首先讓我們了解一下Visual Benchmark所支持的“迭代基準測試”模式。所謂“迭代基準測試”,意思就是Visual Benchmark會循環地調用單體測試方法并在每次調用結束時,統計當前“代”中所消耗的CPU周期或者時間;當Visual Benchmark完成整個測試之后,會將各代的統計結果組織并顯示出來。在這個過程中,單體測試方法可以通過Visual Benchmark所提供的基準測試參數來獲得當前所處的“代”數(也就是循環因子的值),然后就可以基于這個“代”數對測試數據進行模擬,以反映出隨著測試數據的增長,單體測試方法的執行效率。

舉例來說,在測試三種不同的倉儲對于聚合的保存執行效率時,我首先在Visual Studio中新建了一個Unit Test類,并在類中定義了兩個成員變量:

  1. [TestClass] 
  2. public class InsertAggregateRootsTest 
  3.     private int thisIteration; 
  4.     private IEnumerable<SalesOrder> mockSalesOrders; 
  5.     // 其它部分暫時省略 

第一個成員變量thisIteration用來保存從Visual Benchmark傳入的“代”數;而第二個成員變量mockSalesOrders則是保存了一組即將通過倉儲插入的聚合模擬數據。

接下來,我在這個測試類中加入了Test Initialize的方法,以便在每次測試方法被調用前,執行一些數據初始化的操作。在這個方法中,會對以上兩個成員變量初始化,同時清空后臺數據庫,為執行測試做準備。

  1. [TestInitialize()] 
  2. public void MyTestInitialize() 
  3.     thisIteration = (int)BenchmarkRuntimeArgs.Instance.ThisIteration; 
  4.     mockSalesOrders = Helper.MockSalesOrders(thisIteration); 
  5.     Helper.ClearSQLServerTables(); 
  6.     Helper.ClearMongoDB(); 

在上面的方法中,首先使用BenchmarkRuntimeArgs.Instance.ThisIteration對thisIteration進行初始化,以便獲得當前測試的“代”。BenchmarkRuntimeArgs是一個跨應用程序域的單件(Singleton),在每次執行Benchmark之前都會被初始化。然后根據獲得的“代”數,創建聚合模擬數據。此處mockSalesOrders中所包含的數據量會隨著“代”數的增長而增加,以反映隨著數據量的增長,被測函數的性能趨勢。最后,使用Helper類清空后臺數據庫。

由于倉儲的實現是基于不同的應用框架,因此,在所有測試啟動前,需要對這些框架進行初始化。有寫過單體測試的朋友都知道,這部分邏輯應該寫在Class Initialize的方法中:

  1. [ClassInitialize()] 
  2. public static void MyClassInitialize(TestContext testContext) 
  3.     Database.SetInitializer<EntityFrameworkDbContext>(new 
  4.         DropCreateDatabaseIfModelChanges<EntityFrameworkDbContext>()); 
  5.     MongoDBRepositoryContext.RegisterConventions(); 
  6.     if (!BsonClassMap.IsClassMapRegistered(typeof(SalesLine))) 
  7.     { 
  8.         BsonClassMap.RegisterClassMap<SalesLine>(p => 
  9.         { 
  10.             p.AutoMap(); 
  11.             p.UnmapProperty<SalesOrder>(q => q.SalesOrder); 
  12.         }); 
  13.     } 

在這里并沒有使用代碼的方式對NHibernate框架進行初始化,因為NHibernate的初始化過程是由Apworks中的NHibernateApplicationConfiguration類型完成的,這個類型依賴應用程序的app/web.config文件。所以我們需要在單體測試項目中添加app.config以及相關的配置節點。篇幅原因,這里就不貼app.config的代碼了,文章末尾我會給出源代碼。Visual Benchmark支持在“客戶應用程序域”(Client AppDomain)中裝載app/web.config文件。

現在,可以開始寫測試方法了,以下是基于三種不同倉儲實現的測試方法。從各方法中我們可以看到,除了所創建的IRepositoryContext、IRepository的具體實現不同之外,其它的操作邏輯完全相同:即通過倉儲對聚合進行保存:

  1. [TestMethod] 
  2. public void EntityFramework() 
  3.     using (IRepositoryContext context = new EntityFrameworkRepositoryContext(new EntityFrameworkDbContext())) 
  4.     { 
  5.         IRepository<SalesOrder> salesOrderRepository = new EntityFrameworkRepository<SalesOrder>(context); 
  6.         foreach (var salesOrder in mockSalesOrders) 
  7.             salesOrderRepository.Add(salesOrder); 
  8.         context.Commit(); 
  9.     } 
  10.   
  11. [TestMethod] 
  12. public void NHibernate() 
  13.     using (IRepositoryContext context = new NHibernateContext(new NHibernateApplicationConfiguration())) 
  14.     { 
  15.         IRepository<SalesOrder> salesOrderRepository = new NHibernateRepository<SalesOrder>(context); 
  16.         foreach (var salesOrder in mockSalesOrders) 
  17.             salesOrderRepository.Add(salesOrder); 
  18.         context.Commit(); 
  19.     } 
  20.   
  21. [TestMethod] 
  22. public void MongoDB() 
  23.     using (IRepositoryContext context = new MongoDBRepositoryContext(new MongoDBRepositoryContextSettings())) 
  24.     { 
  25.         IRepository<SalesOrder> salesOrderRepository = new MongoDBRepository<SalesOrder>(context); 
  26.         foreach (var salesOrder in mockSalesOrders) 
  27.             salesOrderRepository.Add(salesOrder); 
  28.         context.Commit(); 
  29.     } 

執行測試

首先,我們在Visual Studio中測試這三個方法,以確保每個方法都能夠正確完成。在啟動測試之前,先回到上面的MyTestInitialize方法,將thisIteration設置為一個固定的整數值,比如20,以便測試能夠正常啟動。在完成三個方法的測試之后,我們可以通過Test Results窗口看到測試結果。

image

打開Visual Benchmark,新建一個Session,在“打開”對話框中,選擇已經編譯好的DLL文件,此時Visual Benchmark會將其中包含的所有的測試類和測試方法加載到左邊的樹形結構中。在樹形結構中,選中需要測試的方法,然后單擊“開始”按鈕,Visual Benchmark便會針對所選的測試方法進行基準測試。最后,會根據不同的測試引擎的設計,將結果顯示出來。

image

測試結果

Visual Benchmark能夠根據設置,采用一些減噪手段以盡量保證測試結果的真實性。通過所測結果不難看出,在我所測試的三個場景中,基于MongoDB實現的倉儲,性能要優于其它兩者。而NHibernate倉儲又要好于Entity Framework倉儲。

測試環境

以下是執行測試的環境配置:

CPU:Intel Core i5-540M Cores: 2 Logical: 4

Chipset:Intel QM57 (IbexPeak-M DO)

Memory:Hynix 666.7MHz (PC3-10600) 2048MB x1, Kingston 666.7MHz (PC3-10600) 4096MB x1. Totally 6144MB

OS:Microsoft Windows 7 Enterprise (x64) Build 7601

場景一:聚合保存

Insert

注:上圖中X軸表示的是“代”數,亦即模擬的聚合數量;Y軸表示執行時間(毫秒數)。下同。

場景二:聚合查詢

Retrieve

注:在此場景中,EntityFramework支線所表示的是使用Eager Loading將SalesOrder及其下所有Sales Lines實體讀出所開銷的時間;而EntityFramework_NoEagerLoad支線所表示的是僅讀出SalesOrder(不包括其下所有Sales Lines)所開銷的時間。

場景三:查詢所有并刪除

FindAndDelete

關于Visual Benchmark

Visual Benchmark是我在2010年開發的一款基于Visual Studio單體測試框架的性能基準測試程序,從整體上看,Visual Benchmark具有如下架構設計:

image

首先,Visual Benchmark和被測試的程序集都是基于Microsoft .NET Framework的,在Visual Benchmark中,基準測試的執行是以Session為單位的。Engine Management System為Visual Benchmark提供了安全的、可擴展的基準測試引擎管理系統,因此,通過這套管理系統,用戶可以選用各種不同的引擎進行測試,開發人員也可以根據自己的實際需求對引擎進行二次開發與定制,并應用到Visual Benchmark系統中。

其次,當Session被打開時,它會通過Remote Proxy將被測試的程序集裝載到客戶應用程序域(Client AppDomain)中。這樣做的理由是:1、能夠在完成測試后,以AppDomain.Unload的方式卸載被測試程序集;2、能夠在裝載程序集時,同時將app/web.config和resource都裝載到Client AppDomain中,以此模擬真實的執行環境。

功能技術特點

Visual Benchmark具有如下功能技術特點:

可定制的基準測量標尺:開發人員可以自己開發基準測試的測量標尺。目前僅支持兩種:StopwatchTickRuler和StopwatchMillisecondsRuler。上文的測試采用的是StopwatchMillisecondsRuler

可定制的測試引擎:開發人員可以根據需求定制開發測試引擎。框架提供了完整的引擎定制功能,這包括:引擎的元數據(例如名稱、作者、描述等)、版本、配置界面、結果顯示界面以及HTML文檔。目前支持Iterated Throughput、Simple、Simple Iteration以及Throughput四種引擎。上文的測試采用了Simple Iteration引擎

減噪選項:使用減噪選項以獲得更真實的測試數據。Visual Benchmark提供兩個減噪選項:在每次執行測試之前強制垃圾回收、丟棄第一次的測試結果。測試引擎也會根據情況提供獲取平均執行時間的選項

在客戶應用程序域(Client AppDomain)中執行基準測試:能夠對單體測試環境進行模擬,被測方法能夠正常地訪問配置文件和資源文件

跨AppDomain的單件(Singleton)實現:能夠方便地在單體測試方法中讀取Visual Benchmark的相關參數信息

多線程執行:用戶可以隨時停止Benchmark的執行

界面截圖

基于兩種不同引擎的執行結果顯示

image

測試引擎的配置界面與文檔界面

image

Session信息與客戶應用程序域(Client AppDomain)信息

image

總結

本文對Apworks框架中所支持的三種倉儲實現進行了性能上的基準測試,并得出了測試結果。在最開始的時候,我是打算結合Visual Studio的測試框架來完成這些工作的,但后來發現Visual Studio的測試框架所提供的功能并不能達到我的需求,之前也采用了Visual Studio的Load Test來做壓力測試,但是效果并不算太理想。在下才疏學淺,并沒有弄通Visual Studio提供的強大測試功能,所以也只能借用我之前寫的Visual Benchmark程序了。如果有讀者朋友知道如何在Visual Studio中完成類似的測試工作,還煩請告知在下,我會虛心向您學習。

下一步,我將對Apworks框架的線程安全性做一些評估,等到有了滿意的結果,我也會將相關經驗分享出來。

原文鏈接:http://www.cnblogs.com/daxnet/archive/2012/07/31/2616197.html

【編輯推薦】

 

責任編輯:彭凡 來源: 博客園
相關推薦

2016-09-23 16:36:25

LinuxPCPhoronix

2023-07-31 09:13:13

ValidatorGolang

2021-07-17 15:25:05

PHP 8.1基準測試開發

2024-03-06 18:09:06

Linux性能工具

2009-10-10 11:11:40

服務器測試

2025-01-06 06:10:00

開源.NEThttps://mp

2021-07-08 14:59:05

JMHMongodb數據

2022-03-29 11:48:40

Go泛型測試

2013-05-07 09:47:30

測試MySQLMySQL測試

2023-08-30 13:22:00

測試框架工具

2019-06-19 10:00:45

vue.jsimbajavascript

2011-07-19 09:35:46

.Net

2012-12-18 13:32:45

IBMdW

2023-12-21 14:02:35

機器學習深度學習

2015-06-17 13:58:22

Java序列化庫

2009-06-23 15:51:00

JSF框架

2020-10-23 14:05:39

AI 服務器測試

2023-05-12 07:38:46

Python基準測試性能分析

2015-07-21 09:18:48

Windows 10Windows 8性能

2011-09-22 13:49:44

XML基準測試
點贊
收藏

51CTO技術棧公眾號

欧美一卡在线观看| 日韩激情中文字幕| 精品国产伦一区二区三区观看体验 | 亚洲s色大片| 激情综合色丁香一区二区| 久久久99免费视频| 无码人妻一区二区三区一| 18aaaa精品欧美大片h| 久久综合久久鬼色| 国产欧美精品xxxx另类| 欧美精品99久久久| 最新亚洲精品| 91精品国产欧美一区二区| www.日本在线视频| 毛片在线播放网址| 国产资源在线一区| 久久久久久久成人| 日本少妇高潮喷水xxxxxxx| 香蕉成人在线| 精品高清一区二区三区| 一区二区在线观看网站| 理论片中文字幕| www.四虎在线观看| 欧美成免费一区二区视频| 日韩欧美一二三| 蜜臀av午夜一区二区三区| 日韩美女网站| 国产精品自拍在线| 欧美主播福利视频| 91高清免费观看| 天天久久夜夜| 欧美一级黄色大片| 91蝌蚪视频在线观看| 欧美理论电影| 久久精品欧美一区二区三区不卡 | 国产精品久久久久久久久免费高清| 日韩毛片在线免费观看| 久久久久一区二区| 性做久久久久久久| 美女任你摸久久| 欧美成人精品在线| 免费成人深夜天涯网站| 国产成人精品福利| 91精品国产综合久久精品图片| 久久视频这里有精品| 黄色成人在线| 国产欧美日韩三级| 国产91精品一区二区绿帽| 中文在线字幕av| 亚洲专区一区| 97人人模人人爽人人喊中文字| 久久久久久国产免费a片| 欧美丝袜美腿| 6080日韩午夜伦伦午夜伦| 老熟妇仑乱视频一区二区 | 久久理论电影网| av成人午夜| 国产一区二区小视频| 日韩成人精品在线观看| 欧美激情女人20p| 最新av电影网站| 亚洲精品一区二区三区四区| 日本成人中文| 精品国产一区久久| 黄色激情在线观看| 国产精品色婷婷在线观看| 欧美日韩国产一区二区三区| aa视频在线播放| 黄色免费在线观看| 亚洲丝袜制服诱惑| 三上悠亚免费在线观看| 日本成人网址| 中文字幕综合网| 玖玖精品在线视频| 男女在线观看视频| 欧美日韩一区免费| 蜜桃免费在线视频| 日韩三级不卡| 日韩国产高清视频在线| 伊人网在线视频观看| 日韩精品中文字幕第1页| 久久香蕉国产线看观看av| 久久黄色免费视频| 在线不卡亚洲| 欧美在线视频免费| 亚洲高清视频免费观看| 麻豆精品视频在线观看| 91久久国产综合久久91精品网站| 99久久精品国产色欲| 国产精品夜夜爽| 国产精品高清一区二区三区| 十八禁一区二区三区| 久久一区二区三区国产精品| 先锋影音日韩| caopo在线| 亚洲宅男天堂在线观看无病毒| 国产精品专区在线| 欧美性理论片在线观看片免费| 欧美另类一区二区三区| 久久久久亚洲av无码专区首jn| 中文成人激情娱乐网| 日韩欧美一区二区免费| 女同性恋一区二区三区| 欧美中文一区二区| 欧美日韩成人在线播放| 中文字幕第15页| 日本不卡不卡| www激情久久| 亚洲欧美精品| av电影在线地址| 欧美在线免费播放| 中国老熟女重囗味hdxx| 美日韩黄色大片| 色噜噜狠狠狠综合曰曰曰88av| 亚洲成人生活片| 99在线精品免费视频九九视 | 欧美三级在线免费观看| 欧美激情偷拍| 国产ts一区二区| 国产三级午夜理伦三级| av电影在线观看完整版一区二区| 亚洲国产精品视频一区| 国产精品人妻一区二区三区| 成人蜜臀av电影| 波多野结衣激情| 欧美日韩国产网站| 日韩黄色在线免费观看| 久久久久无码精品国产| 狠狠v欧美v日韩v亚洲ⅴ| 欧美在线激情| 美女高潮视频在线看| 日韩欧美久久一区| 日本一级片免费| 日韩精品视频网站| 欧美极品一区| 亚洲同志男男gay1069网站| 日韩手机在线导航| 免费在线观看h片| 久久成人免费网| 日韩欧美亚洲v片| 中文字幕在线中文字幕在线中三区| 日韩精品在线一区二区| 九九热国产在线| 国产很黄免费观看久久| 黄色网在线视频| 亚洲不卡视频| 久久久久久亚洲| 蜜桃在线一区二区| 亚洲综合另类小说| av在线天堂网| 1024成人| 精品一区久久久久久| 国产色播av在线| 狂野欧美一区| 91精品久久久久久久久青青| 午夜视频在线观看网站| 精品视频一区二区不卡| 欧美美女性生活视频| 久久精品国产一区二区三 | 天天天综合网| 96精品久久久久中文字幕| 成人日批视频| 精品三级av在线| 国产精品黄色网| 99亚偷拍自图区亚洲| 久久久999视频| 精品视频免费在线观看| 成人国产精品久久久| 午夜激情在线| 日韩精品在线观看网站| 无码任你躁久久久久久久| 亚洲国产精品激情在线观看| 亚洲一级免费在线观看| 外国成人免费视频| 国产精品一区二区三区在线观| av综合电影网站| 综合久久五月天| 超碰在线播放97| 精品欧美aⅴ在线网站| 国产三级av在线播放| 久久激五月天综合精品| 国产欧美日韩小视频| 精品一区欧美| 亚洲a级在线观看| 男人的天堂免费在线视频| 国产一区二区三区直播精品电影| 91国在线视频| 欧美日韩一区二区免费视频| 国产大屁股喷水视频在线观看| 久草中文综合在线| 成人在线观看你懂的| 欧洲杯足球赛直播| www.一区二区三区| 国产亚洲一区二区手机在线观看| 欧美成人免费全部观看天天性色| 色丁香婷婷综合久久| 欧美日韩国产色站一区二区三区| 久久免费在线观看视频| 国产精品视频免费看| 四虎精品一区二区| 精品影院一区二区久久久| 国产二区视频在线| 色婷婷亚洲mv天堂mv在影片| 精品国产中文字幕| 国产suv一区二区| 国产在线观看一区二区| 免费看的黄色大片| 综合天天久久| 日韩精品欧美一区二区三区| 中文久久电影小说| 成人国产精品久久久久久亚洲| 国产三级电影在线播放| 麻豆一区二区在线观看| 欧美性孕妇孕交| 欧美疯狂做受xxxx富婆| 无码人妻丰满熟妇奶水区码| 亚洲愉拍自拍另类高清精品| 日本在线观看网址| 久久久久九九视频| 亚洲久久久久久| 国产不卡高清在线观看视频| 国内自拍第二页| 美国十次了思思久久精品导航 | 女人18毛片毛片毛片毛片区二| 91色婷婷久久久久合中文| 午夜影院免费版| 久久99久久精品| 高清一区在线观看| 日韩专区一卡二卡| 国产黄色一级网站| 日韩一级免费| 免费看毛片的网址| 欧美精选一区| 性做爰过程免费播放| 色婷婷综合网| 国产高清精品软男同| 成人影视亚洲图片在线| 亚洲va韩国va欧美va精四季| 国产精品三级| 欧美一区二区综合| 精品国产一区二区三区| 欧美一区二区三区在线播放| 蜜桃国内精品久久久久软件9| 国产午夜精品在线| 国产欧美一区二区三区米奇| 国产精品免费在线| 精品人人人人| 久久久久se| 久久成人av| 欧美精品亚洲精品| 免费欧美激情| 色姑娘综合网| 久久看人人摘| 中国一区二区三区| 一区二区在线| 国产精品av免费观看| 国产尤物精品| 黄色一级片播放| 美女久久一区| 在线免费观看av的网站| 182tv在线播放| 亚洲免费精彩视频| 高清毛片在线看| 色综合影院在线| 成人av福利| 久久久久久国产| 久久人体大尺度| 国产综合久久久久| 天堂久久av| 美日韩精品免费| 欧美日韩一区二区三区视频播放| 在线观看欧美一区| 激情综合网址| 亚洲免费av一区二区三区| 精品一区中文字幕| 美女扒开腿免费视频| 久久免费视频一区| 亚洲欧美精品久久| 亚洲无人区一区| 高潮毛片又色又爽免费 | 日本一区二区高清不卡| 青青草原网站在线观看| 国产精品久久久久9999高清| 国产精品入口免费软件| 国产精品亚洲午夜一区二区三区 | 亚洲国产三级在线| 欧美黑人一区二区| 欧美精品v国产精品v日韩精品 | 日韩欧美在线观看免费| 欧美日韩激情一区| 日本人妻熟妇久久久久久 | 国产探花视频在线| 亚洲综合久久久久| 一区二区视频免费| 精品国产凹凸成av人网站| 国产日本在线| 欧美高清在线观看| 日韩和的一区二在线| 99在线看视频| 日韩精品久久| 欧美 日本 亚洲| 国产精品一区二区果冻传媒| 亚洲天堂久久新| 亚洲一区二区三区影院| 在线免费a视频| 日韩精品在线影院| 污视频在线免费观看网站| 国产精品老牛影院在线观看| 国产福利一区二区精品秒拍| 亚洲社区在线观看| 日韩在线 中文字幕| 91精品国模一区二区三区| 青春有你2免费观看完整版在线播放高清 | 欧美xxxx日本和非洲| 亚洲国产精品国自产拍av| 日本网站在线免费观看| 欧美一级生活片| 午夜精品一区| 国产精欧美一区二区三区| 给我免费播放日韩视频| 男人天堂成人网| 美女一区二区三区| 鲁丝一区二区三区| 欧美日韩另类在线| 无码精品视频一区二区三区| 久久综合免费视频影院| 福利视频亚洲| 欧美在线视频二区| 久久福利影视| 亚洲AV无码国产精品| 五月婷婷综合网| 日韩一区二区三区不卡| 欧美激情一区二区三区在线视频观看 | 亚洲午夜精品一区二区国产 | 黄色影视在线观看| 久久99在线观看| 黄色片网站在线播放| 欧洲国产伦久久久久久久| 日本人妖在线| 91干在线观看| 天天躁日日躁狠狠躁欧美巨大小说| 欧美成人精品免费| 成人久久久精品乱码一区二区三区 | 精品国内自产拍在线观看视频| www一区二区www免费| 91丝袜美腿高跟国产极品老师| 国产一级片免费观看| 日韩欧美电影一区| 欧美1234区| 精品国产乱码久久久久久蜜柚| 99riav国产精品| 日本japanese极品少妇| 黑人巨大精品欧美一区二区免费| 色网站免费观看| 日本欧美在线视频| 欧美色女视频| 思思久久精品视频| 亚洲精品欧美二区三区中文字幕| 一级黄色片视频| 欧美精品在线免费| 北条麻妃在线一区二区免费播放 | 亚洲一区二区三区色| 麻豆国产精品一区二区三区| 精品无人区一区二区三区| 久久福利影院| 91视频福利网| 亚洲高清久久久| 精品美女视频在线观看免费软件| 国产精品久久久久999| 香蕉国产精品| 欧亚乱熟女一区二区在线| 欧美性猛交xxxx黑人| 春暖花开成人亚洲区| 成人黄色午夜影院| 亚洲激情不卡| 受虐m奴xxx在线观看| 91精品国产色综合久久ai换脸 | 欧美午夜影院| 日本免费福利视频| 欧美日韩成人一区| 超碰激情在线| 中国一区二区三区| 99视频一区二区| 一本大道伊人av久久综合| 欧美激情视频网址| blacked蜜桃精品一区| 在线播放国产视频| 在线观看免费亚洲| 国产丝袜在线播放| 亚洲国产综合自拍| 成人免费毛片嘿嘿连载视频| 乱子伦一区二区三区| 欧美福利在线观看| 日韩毛片视频| 色呦呦一区二区| 日韩亚洲欧美高清| 草民电影神马电影一区二区| 黄色激情在线视频| 国产精品久久久久久亚洲毛片 | 在线免费看av不卡|