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

從菜鳥到高手:Linux C/C++ 程序性能分析實戰指南!

開發 Linux
今天,我就用大白話帶你入門 Linux 環境下 C/C++ 程序的性能分析(帶實戰案例),讓你面對性能問題時不再抓瞎。

大家好,我是小康。

你有沒有這樣的經歷:辛辛苦苦寫完的 C++ 程序,功能測試一切正常,但一到生產環境就被吐槽"太慢了"?作為開發者,我們經常被要求解決性能問題,但如何找出程序的性能瓶頸,卻是很多人的盲區。

今天,我就用大白話帶你入門 Linux 環境下 C/C++ 程序的性能分析(帶實戰案例),讓你面對性能問題時不再抓瞎。不需要高深的理論,不需要復雜的工具,這篇文章讀完,你就能實戰了!

一、為什么程序會慢?

在深入工具和方法之前,我們先來聊聊為什么程序會慢。一個程序主要在三個方面消耗資源:

  • CPU時間 - 計算太多、算法效率低
  • 內存使用 - 內存泄漏、頻繁申請釋放內存
  • I/O操作 - 文件讀寫、網絡通信太頻繁

今天我們主要聚焦CPU性能分析,因為這通常是最直接影響程序速度的因素。內存和 I/O 問題咱們后面再專門講。

二、誰是 CPU 時間的大戶?用 top 找出來

既然要分析性能,那首先得知道是不是我們的程序真的耗 CPU。最直觀的方法就是用top命令實時監控程序的 CPU 和內存使用情況:

$ top -p $(pgrep 進程名)

這樣你就能看到程序的 CPU 使用率。如果一個程序占用 CPU 接近 100%,那它八成是有性能問題了。而且通過 top,你還能看到程序使用了多少內存等信息,這些都是判斷程序健康狀況的重要指標。

三、入門級工具:time命令

發現程序確實吃 CPU 后,我們需要更具體地知道它到底慢在哪里。這時可以用 Linux 自帶的 time 命令來分析程序的運行時間構成:

$ time ./my_program

執行后你會看到類似這樣的輸出:

real    0m1.234s
user    0m1.000s
sys     0m0.234s
  • real:實際經過的時間(墻上時鐘時間)
  • user:CPU在用戶態的執行時間
  • sys:CPU在內核態的執行時間

如果user時間特別長,說明你的程序計算量太大;如果sys時間特別長,說明你的程序系統調用太多。

打個比方,這就像你去餐廳吃飯:

  • real時間是從你進門到出門的總時間
  • user時間是你實際吃飯的時間
  • sys時間是服務員端菜、收拾桌子的時間

四、性能分析的秘密武器:perf

time和top只能告訴你程序慢,但具體慢在哪個函數,還得靠專業工具。Linux下最強大的性能分析工具之一就是perf。

1. 安裝perf

# Ubuntu/Debian
$ sudo apt-get install linux-tools-common linux-tools-generic

# CentOS/RHEL
$ sudo yum install perf

2. 實戰:找出CPU殺手

程序慢了,我們需要找出具體是哪段代碼拖了后腿。perf 就是最好的偵探工具:

# 開發環境:從啟動開始記錄
$ sudo perf record -g ./slow_program

# 生產環境:對運行中程序采樣30秒
$ sudo perf record -p <進程ID> -g -F 99 sleep 30

# 分析結果
$ perf report

開發環境用第一種方式,能看到程序從啟動到結束的全過程;生產環境用第二種方式,不用重啟服務就能采樣數據。perf report會顯示哪些函數最耗 CPU,直接指出問題所在!

我曾經遇到過一個實際案例:程序處理大量數據非常慢,用 perf 一看,發現 80% 的 CPU 時間都花在了一個字符串處理函數上。把這個函數優化后,整個程序速度提升了 5 倍。

五、更直觀的火焰圖:FlameGraph

