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

Android Training - 代碼性能優化小技巧

移動開發 Android
這篇文章主要介紹一些小細節的優化技巧,雖然這些小技巧不能較大幅度的提升應用性能,但是恰當的運用這些小技巧并發生累積效應的時候,對于整個App的性能提升還是有不小作用的。通常來說,選擇合適的算法與數據結構會是你首要考慮的因素,在這篇文章中不會涉及這方面的知識點。你應該使用這篇文章中的小技巧作為平時寫代碼的習慣,這樣能夠提升代碼的效率。

這篇文章主要介紹一些小細節的優化技巧,雖然這些小技巧不能較大幅度的提升應用性能,但是恰當的運用這些小技巧并發生累積效應的時候,對于整個App的性能提升還是有不小作用的。通常來說,選擇合適的算法與數據結構會是你首要考慮的因素,在這篇文章中不會涉及這方面的知識點。你應該使用這篇文章中的小技巧作為平時寫代碼的習慣,這樣能夠提升代碼的效率。

通常來說,高效的代碼需要滿足下面兩個原則:

不要做冗余的工作

 

盡量避免執行過多的內存分配操作

 

在優化App時其中一個難點就是讓App能在各種型號的設備上運行。不同版本的虛擬機在不同的處理器上會有不同的運行速度。你甚至不能簡單的認為“設備X的速度是設備Y的F倍”,然后還用這種倍數關系去推測其他設備。另外,在模擬器上的運行速度和在實際設備上的速度沒有半點關系。同樣,設備有沒有JIT也對運行速度有重大影響:在有JIT情況下的***化代碼不一定在沒有JIT的情況下也是***的。

為了確保App在各設備上都能良好運行,就要確保你的代碼在不同檔次的設備上都盡可能的優化。

 

避免創建不必要的對象

 

創建對象從來不是免費的。Generational GC可以使臨時對象的分配變得廉價一些,但是執行分配內存總是比不執行分配操作更昂貴。

隨著你在App中分配更多的對象,你可能需要強制gc,而gc操作會給用戶體驗帶來一點點卡頓。雖然從Android 2.3開始,引入了并發gc,它可以幫助你顯著提升gc的效率,減輕卡頓,但畢竟不必要的內存分配操作還是應該盡量避免。

因此請盡量避免創建不必要的對象,有下面一些例子來說明這個問題:

如果你需要返回一個String對象,并且你知道它最終會需要連接到一個StringBuffer,請修改你的函數實現方式,避免直接進行連接操作,應該采用創建一個臨時對象來做字符串的拼接這個操作。

 

當從已經存在的數據集中抽取出String的時候,嘗試返回原數據的substring對象,而不是創建一個重復的對象。使用substring的方式,你將會得到一個新的String對象,但是這個string對象是和原string共享內部char[]空間的。

 

一個稍微激進點的做法是把所有多維的數據分解成一維的數組:

一組int數據要比一組Integer對象要好很多。可以得知,兩組一維數組要比一個二維數組更加的有效率。同樣的,這個道理可以推廣至其他原始數據類型。

 

如果你需要實現一個數組用來存放(Foo,Bar)的對象,記住使用Foo[]與Bar[]要比(Foo,Bar)好很多。(例外的是,為了某些好的API的設計,可以適當做一些妥協。但是在自己的代碼內部,你應該多多使用分解后的容易)。

 

通常來說,需要避免創建更多的臨時對象。更少的對象意味者更少的gc動作,gc會對用戶體驗有比較直接的影響。

 

選擇Static而不是Virtual

 

如果你不需要訪問一個對象的值,請保證這個方法是static類型的,這樣方法調用將快15%-20%。這是一個好的習慣,因為你可以從方法聲明中得知調用無法改變這個對象的狀態。

 

常量聲明為Static Final

 

考慮下面這種聲明的方式

 

 

  1. static final int intVal = 42
  2. static final String strVal = "Hello, world!"

編譯器會使用一個初始化類的函數,然后當類***次被使用的時候執行。這個函數將42存入intVal,還從class文件的常量表中提取了strVal的引用。當之后使用intVal或strVal的時候,他們會直接被查詢到。

我們可以用final關鍵字來優化:

 

 

  1. static final int intVal = 42
  2. static final String strVal = "Hello, world!"

