亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > Linux Shell > 正文

關(guān)于Shell腳本效率優(yōu)化的一些個(gè)人想法

2020-07-27 19:27:16
字體:
供稿:網(wǎng)友
一、先說一下Shell腳本語言自身的局限性

作為解釋型的腳本語言,天生就有效率上邊的缺陷。盡管它調(diào)用的其他命令可能效率上是不錯(cuò)的。
Shell腳本程序的執(zhí)行是順序執(zhí)行,而非并行執(zhí)行的。這很大程度上浪費(fèi)了可能能利用上的系統(tǒng)資源。
Shell每執(zhí)行一個(gè)命令就創(chuàng)建一個(gè)新的進(jìn)程,如果腳本編寫者沒有這方面意識,編寫腳本不當(dāng)?shù)脑?,是非常浪費(fèi)系統(tǒng)資源的。

二、我們在Shell腳本語言的局限性上盡可能的通過我們有經(jīng)驗(yàn)的編碼來提高腳本的效率。

1、比如我想做一個(gè)循環(huán)處理數(shù)據(jù),可能是簡單的處理一下數(shù)據(jù),這樣會讓人比較容易就想到Shell里的循環(huán)類似這樣:
復(fù)制代碼 代碼如下:

sum=0
for((i=0;i<100000;i++))
do
sum=$(($sum+$i))
done
echo $sum

我們可以使用time這個(gè)腳本來測試一下十萬次循環(huán)的三次執(zhí)行耗時(shí):
real 0m2.115s
user 0m1.975s
sys 0m0.138s

real 0m2.493s
user 0m2.173s
sys 0m0.254s

real 0m2.085s
user 0m1.886s
sys 0m0.195s
平均耗時(shí)2.2s,如果你知道awk命令里的循環(huán)的話,那更好了,我們來測試一下同數(shù)據(jù)規(guī)模的循環(huán)三次執(zhí)行耗時(shí):
復(fù)制代碼 代碼如下:

awk 'BEGIN{
sum=0;
for(i=0;i<100000;i++)
sum=sum+i;
print sum;
}'

real 0m0.023s
user 0m0.018s
sys 0m0.005s

real 0m0.020s
user 0m0.018s
sys 0m0.002s

real 0m0.021s
user 0m0.019s
sys 0m0.003s
你都不敢想象平均時(shí)間僅0.022s,基本上純循環(huán)的效率已經(jīng)比Shell高出兩位數(shù)量級了。事實(shí)上你再跑百萬次的循環(huán)你會發(fā)現(xiàn)Shell已經(jīng)比較吃力了,千萬級的更是艱難。所以你應(yīng)該注意你的程序盡量使用awk來做循環(huán)操作。