perf 的輸出有時候不夠直觀,這時候就需要"火焰圖"(FlameGraph)出場了。火焰圖能把 perf 的結果可視化,一眼就能看出哪個函數最耗時。

生成火焰圖:

# 先記錄perf數據
$ sudo perf record -p <進程ID> -g -F 99 sleep 30

# 導出數據
$ perf script > perf.out

# 用FlameGraph工具生成SVG圖
$ git clone https://github.com/brendangregg/FlameGraph.git
$ cd FlameGraph
$ ./stackcollapse-perf.pl ../perf.out > ../perf.folded
$ ./flamegraph.pl ../perf.folded > ../flamegraph.svg

# 使用 firefox 打開
$ firefox flamegraph.svg

然后用瀏覽器打開生成的 svg 文件,你會看到一個炫酷的火焰圖!圖中寬度越大的函數,占用的 CPU 時間就越多。

六、實戰案例:優化一個日志解析程序

前幾天我有個小需求,需要解析一些服務器日志文件,提取出所有 ERROR 級別的日志,并生成個簡單報告。我寫了個第一版的程序,但在處理一個 893MB 的日志文件時,跑了整整 3 分鐘才出結果,這也太慢了吧!

代碼是這樣的:

// slow_parser.cpp
#include <iostream>
#include <fstream>
#include <string>
#include <regex>
#include <vector>

struct LogEntry {
    std::string timestamp;
    std::string level;
    std::string message;
};

std::vector<LogEntry> parse_log(const std::string& filename) {
    std::vector<LogEntry> entries;
    std::ifstream file(filename);
    std::string line;
    
    // 使用正則表達式解析日志格式:[時間戳] [日志級別] 消息內容
    std::regex log_pattern(R"(\[(.*?)\]\s*\[(.*?)\]\s*(.*))");
    
    while (std::getline(file, line)) {
        std::smatch matches;
        if (std::regex_search(line, matches, log_pattern)) {
            LogEntry entry;
            entry.timestamp = matches[1];
            entry.level = matches[2];
            entry.message = matches[3];
            
            // 只保留ERROR級別的日志
            if (entry.level == "ERROR") {
                entries.push_back(entry);
            }
        }
    }
    
    return entries;
}

int main(int argc, char* argv[]) {
    if (argc != 2) {
        std::cerr << "用法: " << argv[0] << " <日志文件路徑>" << std::endl;
        return1;
    }
    
    std::cout << "開始解析日志文件: " << argv[1] << std::endl;
    auto entries = parse_log(argv[1]);
    std::cout << "共發現 " << entries.size() << " 條ERROR級別日志" << std::endl;
    
    // 輸出前10條錯誤日志
    int count = 0;
    for (constauto& entry : entries) {
        if (count++ < 10) {
            std::cout << entry.timestamp << ": " << entry.message << std::endl;
        } else {
            break;
        }
    }
    
    return0;
}

編譯并測試了下運行時間:

$ g++ -g slow_parser.cpp -o slow_parser
$ time ./slow_parser server.log

運行結果:

real 3m0.753s
user 2m54.315s
sys 0m6.399s

差不多 3 分鐘,太離譜了!我決定用 perf 來分析一下到底是哪里慢:

$ perf record -g ./slow_parser server.log
$ perf report

perf report 的結果讓我眼前一亮:

Samples: 197K of event 'cycles', Event count (approx.): 94623200788
  Children      Self  Command  Shared Object        Symbol
+   77.46%    15.58%  a.out    a.out                [.] std::__detail::_Executor<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, s◆
+   76.84%     5.75%  a.out    a.out                [.] std::__detail::_Executor<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, s
+   75.84%     5.91%  a.out    a.out                [.] std::__detail::_Executor<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, s
+   75.01%     4.26%  a.out    a.out                [.] std::__detail::_Executor<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, s
+   71.60%     0.62%  a.out    a.out                [.] std::__detail::_Executor<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, s
...
+   48.18%     0.05%  a.out    a.out                [.] std::regex_search<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::cha
...