這時再也不需要上面的方法了,因為final聲明的常量進入了靜態dex文件的域初始化部分。調用intVal的代碼會直接使用42,調用strVal的代碼也會使用一個相對廉價的“字符串常量”指令,而不是查表。

Notes:這個優化方法只對原始類型和String類型有效,而不是任意引用類型。不過,在必要時使用static final是個很好的習慣。

避免內部的Getters/Setters

像C++等native language,通常使用getters(i = getCount())而不是直接訪問變量(i = mCount)。這是編寫C++的一種優秀習慣,而且通常也被其他面向對象的語言所采用,例如C#與Java,因為編譯器通常會做inline訪問,而且你需要限制或者調試變量,你可以在任何時候在getter/setter里面添加代碼。

然而,在Android上,這不是一個好的寫法。虛函數的調用比起直接訪問變量要耗費更多。在面向對象編程中,將getter和setting暴露給公用接口是合理的,但在類內部應該僅僅使用域直接訪問。

在沒有JIT(Just In Time Compiler)時,直接訪問變量的速度是調用getter的3倍。有JIT時,直接訪問變量的速度是通過getter訪問的7倍。

請注意,如果你使用ProGuard,你可以獲得同樣的效果,因為ProGuard可以為你inline accessors.

 

使用增強的For循環

 

增強的For循環(也被稱為 for-each 循環)可以被用在實現了 Iterable 接口的 collections 以及數組上。使用collection的時候,Iterator會被分配,用于for-each調用hasNext()和next()方法。使用ArrayList時,手寫的計數式for循環會快3倍(不管有沒有JIT),但是對于其他collection,增強的for-each循環寫法會和迭代器寫法的效率一樣。