2、關(guān)于正則,經(jīng)常寫Shell的同學(xué)都明白它的重要性,但是你真的能高效使用它嗎?
下邊舉個(gè)例子:現(xiàn)在我有一個(gè)1694617行的日志文件 action.log,它的內(nèi)容類似:
2012_02_07 00:00:04 1977575701 183.10.69.47 login 500004 1977575701 old /***/port/***.php?…
我現(xiàn)在想獲取//之間的port的字符串,我可以這樣:
awk -F'/' ‘{print $3}' < 7action.log > /dev/null
但是你不會想知道它的效率:
real 0m12.296s
user 0m12.033s
sys 0m0.262s
相信我,我不會再想看著光標(biāo)閃12秒的。但是如果這樣執(zhí)行:
awk ‘{print $9}' < 7action.log | awk -F'/' '{print $3}' > /dev/null
這句的效率三次分別是:
real 0m3.691s
user 0m5.219s
sys 0m0.630s

real 0m3.660s
user 0m5.169s
sys 0m0.618s

real 0m3.660s
user 0m5.150s
sys 0m0.612s
平均時(shí)間大概3.6秒,這前后效率大概有4倍的差距,雖然不像上一個(gè)有百倍的差距,但是也足夠讓4小時(shí)變成1小時(shí)了。我想你懂這個(gè)差距的。

其實(shí)這個(gè)正則實(shí)例你可以嘗試推測其他的情況,因?yàn)檎齽t每次運(yùn)行都是需要啟動字符串匹配的,而且默認(rèn)的分隔符會較快的按字段區(qū)分出。所以我們在知道一些數(shù)據(jù)規(guī)律之后可以嘗試大幅度的縮短我們將要進(jìn)行復(fù)雜正則匹配的字符串,這樣會根據(jù)你縮減數(shù)據(jù)規(guī)模有一個(gè)非常明顯的效率提升,上邊還是驗(yàn)證的比較簡單的正則匹配情況,只有一個(gè)單字符“/”,你可以試想如果正則表達(dá)式是這樣:
$7!~//.jpg$/&&$7~//.[s]?html|/.php|/.xml|//$/&&($9==200||$9==304)&&$1!~/^103/.108|^224/.215|^127/.0|^122/.110/.5/
我想你可以想象的出一個(gè)目標(biāo)匹配字符串從500個(gè)字符縮減到50個(gè)字符的時(shí)候的巨大意義!

ps:另外詳細(xì)的正則優(yōu)化請看這個(gè)日期之后發(fā)的一篇博文。

3、再說一下shell的重定向和管道。這個(gè)條目我不會再舉例子,只是說一下我個(gè)人的理解。
周所周知,很多程序或者語言都有一個(gè)比較突出的效率瓶頸就是IO,Shell也不例外(個(gè)人這么考慮)。所以建議盡可能的少用重定向來進(jìn)行輸入輸出這樣的操作或者創(chuàng)建臨時(shí)文件來供后續(xù)使用,當(dāng)然,如果必須這么干的時(shí)候那就這么干吧,我只是講一個(gè)盡量的過程。
我們可以用Shell提供的管道來實(shí)現(xiàn)命令間數(shù)據(jù)的傳遞。如果進(jìn)行連續(xù)的對數(shù)據(jù)進(jìn)行過濾性命令的時(shí)候,盡量把一次性過濾較多的命令放在前邊,這個(gè)原因都懂吧?減少數(shù)據(jù)傳遞規(guī)模。
最后我想說的連管道也盡量的少用的,雖然管道比正常的同定向IO快幾個(gè)數(shù)量級的樣子,但是那也是需要消耗額外的資源的,好好設(shè)計(jì)你的代碼來減少這個(gè)開銷吧。比如sort | uniq 命令,完全可以使用 sort -u 來實(shí)現(xiàn)。

4、再說一下Shell腳本程序的順序執(zhí)行。這塊的優(yōu)化取決于你的系統(tǒng)負(fù)載是否達(dá)到了極限,如果你的系統(tǒng)連命令的順序執(zhí)行負(fù)載都到了一個(gè)較高的線的話,你就沒有必要進(jìn)行Shell腳本程序的并行改造了。下邊給出一個(gè)例子,如果你要模仿這個(gè)優(yōu)化,請保證你的系統(tǒng)還能有負(fù)載空間。比如現(xiàn)在有這樣一個(gè)程序:
supportdatacommand1
supportdatacommand2
supportdatacommand3
supportdatacommand4
supportdatacommand5
supportdatacommand6

need13datacommand
need24datacommand
need56datacommand
大意就是有6個(gè)提供數(shù)據(jù)的命令在前邊,后面有3個(gè)需要數(shù)據(jù)的命令,第一個(gè)需要數(shù)據(jù)的命令需要數(shù)據(jù)13,第二個(gè)需要24,第三個(gè)需要56。但是正常情況下Shell會順序的執(zhí)行這些命令,從supportdatacommand1,一條一條執(zhí)行到need56datacommand。這樣的過程你看著是不是也很蛋疼?明明可以更好的做這一塊的,蛋疼的程序可以這樣改造:
復(fù)制代碼 代碼如下:

supportdatacommand1 &
supportdatacommand2 &
supportdatacommand3 &
supportdatacommand4 &
supportdatacommand5 &
supportdatacommand6 &
#2012-02-22 ps:這里的循環(huán)判斷后臺命令是否執(zhí)行完畢是有問題的,pidnum循#環(huán)減到最后也還是1不會得到0值,具體解決辦法看附錄,因?yàn)檫€有解釋,就不在這#里添加和修改了。
while true
do
sleep 10s
pidnum=`jobs -p | wc -l`
if [ $pidnum -le 0 ]
then
echo "run over"
break
fi
done

need13datacommand &
need24datacommand &
need56datacommand &

wait
...

可以類似上邊的改造。這樣改造之后蛋疼之感就紓解的多了。但還是感覺不是很暢快,那好吧,我們可以再暢快一點(diǎn)(我是指程序。。。),可以類似這樣:
復(fù)制代碼 代碼如下:

for((i=0;i<1;i++));do
{
command1
command2
}&
done

for((i=0;i<1;i++));do
{
command3&
command4&
}&
done

for((i=0;i<1;i++));do
{
command5 &
command6 &
if 5 6執(zhí)行完畢...
command7
}&
done

這樣類似這樣的改造,讓有前后關(guān)系的命令放在一個(gè)for循環(huán)里讓他們一起執(zhí)行去,這樣三個(gè)for循環(huán)其實(shí)是并行執(zhí)行了。然后for循環(huán)內(nèi)部的命令你還可以類似改造1的那種方式改造或者內(nèi)嵌改造2這個(gè)的并行for循環(huán),都是可以的,關(guān)鍵看你想象力了。恩?哦,不對,關(guān)鍵是看這些個(gè)命令之間是一種什么樣的基友關(guān)系了。有關(guān)聯(lián)的放一個(gè)屋里就行了,剩下的你就不用操心了。嘿嘿~~

其實(shí)這個(gè)優(yōu)化真的需要看系統(tǒng)負(fù)載。

5、關(guān)于對shell命令的理解。這個(gè)條目就靠經(jīng)驗(yàn)了,因?yàn)槊菜茮]有相關(guān)的書籍可看,如果誰知道有,請推薦給我,我會灰常感謝的啊。
比如:sed -n '45,50p' 和 sed -n '51q;45,50p' ,前者也是讀取45到50行,后者也是,但是后者到51行就執(zhí)行了退出sed命令,避免了后續(xù)的操作讀取。如果這個(gè)目標(biāo)文件的規(guī)模巨大的話,剩下的你懂的。
還有類似sed ‘s/foo/bar/g' 和sed ‘/foo/ s/foo/bar/g'
sed支持采用正則進(jìn)行匹配和替換,考慮字符串替換的需求中,不防加上地址以提高速度。實(shí)例中通過增加一個(gè)判斷邏輯,采用“事先匹配”代替“直接替換”,由于sed會保留前一次的正則匹配環(huán)境,不會產(chǎn)生冗余的正則匹配,因此后者具有更高的效率。關(guān)于sed命令的這兩點(diǎn)優(yōu)化,我也在sed命令詳解里有提到。

還有類似sort 如果數(shù)字盡量用 -n選項(xiàng);還有統(tǒng)計(jì)文件行數(shù),如果每行的數(shù)據(jù)在占用字節(jié)數(shù)一樣的情況時(shí)就可以ls查文件大小然后除以每行的數(shù)據(jù)大小的出行數(shù),而避免直接使用wc -l這樣的命令;還有find出來的數(shù)據(jù),別直接就-exec選項(xiàng)了,如果數(shù)據(jù)規(guī)模小很好,但是如果你find出來上千條數(shù)據(jù)或更多,你會瘋掉的,不,系統(tǒng)會瘋掉的,因?yàn)槊啃袛?shù)據(jù)都會產(chǎn)生新的進(jìn)程,你可以這樣find …. | xargs ….;還有…(如果你也知道類似的提效率情況請你告訴我共同進(jìn)步!)

三、關(guān)于優(yōu)化更好的一些選擇

一個(gè)比較好的提升Shell腳本的效率方法就是…… 就是…… 就是…… 好吧,就是盡量少用Shell(別打我?。。。。┫逻吔o出一些debian官方統(tǒng)計(jì)的一些在linux系統(tǒng)上邊的各個(gè)語言的效率圖,咱都以C++為比較基準(zhǔn)(系統(tǒng)規(guī)格:x64 Ubuntu™ Intel® Q6600® quad-core):
這些圖的查看方法,比如第一個(gè)圖java和c++的程序效率比較圖,總共分三個(gè)部分,分別是time、memory、code的比較,如果是c++/java ,就是說 c++做比較的分子,java做比較的分母,如果圖上的長條在哪邊,說明所在的那邊的程序使用的時(shí)間或者內(nèi)存或者代碼較多,具體多多少就看長條長了多少。每一部分有多個(gè)長條圖形,每個(gè)長條圖案表示針對程序處理不同方面的任務(wù)時(shí)進(jìn)行的測試。比如第一幅,c++和java在該環(huán)境下大部分情況下time上是差不多的,甚至java-server還有稍微的優(yōu)勢,內(nèi)存方面c++就有很大優(yōu)勢,能夠使用比java少的多的內(nèi)容做相同的事情,但是編碼量c++就稍微多一點(diǎn)點(diǎn)。以下的圖類似。
java和c++效率相比示意圖

python和c++效率相比示意圖

php和c++效率相比示意圖

perl和c++效率相比示意圖

通過上邊的圖我看可以知道C++在時(shí)間和空間上對Python、Perl、PHP有著絕對壓倒性的優(yōu)勢,但是相對的編碼量較高。同java比只有內(nèi)存使用上的優(yōu)勢。但是我們這篇主要是針對Shell的,但是,又是但是,debian官網(wǎng)沒有把shell腳本納入效率比較的統(tǒng)計(jì)范圍?。。?!還是但是,我們知道Python、Perl、PHP都是號稱對Shell在效率方面有著明顯的優(yōu)勢,所以你如果不滿意你通過以上提供的種種優(yōu)化途徑后的Shell腳本程序的話,那你就可以嘗試換一種語言了。

但是我們往往不那么容易舍棄這么好用方便而且簡單的處理數(shù)據(jù)方式,也可以有個(gè)折中的方法,你先用time測試各個(gè)Shell腳本命令的耗時(shí),針對特別耗時(shí),特別讓人不能忍受的命令的效率使用C++程序處理,讓你的Shell腳本來調(diào)用這個(gè)針對局部數(shù)據(jù)處理的C++程序,這樣折中貌似還是能讓人接受吧?

四、最后說一下這篇是不敢稱為全面或者詳解的文章,是我對這一段Shell學(xué)習(xí)和實(shí)踐的一些心得,希望能有高手指點(diǎn)。也希望能幫到新踏入這一領(lǐng)域的新同學(xué)。以后有新的心得再添加吧。

感謝這篇文章的作者的博文指點(diǎn)。

2012-02-22 ps:循環(huán)檢測后臺命令是否結(jié)束的判斷修改:
解決方法暫時(shí)有兩個(gè)(具體沒有解釋,不太清楚原因):
1、
復(fù)制代碼 代碼如下:

sleep 8 &
sleep 16 &
while true
do
echo `jobs -p | wc -l`
jobs -l >> res
sleep 4
done

2、 檢查剩余個(gè)數(shù)的語句改成 jobs -l |grep -v “Done”|wc -l

第一個(gè)方案的解決是多執(zhí)行一次jobs,可以解釋成為了消除最后的Done結(jié)果,但是這種解釋也是行不通的,因?yàn)檠h(huán)是一直執(zhí)行的,在echo里已經(jīng)執(zhí)行很多次jobs了,何止一次。

第二個(gè)方案是過濾掉jobs最后的輸出結(jié)果Done這條語句。算是繞過問題得到了期待的結(jié)果。

個(gè)人感覺bash解釋器優(yōu)化掉了沒有后臺命令執(zhí)行的jobs查詢命令,如果是優(yōu)化掉了那也應(yīng)該有個(gè)空的返回,wc依然可以得到0的結(jié)果啊。所以這個(gè)問題找不到具體原因,如果你知道請告訴我,非常感謝。。。 這里先感謝just do shell群里的Eric 沉默的土匪 GS 三人,非常感謝你們的幫助。

這里兩個(gè)方法不算好方法,只是奇怪這樣為什么不行,行的又該如何解釋。后來知道用wait命令就全解決了,耽誤那么多時(shí)間還是用的不明智的方法。

轉(zhuǎn)載請注明:三江小渡厚道喔!
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产二区视频在线| 亚洲天堂视频网站| 日韩视频 中文字幕| 精品国产av一区二区| 久久久噜噜噜久久狠狠50岁| 中文字幕日韩一区二区三区不卡| 久久久久无码精品国产sm果冻| 波多野结衣毛片| 亚洲一区二区三区免费视频| 波多野结衣成人在线| 欧洲亚洲国产日韩| 久久精品亚洲精品| 综合图区亚洲| 香港三日本三级少妇66| 久久久久综合网| 国产成人精品亚洲日本在线观看| 国产99久久久国产精品| 欧美 日韩 中文字幕| 欧美 日韩 国产 成人 在线 91| 日韩精品成人在线| 亚洲毛片免费看| 精品久久国产97色综合| 毛片毛片毛片毛片毛片毛片| 韩国日本美国免费毛片| 任你躁在线精品免费| 欧美日韩在线精品成人综合网| 一级毛片在线播放| 91porn在线视频| 高清视频在线观看一区| 精品一区二区三区免费看| 97久久精品人搡人人玩| 欧美一区二区三区成人久久片| 欧美一区二区日韩| 91丨porny丨国产| 最近中文字幕mv免费高清视频8| 91精品国产91热久久久做人人| 8050国产精品久久久久久| 欧美大片大片在线播放| 国产精品chinese| 亚洲天堂2014| 台湾亚洲精品一区二区tv| 成人午夜在线免费| 一区二区三区四区在线视频| 香蕉视频成人在线| 在线视频1区2区| 亚洲欧美日韩天堂一区二区| 精品欧美一区二区久久久| 国产又黄又爽视频| 欧美xxxooo| 9l亚洲国产成人精品一区二三| 欧美精品videofree1080p| 久草视频免费在线| 91精品久久久久久久久久久久久| 精品人妻aV中文字幕乱码色欲| 午夜久久久久久久久| 日韩人妻无码精品久久久不卡| 国产色综合天天综合网| 8x拔播拔播x8国产精品| 中文字幕一区二区中文字幕| 精品中文字幕一区二区三区av| 日本久久久a级免费| 欧美夫妇交换xxx| 欧美一区二区免费| 女人被狂躁到高潮视频免费网站| www.亚洲.com| 欧美激情xxxxx| 免费精品国产自产拍观看| 欧美精品在线免费观看| 欧美va天堂在线| 亚洲婷婷丁香| 美女污污网站| 久久狠狠高潮亚洲精品| 免费羞羞视频| 亚洲国产欧洲综合997久久| 全球成人中文在线| 99一区二区三区| 久草电影在线| 96sao精品免费视频观看| 天天操天天爽天天射| 成年人免费看毛片| 欧美在线制服丝袜| 国产香蕉久久| 久久精品国产亚洲一区二区| 成人区一区二区| 国产伦精品一区二区三区视频青涩| 在线视频91| 中文字幕在线免费看线人| 成人午夜福利视频| 男同互操gay射视频在线看| 国产一卡二卡3卡4卡四卡在线| 国产免费一区视频观看免费| 亚洲成a人片77777在线播放| 国产精品入口麻豆免费| 免费成人高清视频| 国产综合精品久久久久成人av| 一区二区三区在线免费播放| www 日韩| 艳妇荡乳欲伦69影片| 欧美亚洲二区| 国产一区二区三区亚洲综合| 国产精品av一区| 2020av在线| 久久久不卡网国产精品一区| 国产美女扒开尿口久久久| 国产精品一区二区三区在线观| 9人人澡人人爽人人精品| 日本激情一区二区| 亚洲欧美激情一区二区| 手机在线国产视频| 国产剧情在线观看| 欧美性猛交xxxx乱大交| 国产 欧美 日韩 在线| 亚洲2区在线| seba5欧美综合另类| 亚洲高清视频一区| 中文字幕一区二区三区不卡| 色哟哟网站入口亚洲精品| 国产色播av在线| а√最新版在线天堂| 亚洲宅男天堂在线观看无病毒| 国产h色视频在线观看| 国产91在线精品| 亚洲美女高潮久久久| 久久99国产精品视频| 在线男人天堂| 亚洲精品自拍视频在线观看| av网站手机在线观看| 国产精品视频在线观看免费| 另类一区二区三区| www.91在线观看| 欧美国产成人在线| 韩曰欧美视频免费观看| 欧美成人综合一区| 国产小视频在线观看| 欧美在线播放一区| 亚洲激情啪啪| 国产欧美日韩精品丝袜高跟鞋| 午夜欧美视频在线观看| 黄频免费在线观看| 精品人妻中文无码av在线| 97免费视频在线播放| 日韩和欧美一区二区三区| 视频在线观看一区| 国产一区二区精品久久91| 成人午夜激情网| 日韩精品极品视频| xx视频.9999.com| 99精品人妻无码专区在线视频区| 九九九九热精品免费视频| 欧美激情护士| 美女扒开尿口让男人操| 日日骚av一区二区| 亚洲国产专区| 亚洲色图色老头| 欧美tk丨vk视频| 欧美影院久久久| 精品一区二区三区的国产在线播放| 99一区二区三区| 国产精品成人aaaa在线| 裸体xxxx视频在线| 一区二区三区国产| 欧美激情图片小说| 国产51人人成人人人人爽色哟哟| 国产精品高清一区二区| 中文字字幕一区二区三区四区五区| 欧美性猛交xxxx偷拍洗澡| 国产日韩视频在线播放| 三年中国中文在线观看免费播放| 国产精品美女久久久久久| 高清不卡一二三区| 亚洲丁香日韩| 中文字幕视频一区二区在线有码| 欧美一级一区二区三区| 日韩一区二区欧美| 国产男女无套在线播放| 一区二区三区视频国产日韩| 亚洲天堂网站在线观看视频| 欧美一区二区视频在线| 免费视频成人| 日本va中文字幕| 欧美激情自拍偷拍| 欧美高清性xxxxhdvideosex| 欧美亚日韩国产aⅴ精品中极品| 欧美三级午夜理伦三级在线观看| 欧美疯狂爱爱xxxxbbbb| 久久亚洲国产精品尤物| 四虎精品在线观看| 影音先锋在线视频| 国产精品欧美色图| 色综合亚洲图丝熟| 亚洲永久免费视频| а√天堂8资源在线官网| 国产伦理片在线观看| 在线免费播放av| 亚洲国产成人不卡| 国产精品手机在线| 国产成人一区二区精品非洲| 免费高清在线| 在线精品日韩| 夜夜嗨av色一区二区不卡| 日本欧美色图| 国产精品91xxx| 色综合久久精品亚洲国产| 国产精品a久久久久| 午夜一区二区三区视频| 久久精品噜噜噜成人av农村| 黄瓜视频污在线观看| 国产精品4hu.www| 中文字幕第八页| 丁香五六月婷婷久久激情| 久草视频在线看| 九色porny蝌蚪视频在线观看| 国产精品资源在线观看| 国产精品18久久久久久麻辣| 少妇毛片一区二区三区| 无码人妻精品一区二区三区9厂| av三级影院| 免费在线观看91| www.色视频| xxxxx91麻豆| 亚洲av无码国产精品麻豆天美| 国产精品18久久久久久久久久| 国产亚洲精品久| 一个人看的www免费观看视频| 国内拍拍自拍视频在线观看| 草草视频在线免费观看| 中文字幕在线观看不卡视频| 一区二区三区四区五区精品| 亚洲一区二区三区四区五区黄| 日本一区二区三区四区在线观看| 老少交欧美另类| 成人av在线不卡| 亚洲免费观看在线视频| xxxx国产视频| 亚洲一卡2卡三卡4卡2021四卡| 亚洲欧美经典视频| 狼狼综合久久久久综合网| 黄网站免费在线观看| 乱人伦中文字幕在线zone| 欧美午夜不卡在线观看免费| 性生生活性生交a级| 91九色蝌蚪91por成人| 另类一区二区| 精品一二三区视频| 日韩精品一区二区三区免费观看| av777777| 91av精品| 欧美日韩亚洲一区三区| 精品国产乱码久久久久久牛牛| 色猫猫国产区一区二在线视频| 日本在线一二三| 精品蜜桃一区二区三区| 91插插插插插插插插| 日韩一区二区三区四区在线| 国模精品娜娜一二三区| 久久久av亚洲男天堂| 一区二区三区在线视频111| 亚洲av无码成人精品区| 狠狠操在线视频| 一区二区精品视频在线观看| 精品网站999www| 依依成人精品视频| 久久国产精品国产精品| 日本欧美大码aⅴ在线播放| 黄色在线一区| 国产99精品| 亚洲免费观看在线视频| 成人免费xxxxx在线视频| 在线电影中文字幕| 日韩欧美亚洲另类| 狠狠色丁香婷婷| 欧美黄色免费看| 国产成人亚洲精品无码h在线| 日韩国产在线一区| 成人线上视频| 人猿泰山h版在线观看| 91成人网在线| 天堂成人免费av电影一区| 精品国产乱码久久久久久浪潮| 免费在线观看一级毛片| 国产人与zoxxxx另类91| 先锋影音男人av资源| 少妇在线看www| 亚洲s色大片在线观看| 奇米影音第四色| 亚洲精品无码国产| 韩国女主播成人在线观看| 三级黄视频在线观看| 欧美一级中文字幕| 日韩精品另类天天更新| 天天干,夜夜操| 中文字幕有码无码人妻av蜜桃| 热99精品只有里视频精品| 91国产精品一区| 黄色片在线免费观看| 曰本三级在线| 日韩黄色在线观看| 日韩高清三区| 欧美主播一区二区三区| 免费网站观看www在线观看| 在线观看中文字幕亚洲| 清纯唯美一区二区三区| 在线视频不卡一区二区| 亚洲手机在线观看| 欧美日韩大片免费观看| 精品一区电影| 国产精品三级久久久久久电影| 亚洲性生活网站| 狠色狠色综合久久| 国产精品论坛| 国产精品久久久久久久久久免费| jizz性欧美10| 日韩成人精品一区二区| 国产乱子夫妻xx黑人xyx真爽| 天天色影综合网| 日韩欧美一区二区三区不卡视频| 久久大片网站| av影院午夜一区| 美女毛片在线看| 久久久久亚洲av无码网站| 另类国产精品一区二区| 欧美日韩精品二区第二页| 欧美久久在线| 精品夜色国产国偷在线| 国产日产精品一区二区三区| 国产在线精选视频| 国产精彩视频一区二区| 人妻体体内射精一区二区|