這里需要理解兩個關鍵列:

  • Self:函數自身消耗的CPU時間百分比
  • Children:函數及其調用的所有子函數消耗的CPU時間百分比

簡單說,Self 告訴你"這個函數本身"有多慢,Children 告訴你"這個函數及它調用的所有函數"一共有多慢。性能優化時,通常先看 Children 高的函數找到熱點調用鏈,再看 Self 高的函數找到真正耗時的代碼。

雖然輸出結果有點復雜,但很明顯,大部分 CPU 時間都花在了 std::__detail::_Executor和std::regex_search 這些函數上,這些都是正則表達式相關的函數!看來正則表達式是罪魁禍首。

其實想想也對,正則表達式雖然功能強大,但在處理大量文本時,性能確實不太理想。于是我決定用普通的字符串處理函數來替代正則表達式:

// fast_parser.cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <chrono>

struct LogEntry {
    std::string timestamp;
    std::string level;
    std::string message;
};

std::vector<LogEntry> parse_log(const std::string& filename) {
    std::vector<LogEntry> entries;
    std::ifstream file(filename);
    std::string line;
    
    // 預分配空間,減少內存重新分配
    entries.reserve(10000);
    
    // 使用字符串搜索和截取替代正則表達式
    while (std::getline(file, line)) {
        size_t first_bracket = line.find('[');
        size_t second_bracket = line.find(']', first_bracket);
        size_t third_bracket = line.find('[', second_bracket);
        size_t fourth_bracket = line.find(']', third_bracket);
        
        if (first_bracket != std::string::npos && second_bracket != std::string::npos &&
            third_bracket != std::string::npos && fourth_bracket != std::string::npos) {
            
            LogEntry entry;
            entry.timestamp = line.substr(first_bracket + 1, second_bracket - first_bracket - 1);
            entry.level = line.substr(third_bracket + 1, fourth_bracket - third_bracket - 1);
            entry.message = line.substr(fourth_bracket + 1);
            
            // 去除消息前面的空格
            size_t message_start = entry.message.find_first_not_of(' ');
            if (message_start != std::string::npos) {
                entry.message = entry.message.substr(message_start);
            }
            
            // 只保留ERROR級別的日志
            if (entry.level == "ERROR") {
                entries.push_back(entry);
            }
        }
    }
    
    return entries;
}

int main(int argc, char* argv[]) {
    if (argc != 2) {
        std::cerr << "用法: " << argv[0] << " <日志文件路徑>" << std::endl;
        return1;
    }
    
    auto start_time = std::chrono::high_resolution_clock::now();
    
    std::cout << "開始解析日志文件: " << argv[1] << std::endl;
    auto entries = parse_log(argv[1]);
    std::cout << "共發現 " << entries.size() << " 條ERROR級別日志" << std::endl;
    
    // 輸出前10條錯誤日志
    int count = 0;
    for (constauto& entry : entries) {
        if (count++ < 10) {
            std::cout << entry.timestamp << ": " << entry.message << std::endl;
        } else {
            break;
        }
    }
    
    auto end_time = std::chrono::high_resolution_clock::now();
    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time);
    std::cout << "處理耗時: " << duration.count() / 1000.0 << " 秒" << std::endl;
    
    return0;
}

再次編譯運行:

$ g++ -O2 fast_parser.cpp -o fast_parser
$ time ./fast_parser server.log

優化后的結果:

real 0m8.188s
user 0m7.240s
sys 0m0.945s

哇!只用了 8 秒多!相比原來的 3 分鐘,這簡直就是天壤之別啊,速度提升了 20 多倍!

主要優化點:

  • 使用基本的字符串操作替代了正則表達式
  • 預分配了 vector 的空間,減少內存重新分配
  • 增加了 -O2 編譯優化選項
  • 添加了時間測量代碼,方便對比性能