請比較下面三種循環的方法:

 

 

  1. static class Foo { 
  2. int mSplat; 
  3.  
  4. Foo[] mArray = ... 
  5.  
  6. public void zero() { 
  7. int sum = 0
  8. for (int i = 0; i < mArray.length; ++i) { 
  9. sum += mArray[i].mSplat; 
  10.  
  11. public void one() { 
  12. int sum = 0
  13. Foo[] localArray = mArray; 
  14. int len = localArray.length; 
  15.  
  16. for (int i = 0; i < len; ++i) { 
  17. sum += localArray[i].mSplat; 
  18.  
  19. public void two() { 
  20. int sum = 0
  21. for (Foo a : mArray) { 
  22. sum += a.mSplat; 

 

zero()是最慢的,因為JIT沒有辦法對它進行優化。

 

one()稍微快些。

 

two() 在沒有做JIT時是最快的,可是如果經過JIT之后,與方法one()是差不多一樣快的。它使用了增強的循環方法for-each。

 

所以請盡量使用for-each的方法,但是對于ArrayList,請使用方法one()。

Tips:你還可以參考 Josh Bloch 的 《Effective Java》這本書的第46條

使用包級訪問而不是內部類的私有訪問

參考下面一段代碼

 

 

  1. public class Foo { 
  2. private class Inner { 
  3. void stuff() { 
  4. Foo.this.doStuff(Foo.this.mValue); 
  5.  
  6. private int mValue; 
  7.  
  8. public void run() { 
  9. Inner in = new Inner(); 
  10. mValue = 27
  11. in.stuff(); 
  12.  
  13. private void doStuff(int value) { 
  14. System.out.println("Value is " + value); 

 

這里重要的是,我們定義了一個私有的內部類(Foo$Inner),它直接訪問了外部類中的私有方法以及私有成員對象。這是合法的,這段代碼也會如同預期一樣打印出”Value is 27”。

問題是,VM因為Foo和Foo$Inner是不同的類,會認為在Foo$Inner中直接訪問Foo類的私有成員是不合法的。即使Java語言允許內部類訪問外部類的私有成員。為了去除這種差異,編譯器會產生一些仿造函數:

 

 

  1. /*package*/ static int Foo.access$100(Foo foo) { 
  2. return foo.mValue; 
  3. /*package*/ static void Foo.access$200(Foo foo, int value) { 
  4. foo.doStuff(value); 

每當內部類需要訪問外部類中的mValue成員或需要調用doStuff()函數時,它都會調用這些靜態方法。這意味著,上面的代碼可以歸結為,通過accessor函數來訪問成員變量。早些時候我們說過,通過accessor會比直接訪問域要慢。所以,這是一個特定語言用法造成性能降低的例子。

如果你正在性能熱區(hotspot:高頻率、重復執行的代碼段)使用像這樣的代碼,你可以把內部類需要訪問的域和方法聲明為包級訪問,而不是私有訪問權限。不幸的是,這意味著在相同包中的其他類也可以直接訪問這些域,所以在公開的API中你不能這樣做。

 

避免使用float類型

 

Android系統中float類型的數據存取速度是int類型的一半,盡量優先采用int類型。

就速度而言,現代硬件上,float 和 double 的速度是一樣的。空間而言,double 是兩倍float的大小。在空間不是問題的情況下,你應該使用 double 。

同樣,對于整型,有些處理器實現了硬件幾倍的乘法,但是沒有除法。這時,整型的除法和取余是在軟件內部實現的,這在你使用哈希表或大量計算操作時要考慮到。

 

使用庫函數

 

除了那些常見的讓你多使用自帶庫函數的理由以外,記得系統函數有時可以替代第三方庫,并且還有匯編級別的優化,他們通常比帶有JIT的Java編譯出來的代碼更高效。典型的例子是:Android API 中的 String.indexOf(),Dalvik出于內聯性能考慮將其替換。同樣 System.arraycopy()函數也被替換,這樣的性能在Nexus One測試,比手寫的for循環并使用JIT還快9倍。

Tips:參見 Josh Bloch 的 《Effective Java》這本書的第47條

謹慎使用native函數

結合Android NDK使用native代碼開發,并不總是比Java直接開發的效率更好的。Java轉native代碼是有代價的,而且JIT不能在這種情況下做優化。如果你在native代碼中分配資源(比如native堆上的內存,文件描述符等等),這會對收集這些資源造成巨大的困難。你同時也需要為各種架構重新編譯代碼(而不是依賴JIT)。你甚至對已同樣架構的設備都需要編譯多個版本:為G1的ARM架構編譯的版本不能完全使用Nexus One上ARM架構的優勢,反之亦然。

Native 代碼是在你已經有本地代碼,想把它移植到Android平臺時有優勢,而不是為了優化已有的Android Java代碼使用。

如果你要使用JNI,請學習JNI Tips

Tips:參見 Josh Bloch 的 《Effective Java》這本書的第54條

關于性能的誤區

在沒有JIT的設備上,使用一種確切的數據類型確實要比抽象的數據類型速度要更有效率(例如,調用HashMap map要比調用Map map效率更高)。有誤傳效率要高一倍,實際上只是6%左右。而且,在JIT之后,他們直接并沒有大多差異。

在沒有JIT的設備上,讀取緩存域比直接讀取實際數據大概快20%。有JIT時,域讀取和本地讀取基本無差。所以優化并不值得除非你覺得能讓你的代碼更易讀(這對 final, static, static final 域同樣適用)。

 

關于測量

 

在優化之前,你應該確定你遇到了性能問題。你應該確保你能夠準確測量出現在的性能,否則你也不會知道優化是否真的有效。

本章節中所有的技巧都需要Benchmark(基準測試)的支持。Benchmark可以在 code.google.com “dalvik” project 中找到

Benchmark是基于Java版本的 Caliper microbenchmarking框架開發的。Microbenchmarking很難做準確,所以Caliper幫你完成這部分工作,甚至還幫你測了你沒想到需要測量的部分(因為,VM幫你管理了代碼優化,你很難知道這部分優化有多大效果)。我們強烈推薦使用Caliper來做你的基準微測工作。

我們也可以用Traceview 來測量,但是測量的數據是沒有經過JIT優化的,所以實際的效果應該是要比測量的數據稍微好些。

責任編輯:chenqingxiang 來源: 胡凱的博客
相關推薦

2015-09-15 08:30:23

Android代碼優化

2012-07-23 10:22:15

Python性能優化優化技巧

2011-06-14 11:14:10

性能優化代碼

2024-06-21 08:21:44

2009-11-27 13:24:20

PHP代碼性能優化

2021-11-18 08:20:22

接口索引SQL

2020-09-23 09:20:58

代碼Java字符串

2022-11-24 10:34:05

CSS前端

2022-03-10 08:01:06

CSS技巧選擇器

2017-12-23 14:38:41

Android編程開發優化

2009-06-16 16:39:49

Hibernate性能

2022-02-21 13:27:11

接口性能優化索引命令

2014-10-28 16:11:37

AndroidApp性能優化

2009-06-18 11:12:42

Hibernate S優化

2019-02-25 07:07:38

技巧React 優化

2009-12-09 17:33:22

PHP性能優化

2013-06-08 14:19:05

性能優化KVM

2019-08-21 10:53:29

.NET性能優化

2011-07-11 15:26:49

性能優化算法

2023-09-25 13:15:50

SQL數據庫
點贊
收藏

51CTO技術棧公眾號

av网站一区二区三区| 国户精品久久久久久久久久久不卡| 色婷婷亚洲精品| 亚洲一区二区三区精品动漫| av av片在线看| 亚洲美女一区| 色噜噜狠狠狠综合曰曰曰| 久久人妻少妇嫩草av蜜桃| 中文字幕在线视频久| 中文字幕中文字幕在线一区| 91青青草免费在线看| 极品国产91在线网站| 久久久久午夜电影| 日韩经典第一页| 五月天婷婷影视| 日本不良网站在线观看| 国产精品久久久久久久久晋中 | 91 中文字幕| 99国产精品久久久久久久| 日韩在线视频导航| 老司机福利av| 波多野结衣在线一区二区| 欧美午夜电影在线播放| 男人用嘴添女人下身免费视频| av男人的天堂在线| 99精品在线免费| 96成人在线视频| 中文字幕网址在线| 亚洲免费婷婷| 欧美日本高清视频| 国产精品久久久免费看| 亚洲丁香日韩| 亚洲国产成人精品女人久久久| 激情文学亚洲色图| 久久xxx视频| 色婷婷综合在线| 黄页免费在线观看视频| 香蕉久久aⅴ一区二区三区| 国产精品网曝门| 欧美日韩在线精品| 香蕉视频网站在线| 成人av网址在线观看| 亚洲自拍欧美另类| 99精品在线视频观看| 另类成人小视频在线| 国产v综合v亚洲欧美久久| 日本黄色片视频| 红桃视频国产精品| 欧美激情手机在线视频 | 成人欧美一区二区三区在线湿哒哒| 日本视频免费在线| 激情欧美丁香| 国内精品美女av在线播放| 久久国产免费观看| 国产精品99一区二区| 欧美成年人视频网站| 欧美一级特黄高清视频| 欧美3p在线观看| 色爱av美腿丝袜综合粉嫩av | gogogo高清在线观看一区二区| 亚洲精品视频中文字幕| 亚洲av无码一区二区三区观看 | 三区精品视频观看| 男人天堂亚洲二区| 国产欧美一区二区精品性色| 久久综合福利| 国产三级视频在线看| 国产日韩欧美不卡在线| 夜夜爽99久久国产综合精品女不卡| 成年网站在线| 中文字幕亚洲精品在线观看 | 国产黄色在线免费观看| 亚洲免费av观看| 日韩极品视频在线观看| av在线最新| 欧美性猛交xxxx乱大交蜜桃| 欧美性猛交久久久乱大交小说| av在线日韩| 91精品婷婷国产综合久久| 中文字幕视频观看| 婷婷精品在线| zzjj国产精品一区二区| 成人观看免费视频| 亚洲国产综合在线看不卡| 欧美怡红院视频一区二区三区| 国产一区二区视频免费| 韩国一区二区视频| 国产精品一区二区三区精品| 欧美女子与性| 亚洲欧美韩国综合色| 丰满的少妇愉情hd高清果冻传媒| 午夜影视一区二区三区| 欧美三级韩国三级日本三斤| 乳色吐息在线观看| 欧美猛男做受videos| 久久久精品影院| 中文字幕亚洲高清| 久久99精品国产91久久来源| 国产九色精品| 男女啪啪在线观看| 精品日本高清在线播放| 日韩一级在线免费观看| 国产日韩欧美中文在线| 亚洲老头同性xxxxx| 亚洲天堂网av在线| 久久国产精品毛片| 91中文字精品一区二区| 国产爆初菊在线观看免费视频网站 | 精品久久久久久乱码天堂| av网在线观看| 亚洲va国产va欧美va观看| 亚洲欧洲日本精品| 天天做夜夜做人人爱精品| 欧美成人自拍视频| 一区二区自拍偷拍| 97成人超碰视| 青青在线视频免费观看| 全球最大av网站久久| 精品国产在天天线2019| 亚洲一二三四五六区| 亚洲欧美视频一区二区三区| av资源一区二区| 婷婷激情在线| 欧美在线综合视频| 亚洲国产欧美视频| 亚洲经典自拍| 99久热re在线精品视频| 精品孕妇一区二区三区| 在线观看www91| 女人被狂躁c到高潮| 黄色av日韩| 91嫩草免费看| 婷婷色在线播放| 91精品麻豆日日躁夜夜躁| 国产精品麻豆一区| 日韩va亚洲va欧美va久久| 久久久久欧美| 草草在线视频| 亚洲国产精品悠悠久久琪琪| 久久久精品视频在线| 国产精品一区二区在线观看网站| 亚洲一卡二卡三卡| 精品三级在线| 日韩一区二区欧美| 一二三四区在线| 国产精品久久久一区麻豆最新章节| 激情网站五月天| 综合综合综合综合综合网| 欧美亚洲国产视频| 亚洲欧美丝袜中文综合| 亚洲va中文字幕| 在线免费观看污视频| 最新成人av网站| 国产精品一区二区免费| 美女视频在线免费| 亚洲欧美精品一区二区| 免费黄色av片| 久久精品欧美日韩精品| 日本在线观看免费视频| 91日韩欧美| 亚洲iv一区二区三区| 亚洲电影视频在线| 亚洲成人av在线| 在线观看黄网站| 久久久噜噜噜久久人人看| 久久久精品三级| 四季av一区二区凹凸精品| 91中文精品字幕在线视频| 18视频在线观看| 亚洲国产成人av在线| 亚洲高清毛片一区二区| 国产视频一区不卡| 毛片毛片毛片毛| 黄色成人精品网站| 女同一区二区| 国产精品一区二区免费福利视频| 久久视频精品在线| 人妻精品无码一区二区| 日韩欧美在线中文字幕| 毛片久久久久久| 国产高清不卡二三区| 亚洲熟妇无码一区二区三区| 国产亚洲一卡2卡3卡4卡新区 | 久久免费视频观看| 黄色毛片在线观看| 欧美一区二区高清| 五月天综合激情网| 18成人在线观看| 自拍视频一区二区| 理论片日本一区| 欧美成人免费在线观看视频| 日韩欧美综合| 国产伦一区二区三区色一情| 3d欧美精品动漫xxxx无尽| 久久av在线看| jizz日韩| 亚洲精品v欧美精品v日韩精品| 在线观看视频中文字幕| 亚洲成av人影院在线观看网| 中国1级黄色片| 99久久精品国产精品久久| 黄色在线视频网| 亚洲伦理精品| 中国女人做爰视频| 欧洲激情视频| 久久超碰亚洲| 欧美电影院免费观看| 日本久久亚洲电影| 国产精品探花在线| 日韩在线播放视频| 日韩av高清在线| 日韩免费在线观看| 中文字幕在线观看第二页| 性欧美疯狂xxxxbbbb| 三上悠亚作品在线观看| 久久久国产精华| 亚州av综合色区无码一区| 国产乱子轮精品视频| 一区二区成人网| 亚洲欧美日韩国产综合精品二区 | 久草一区二区| 亚洲成人影音| 亚洲一区制服诱惑| 玖玖精品在线| 国产精品欧美在线| 成人勉费视频| 欧美有码在线视频| 九九色在线视频| 欧美精品在线网站| 国产在线看片| 久久精品国产精品亚洲| 日韩在线免费电影| 影音先锋欧美精品| 大乳在线免费观看| 国产亚洲福利一区| 国产精品久久久久一区二区国产| 亚洲国产女人aaa毛片在线| 亚洲精品久久久久久久久久| 日韩亚洲欧美成人一区| 国产又黄又大又爽| 69av一区二区三区| 国产乱淫片视频| 69精品人人人人| av中文字幕免费在线观看| 欧美一区二区免费视频| 国内老熟妇对白hdxxxx| 日韩欧美黄色影院| 亚洲精品国产一区二| 亚洲第一视频网站| 欧美视频一二区| 亚洲精品动漫久久久久| 香蕉视频黄色片| 亚洲欧美日韩高清| 黄色在线网站| 色妞久久福利网| 国产素人视频在线观看| 久久成人精品视频| 男人天堂亚洲| 7777精品视频| 桃色一区二区| 国产在线a不卡| 麻豆国产一区二区三区四区| 成人三级视频在线观看一区二区| 99精品国产高清一区二区麻豆| 国产一区二区在线观看免费播放| 欧美日韩麻豆| 日韩欧美国产二区| 91欧美在线| 黄页免费在线观看视频| 三级成人在线视频| 欧美性受xxxxxx黑人xyx性爽| 粉嫩13p一区二区三区| 欧亚乱熟女一区二区在线| 久久先锋影音av| 99热99这里只有精品| 亚洲午夜免费视频| 无码人妻aⅴ一区二区三区有奶水| 91福利区一区二区三区| 国产一区二区波多野结衣| 欧美不卡一区二区| 欧美18xxxxx| 久久精品在线播放| 岛国av在线播放| 国产精品自拍视频| 超碰精品在线观看| 色99中文字幕| 亚洲激情偷拍| 性生生活大片免费看视频| 99精品视频免费在线观看| 亚洲精品自拍视频在线观看| 亚洲国产欧美另类丝袜| 最新黄色网址在线观看| 欧美精品一区二区在线播放| av男人的天堂在线| 97精品国产97久久久久久春色| 成人全视频在线观看在线播放高清| 91超碰在线免费观看| 欧美**vk| 免费不卡av在线| 激情文学综合丁香| 真人bbbbbbbbb毛片| 亚洲欧美另类在线| 久久国产香蕉视频| 日韩av网站导航| 18网站在线观看| 国产精品美女久久久免费| 国内精品偷拍| 欧美做受777cos| 美女看a上一区| 97超碰在线资源| 午夜精品久久久久久久久久| 国产露脸无套对白在线播放| 在线播放国产一区中文字幕剧情欧美| 国产理论电影在线| 1卡2卡3卡精品视频| 日本成人小视频| 激情网站五月天| 99久久99久久综合| 青娱乐国产在线视频| 欧美精品99久久久**| 国产尤物视频在线| 欧洲亚洲在线视频| 欧美1区2区3区4区| 欧美黑人在线观看| 国产精品99久久久| 免费成人美女女在线观看| 91福利在线导航| 视频午夜在线| 7777免费精品视频| 久久动漫网址| 免费在线观看视频a| 粉嫩av一区二区三区在线播放| 国产精品丝袜一区二区| 欧美美女视频在线观看| 永久av在线| 国产精品主播视频| 日韩综合一区| www.久久av.com| **性色生活片久久毛片| 91精品人妻一区二区三区果冻| 在线国产精品播放| 日韩一区中文| 欧美爱爱视频网站| 国产精品一区二区视频| 日本高清一二三区| 91精品国产一区二区三区香蕉| 国产精品久久麻豆| 91免费综合在线| 午夜精品视频| 久久久久久婷婷| 日韩欧美黄色动漫| 国产高清在线看| 国产欧美精品在线| 91成人免费| 亚洲熟女一区二区三区| 午夜视频在线观看一区| 天堂在线中文| 国产精品wwwwww| 99久久婷婷| 精品人妻无码中文字幕18禁| 亚洲成人av电影| 牛牛热在线视频| 91精品久久久久久久久不口人| 亚洲国产一区二区三区在线播放| 亚洲区 欧美区| 天天av天天翘天天综合网| 国产主播福利在线| 国产日韩综合一区二区性色av| 久久久人成影片免费观看| 无码人妻精品一区二区三区99不卡| 岛国av在线不卡| 在线中文资源天堂| 99porn视频在线| 免费精品视频| 亚洲色偷偷综合亚洲av伊人| 精品国产成人系列| 全亚洲第一av番号网站| 中文字幕一区二区三区四区五区人 | 精品国产91久久久| 国产福利电影在线| 51成人做爰www免费看网站| 国产视频一区三区| 天天操天天摸天天舔| 精品99久久久久久| 影音成人av| 久久精品国产sm调教网站演员| 国产农村妇女精品| 亚洲卡一卡二卡三| 国产精品久久久久久av下载红粉| 亚洲成人三区| 国产人妻一区二区| 欧美一区日本一区韩国一区| 免费看男女www网站入口在线 | 在线视频免费在线观看一区二区| 久久美女免费视频| 亚洲第一男人天堂| 亚洲伦理久久| 99999精品视频| 亚洲一区二三区| 丝袜美腿美女被狂躁在线观看|