這個小實驗給我的啟示是:雖然正則表達式寫起來很方便,但在處理大量數據時,可能成為嚴重的性能瓶頸。

用性能分析工具找出這些瓶頸,然后用更高效的方法替代,就能大幅提升程序性能。這在實際工作中可是能省下不少時間的技能啊!

七、性能分析的實用技巧

(1) 先用簡單工具:不要一上來就用復雜工具。先用 time、top 這些簡單命令,確定問題大致在哪。

(2) 二八原則:程序 80% 的時間往往花在 20% 的代碼上。找到這 20% 的"熱點"代碼是關鍵。

(3) 二分查找法找性能問題:如果項目很大,不知道從哪下手,可以試試"二分法":

  • 把程序的功能模塊分成兩半
  • 暫時禁用一半,看問題是否還存在
  • 根據結果,繼續對有問題的那一半再分成兩半
  • 如此反復,直到定位到具體模塊

(4) 編譯優化:別忘了編譯時的優化選項,比如:

$ g++ -O2 your_program.cpp -o your_program

(5) 使用性能分析器:除了 perf,還有很多好用的工具,比如 Valgrind 的Callgrind、gperftools等。

(6) 不要過早優化:先讓程序正確運行,再考慮性能優化。過早優化是萬惡之源!

八、總結:性能分析的"三板斧"

如果你是初學者,記住這個簡單的流程就夠了:

  • 用 top 監控 CPU 使用率
  • 用 time 測量總執行時間
  • 用 perf 找出具體的熱點函數

掌握了這"三板斧",基本上就能應對 80% 的性能問題了。至于內存和 I/O 方面的性能分析,我們之后再詳細講解。

記住,性能優化是一門實戰性很強的技術,多練習,多分析,你很快就能成為性能調優高手!

責任編輯:趙寧寧 來源: 跟著小康學編程
相關推薦

2015-06-25 11:21:33

C++Objective-C

2025-06-03 08:35:00

命令Linux日志分析

2011-07-13 17:42:32

CC++

2017-11-15 20:00:29

人工智能大數據晉級指南

2011-07-13 17:08:02

CC++

2011-07-13 16:48:55

CC++

2024-05-16 11:04:06

C#異步編程編程

2021-12-06 23:00:36

CC++編程語言

2024-06-12 12:28:23

2011-11-03 11:42:42

虛擬化vmwareVMware View

2011-11-14 10:15:13

2011-10-09 17:39:20

VMware View虛擬化桌面虛擬化

2011-11-14 10:23:34

虛擬化vmwareVMware View

2011-11-14 10:30:07

虛擬化vmwareVMware View

2011-11-14 10:10:56

虛擬化vmwareVMware View

2011-10-17 15:03:48

2011-10-11 10:39:24

2011-11-14 10:27:31

虛擬化vmwareVMware View

2011-11-14 10:54:28

虛擬化vmwareVMware View

2011-06-15 15:29:25

Qt C++
點贊
收藏

51CTO技術棧公眾號

超碰福利在线观看| 日韩av片在线| 麻豆国产在线| 久久久高清一区二区三区| 国产精品成人v| 糖心vlog免费在线观看| 136导航精品福利| 色综合中文综合网| 伊人久久大香线蕉av一区| 最近中文字幕在线视频| 欧美喷水视频| 亚洲欧美另类人妖| 亚洲一二三不卡| 最新欧美色图| 一区二区三区色| 色综合久久av| 韩国av在线免费观看| 欧美a一区二区| 欧美激情一区二区三区成人| 国产黄色大片免费看| 91精品日本| 欧美午夜不卡在线观看免费| 国产91在线亚洲| 一级日本在线| 不卡影院免费观看| 91精品视频播放| 精品人妻一区二区色欲产成人| 欧美福利影院| 色噜噜狠狠色综合网图区| 国产又黄又粗又猛又爽的视频| 996久久国产精品线观看| 欧美体内谢she精2性欧美| 国产一区一区三区| 国产在线中文字幕| 99re在线精品| 成人欧美一区二区三区视频xxx| 中文字幕人妻一区二区三区视频| 日韩视频精品在线观看| 欧美高清视频一区二区| 91精品一区二区三区蜜桃| 精品国产一区探花在线观看| 日韩国产中文字幕| xxxxxx黄色| 99热这里只有精品首页| 欧美视频在线一区| 福利在线一区二区三区| 伊人久久综合一区二区| 亚洲va中文字幕| 欧美亚洲色图视频| 在线免费观看a视频| 亚洲欧洲日韩综合一区二区| 香蕉久久夜色| 又爽又大又黄a级毛片在线视频| 国产欧美日韩激情| 色阁综合av| 男男激情在线| 久久精品日产第一区二区三区高清版 | 99久久久精品免费观看国产| 国产一区二区麻豆| 久久国产精品99精品国产 | av日韩一区二区三区| 在线免费观看的av| 亚洲最大成人综合| 久久久久久人妻一区二区三区| 自拍亚洲图区| 亚洲国产日韩一区二区| 国产av人人夜夜澡人人爽麻豆| 国产网红女主播精品视频| 亚洲综合激情小说| 国产一二三在线视频| 国精一区二区三区| 午夜精品福利一区二区蜜股av| 激情五月宗合网| 成人性生交大片免费网站| 色综合激情五月| 自拍偷拍 国产| 婷婷久久免费视频| 日韩欧美不卡一区| 国产精品无码一区二区三| 亚洲第一福利社区| 中文字幕精品在线视频| www深夜成人a√在线| 午夜欧美精品| 欧美最近摘花xxxx摘花| 一区二区乱子伦在线播放| 美女一区二区视频| 99久热re在线精品996热视频| 天天射,天天干| 久久精品亚洲一区二区三区浴池| 亚洲女人毛片| 宅男在线观看免费高清网站| 天天影视色香欲综合网老头| 91看片就是不一样| 粉嫩av国产一区二区三区| 精品国产乱码久久久久久1区2区| jizz欧美性20| 亚洲成av人片一区二区密柚| 97视频com| 一区二区三区播放| 不卡一卡二卡三乱码免费网站| 六月婷婷久久| 成人免费看片| 欧美日韩精品在线观看| 亚洲一二三区av| 免费观看亚洲天堂| 亚洲人成欧美中文字幕| 日日骚一区二区三区| 性一交一乱一区二区洋洋av| 91成人免费看| av在线中文| 亚洲福利一二三区| 亚洲精品自拍网| 欧美aaaaa级| 久久精品国产精品| 国内免费精品视频| 韩国理伦片一区二区三区在线播放| 国产精品一区而去| 日韩免费网站| 在线观看日韩高清av| 中文字幕资源在线观看| 亚洲精品无吗| 久久99久久亚洲国产| 中文字幕在线视频免费| 99国内精品久久| 日韩视频一二三| 91欧美精品| 亚洲性生活视频| 久久狠狠高潮亚洲精品| 国产成人亚洲综合a∨婷婷图片| 色99中文字幕| 日韩天堂在线| 亚洲欧美日韩视频一区| 国产成年人免费视频| 国产乱理伦片在线观看夜一区| 亚洲日本理论电影| 亚洲伦乱视频| 亚洲天堂av女优| 综合网在线观看| 99re亚洲国产精品| 日韩伦理在线免费观看| 亚洲精品不卡在线观看| 久久不射热爱视频精品| 伊人网综合在线| 国产欧美一区二区精品婷婷 | 婷婷国产成人精品视频| 日韩av一二三| 亚洲国产精品久久久久婷婷老年 | 官网99热精品| 影音先锋在线视频| 91精品国产91综合久久蜜臀| 青青操在线播放| 麻豆国产91在线播放| 亚洲第一导航| 亚洲精品一区二区在线播放∴| 正在播放亚洲1区| 一区二区自拍偷拍| 国产精品欧美一区喷水| 国产成人美女视频| 911精品美国片911久久久| 成人信息集中地欧美| 黄色免费在线观看网站| 91精品国产综合久久久久久久久久 | 成人污污视频| 久久精品久久久久久| 国产日韩欧美中文字幕| 亚洲激情男女视频| 亚洲av综合色区无码另类小说| 欧美日本亚洲韩国国产| 国产欧美一区二区在线播放| 狠狠操一区二区三区| 亚洲福利在线播放| 青娱乐国产精品| av网站一区二区三区| 一区二区传媒有限公司| 羞羞色国产精品网站| 日本91av在线播放| 日本视频不卡| 精品国产伦一区二区三区观看体验 | 在线午夜精品| 午夜午夜精品一区二区三区文| 粉嫩av国产一区二区三区| 性色av一区二区三区红粉影视| 天堂在线中文| 欧美日韩在线亚洲一区蜜芽| 欧美人妻精品一区二区三区| av在线这里只有精品| 久久久国产欧美| 欧美成人首页| 欧美日韩综合精品| 精品国产鲁一鲁****| 午夜精品一区二区三区在线视频 | www.天天射.com| 亚洲天天综合| 欧美日本韩国一区二区三区| 亚洲三级电影| 欧美亚洲日本网站| 麻豆电影在线播放| 精品亚洲一区二区三区四区五区| 一炮成瘾1v1高h| 疯狂蹂躏欧美一区二区精品| 国产又粗又硬又长又爽| 久久综合五月天婷婷伊人| 亚洲第一色av| 日日骚欧美日韩| 成年人看的毛片| 欧美3p视频| 免费日韩av电影| av男人一区| 国产人妖伪娘一区91| 精品人人视频| 九九热在线精品视频| 18免费在线视频| 日韩国产精品一区| 亚洲精品视频网| 欧美日韩久久久一区| 四虎精品永久在线| 一区二区三区视频在线观看| 后入内射无码人妻一区| 久久免费国产精品| 丝袜熟女一区二区三区| 国产老妇另类xxxxx| 久久国产精品国产精品| 久久久夜夜夜| 青青青国产在线观看| 午夜日韩视频| 椎名由奈jux491在线播放 | 在线精品国产成人综合| 亚洲欧美日本在线观看| 精品欧美一区二区久久| 国产精品永久久久久久久久久| 91激情在线视频| 超碰中文字幕在线| 精品久久久久久中文字幕大豆网| 亚洲国产精品久| 亚洲日本在线观看| 中文乱码字幕高清一区二区| 日本一区二区三区四区| 国产免费一区二区三区网站免费| 99国产精品久久久久久久久久| 国产51自产区| 成人精品视频一区| 岛国av免费观看| 成人动漫一区二区三区| 涩视频在线观看| 成人免费视频网站在线观看| 国产成人精品综合久久久久99 | 激情一区二区三区| 激情小说一区| 精品国产乱码久久久久久蜜柚| 国产91精品入| 激情小说综合区| 精品在线播放| 欧美一区二区三区成人久久片| 欧美美女在线| 午夜精品福利一区二区| 日韩一区亚洲二区| 日本一区二区免费高清视频| 亚洲乱码在线| 国产精品va在线观看无码| 亚洲三级毛片| 日本www.色| 精品一区二区免费在线观看| 男男受被啪到高潮自述| 成人午夜精品在线| 中文文字幕文字幕高清| 久久久久国产精品麻豆ai换脸| 国内精品卡一卡二卡三| 成人欧美一区二区三区小说| 欧美精品一区二区成人| 天天av天天翘天天综合网色鬼国产| 国产毛片aaa| 欧美天天综合网| 99久久婷婷国产一区二区三区| 欧美xxxx在线观看| 日本亚洲欧美| 久久激情五月丁香伊人| 波多野结衣中文在线| 欧美壮男野外gaytube| 日韩一区二区三区四区五区 | 一级日本黄色片| 成人精品国产福利| 91视频在线网站| 中文字幕亚洲电影| 四虎永久在线精品| 日本高清免费不卡视频| 国产精品自拍电影| 国产视频欧美视频| 日韩子在线观看| 91国产美女视频| 黑人一区二区三区| 国产精品永久入口久久久| 欧美女优在线视频| 妞干网这里只有精品| 性久久久久久| 超碰91在线播放| 国产日韩欧美不卡在线| 永久免费看黄网站| 日本乱码高清不卡字幕| 国产草草影院ccyycom| 亚洲欧美一区二区激情| av小次郎在线| 国产精品旅馆在线| 大奶在线精品| 自拍偷拍视频在线| 美女日韩在线中文字幕| 337p日本欧洲亚洲大胆张筱雨 | 国产精品99久久久久久有的能看| 97人妻天天摸天天爽天天| 亚洲欧美国产三级| 成人毛片一区二区三区| 亚洲国产精品嫩草影院久久| 日本网站在线免费观看视频| 国产成人97精品免费看片| 一区二区网站| 国产香蕉一区二区三区| 奇米影视一区二区三区小说| 风间由美一二三区av片| 亚洲综合无码一区二区| 国产精品爽爽久久久久久| 亚洲偷熟乱区亚洲香蕉av| free性护士videos欧美| 91免费的视频在线播放| 精品日产免费二区日产免费二区| 欧美亚洲日本一区二区三区| 国产精品自拍网站| 日本少妇aaa| 欧美午夜一区二区三区| 欧美大片aaa| 欧美伊久线香蕉线新在线| 高潮久久久久久久久久久久久久| 亚洲av首页在线| 黄一区二区三区| 午夜黄色福利视频| 欧美日精品一区视频| 福利片在线看| 国产精品91视频| 国产九一精品| 无遮挡又爽又刺激的视频| 久久夜色精品一区| 黄色大片网站在线观看| 日韩精品丝袜在线| 欧美伦理91| 欧美成人第一区| 噜噜爱69成人精品| a级大片在线观看| 日韩欧美中文第一页| 男人天堂亚洲二区| 国产va免费精品高清在线观看| 免费观看久久av| 午夜视频在线瓜伦| 国产欧美综合在线| 91欧美日韩麻豆精品| 久久久国产精彩视频美女艺术照福利| 欧美一级做一级爱a做片性| 国产又粗又硬又长| 国产激情一区二区三区桃花岛亚洲| 欧美黄色aaa| 日韩欧美国产一区二区三区| 日本在线视频中文有码| 国产欧美日韩一区| 亚洲激情社区| japanese中文字幕| 欧美性生活久久| 国产盗摄在线观看| 俄罗斯精品一区二区| 99视频在线精品国自产拍免费观看| 亚洲精品理论片| 欧美三电影在线| 欧美videosex性极品hd| 久久99蜜桃综合影院免费观看| 久久精品首页| 精品女人久久久| 亚洲大胆美女视频| 欧美精品总汇| 黄色免费高清视频| 成人国产亚洲欧美成人综合网| 中文字字幕在线中文| 中文字幕亚洲欧美一区二区三区 | 成人深夜福利| 黄色一级片av| 久久这里只有精品首页| 亚洲天堂手机版| 欧美日产国产成人免费图片| 老司机精品在线| 亚洲天堂2018av| 亚洲国产综合视频在线观看| 国产小视频在线播放| 999视频在线免费观看| 在线亚洲欧美| 精品无码一区二区三区蜜臀| 亚洲第一区在线观看| 青青热久免费精品视频在线18| 黄色录像特级片| 国产色综合久久| 亚洲国产精品久久久久爰性色| 国产97在线观看| 国模大胆一区二区三区| 少妇精品无码一区二区免费视频| 欧美videos中文字幕| 精品视频在线一区二区在线|