精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91女厕偷拍女厕偷拍高清| 欧美1区免费| 精品视频全国免费看| 黄色高清视频网站| 色窝窝无码一区二区三区成人网站| 99在线精品免费视频九九视| 伊人久久五月天| 亚洲最大天堂网| 97超碰在线免费| 久久久91精品国产一区二区三区| 成人国产精品久久久| 日产精品久久久久| 国产韩日影视精品| 亚洲成人aaa| 亚洲美女性囗交| 不卡视频观看| 亚洲欧美日韩久久| 欧美日韩一区综合| 成人午夜免费福利| 老司机免费视频一区二区三区| 久久免费精品视频| 欧美美女性生活视频| 精品av导航| 欧美人动与zoxxxx乱| 日本wwww视频| 变态调教一区二区三区| 亚洲欧洲www| 欧美精品与人动性物交免费看| 国产白浆在线观看| 日韩福利电影在线观看| 91a在线视频| 欧美黄色一级网站| 国产精品精品| 视频直播国产精品| 中文字幕免费在线看线人动作大片| 国产欧美自拍一区| 欧美放荡的少妇| 一级在线免费视频| 香蕉久久免费电影| 色综合天天性综合| 久久网站免费视频| 成人免费网站观看| 亚洲午夜国产一区99re久久| 少妇久久久久久被弄到高潮| 免费观看在线黄色网| 中文字幕欧美日韩一区| 奇米影视首页 狠狠色丁香婷婷久久综合 | 91偷拍精品一区二区三区| 亚洲熟妇无码久久精品| 日本成人在线电影网| 国产成人精品av在线| 四虎成人在线观看| 久久午夜精品| 国产精品视频网| 一本一道精品欧美中文字幕| 美国十次了思思久久精品导航| 国产精品电影网站| 艳妇乳肉豪妇荡乳av无码福利 | 手机看片一区二区三区| 成人免费av资源| 国产精品有限公司| 亚洲色图狠狠干| 久久综合九色综合97_久久久| 精品伊人久久大线蕉色首页| 亚洲人成色777777精品音频| 91理论电影在线观看| 欧美精品一区在线发布| 成年人在线视频| 国产精品日日摸夜夜摸av| 亚洲午夜高清视频| 1区2区在线观看| 亚洲高清不卡在线观看| 精品一区二区中文字幕| av一区在线| 3atv一区二区三区| 少妇熟女视频一区二区三区| 日韩三级毛片| 国产亚洲人成a一在线v站| 麻豆视频免费在线播放| 欧美激情成人在线| 911国产网站尤物在线观看| 亚洲精品毛片一区二区三区| 精彩视频一区二区三区| 国产精品一 二 三| 美女做暖暖视频免费在线观看全部网址91| 国产欧美一区二区精品性色超碰| 五月天久久狠狠| 日韩激情av| 一本一道久久a久久精品| 三上悠亚av一区二区三区| 欧美一区在线观看视频| 国产视频久久网| 青青草原在线免费观看| 激情丁香综合| 国产精品美女久久久久av超清| jizz中国女人| 2020国产精品久久精品美国| 亚洲一区在线免费| 久草在线资源福利站| 91麻豆精品国产91久久久久久久久 | 亚洲视频在线观看| 欧美精品色哟哟| 日精品一区二区三区| 99一区二区三区| 9i精品一二三区| 欧美日韩亚洲精品内裤| 99精品视频国产| 久久av影视| 久久久影视精品| 国产精品区在线观看| 久久视频一区二区| 少妇大叫太大太粗太爽了a片小说| 香蕉成人av| 亚洲国产一区二区三区在线观看| 91香蕉国产视频| 久久国产毛片| 俄罗斯精品一区二区| 中文字幕在线观看日本| 精品久久久免费| 久久人妻少妇嫩草av蜜桃| 清纯唯美日韩| 日韩美女写真福利在线观看| 亚洲精品国产一区二| 国产精品情趣视频| 北条麻妃在线视频| 欧美日韩导航| 国色天香2019中文字幕在线观看| 国产一区二区三区四区视频 | 亚洲精品久久久久久国| 久久久久久婷| 久久久久高清| 成人三级高清视频在线看| 日韩精品一区国产麻豆| 开心激情五月网| 免费成人你懂的| 亚洲区一区二区三区| 精品3atv在线视频| 亚洲欧美日韩网| 视频一区二区三区四区五区| 99久久伊人网影院| 日韩欧美亚洲天堂| 老司机精品视频在线播放| 国模视频一区二区三区| 肥臀熟女一区二区三区| 亚洲一区二区影院| 欧产日产国产精品98| 韩日成人在线| 国产91aaa| 9999在线视频| 亚洲精品黄网在线观看| 精品国产乱码一区二区| 97精品电影院| 黄色片视频在线免费观看| 亚洲精品推荐| 国产精品高精视频免费| caoporn国产精品免费视频| 色香色香欲天天天影视综合网| 国产精品无码一区二区三区| 久久激情久久| 午夜精品福利一区二区| 先锋影音网一区二区| 久久不射热爱视频精品| 丰满人妻一区二区三区免费| 午夜精品一区二区三区免费视频| 在线精品一区二区三区| 噜噜爱69成人精品| 一区二区三区电影| 精品一区二区三区中文字幕视频| 欧美日韩xxx| 五月激情婷婷综合| 色噜噜夜夜夜综合网| 呻吟揉丰满对白91乃国产区| 韩国视频一区二区| 999一区二区三区| 蜜臀91精品国产高清在线观看| 国产精品久久一区主播| caoporn免费在线视频| 亚洲国产精品资源| 欧美 亚洲 另类 激情 另类| 亚洲欧美电影院| 182在线视频| 蜜臀精品一区二区三区在线观看| 国产高清精品软男同| 好吊妞国产欧美日韩免费观看网站 | 国产在线观看99| 国产亚洲欧洲一区高清在线观看| 欧美一级视频在线| 亚洲人体大胆视频| 亚洲精品一区国产精品| 超碰地址久久| 国产精品久久av| 黑人精品视频| 国产亚洲欧美日韩一区二区| 午夜精品一区二区三| 日本久久电影网| 一区二区在线观看免费视频| 久久精品一区四区| 欧美xxxx黑人| 免费在线观看视频一区| www.av中文字幕| 99精品美女| 欧美精品免费观看二区| www.久久草.com| 国产成人高潮免费观看精品| 污污视频在线| 色诱女教师一区二区三区| 色婷婷av一区二区三| 欧美日韩国产综合一区二区三区 | 精品一卡二卡三卡四卡日本乱码| 日韩黄色碟片| 国产成人精品久久二区二区91| 在线中文字幕视频观看| 最近的2019中文字幕免费一页| 少妇喷水在线观看| 欧美一区二区在线视频| 国产精品成人久久久| 色综合久久天天综合网| 国产一级淫片a| 亚洲精品日韩综合观看成人91| 精品人妻一区二区三区四区| 99精品久久99久久久久| 日本人妻一区二区三区| 国内久久婷婷综合| 中文字幕第38页| 久久综合亚州| 男女av免费观看| 亚洲日本视频| 阿v天堂2018| 国内在线观看一区二区三区| 在线免费观看成人| 日韩av在线中文字幕| 欧美激情论坛| 亚洲成在人线免费观看| 精品免费国产| 精品国内亚洲2022精品成人| http;//www.99re视频| 久久伊人久久| 岛国视频一区免费观看| 免费精品一区| 91在线免费观看网站| 2020国产精品小视频| 国产精品一区二区久久| 国产91亚洲精品久久久| 国产精品自拍偷拍| 国产三级一区| 成人精品久久久| 亚洲一区二区三区久久久| 国产在线拍揄自揄视频不卡99| 免费在线成人激情电影| 国产精品久久久久久亚洲调教| 欧美三级精品| 国产精品丝袜视频| 成人黄色理论片| 999在线免费观看视频| 一区二区三区四区高清视频| av一区和二区| 亚洲精品无吗| 亚洲国产午夜伦理片大全在线观看网站 | 亚洲精品福利在线观看| 日韩a在线观看| 一本色道久久综合狠狠躁篇怎么玩 | 中文字幕欧美精品日韩中文字幕| 成人精品一区| 久久天堂电影网| 国产盗摄精品一区二区酒店| 97精品久久久| 韩国精品主播一区二区在线观看| 国产精品视频久久| 一区二区在线视频观看| 狠狠色狠狠色综合人人| 国产一卡不卡| 日日噜噜噜夜夜爽爽| 在线成人h网| 国产精品亚洲αv天堂无码| 美腿丝袜亚洲三区| 中文字幕av一区二区三区人妻少妇| 国产91在线|亚洲| 国产伦理片在线观看| 亚洲特黄一级片| 国产精品xxxx喷水欧美| 欧美日韩一区二区三区免费看| 国产视频在线观看视频| 日韩精品视频免费专区在线播放| 国产一区电影| 欧美片一区二区三区| 蜜桃视频m3u8在线观看| 91久久久亚洲精品| 色狠狠久久av综合| 影音欧美亚洲| 在线亚洲伦理| 九九热视频免费| 91在线一区二区三区| 任我爽在线视频| 精品国产鲁一鲁一区二区张丽| 中文字幕永久在线视频| 欧美精品一区二区在线播放 | 日本亚洲不卡| 日韩视频在线观看视频| 亚洲国产影院| 中文字幕一区久久| 久久综合资源网| 中文字幕第69页| 午夜精品123| 国产高潮流白浆喷水视频| 亚洲女人天堂网| 欧美videosex性极品hd| 国产欧美欧洲在线观看| 日韩av三区| 成人毛片100部免费看| 日本强好片久久久久久aaa| 一区二区免费在线观看视频| 亚洲天天做日日做天天谢日日欢 | 久久精品成人一区二区三区蜜臀 | 欧美理论电影在线精品| 熟女视频一区二区三区| 日韩中文字幕不卡| 波多野结衣先锋影音| 亚洲黄色小说网站| 伊人网综合在线| 亚洲视频在线免费看| av资源中文在线| 成人永久免费| 欧美区国产区| 两女双腿交缠激烈磨豆腐| 中文成人av在线| 亚洲av中文无码乱人伦在线视色| 欧美mv日韩mv国产网站app| 好吊日视频在线观看| 国产精品久久久久久久久久久新郎 | 久久久久久久久久久久久久久99 | 欧美一区二区福利在线| 99免在线观看免费视频高清| 欧美中文字幕第一页| 激情小说一区| 日韩av三级在线| www.日韩在线| 日韩精品一区二区三| 亚洲成人a**站| a√中文在线观看| 久久99导航| 999亚洲国产精| 国产美女视频免费观看下载软件| 亚洲国产一区二区视频| 黑人操亚洲女人| 久久人91精品久久久久久不卡| 在线日韩成人| 日韩精品在线中文字幕| 成人av第一页| www.中文字幕在线观看| 亚洲免费精彩视频| 成人午夜精品| 亚洲最大免费| 国产一区二区不卡老阿姨| 日本aⅴ在线观看| 亚洲电影免费观看高清| 嗯~啊~轻一点视频日本在线观看| 狠狠爱一区二区三区| 免费视频久久| 先锋影音av在线| 在线电影院国产精品| 宅男在线观看免费高清网站| 国产伦精品一区二区三区视频黑人 | 91在线码无精品| 天堂网一区二区| 色婷婷综合成人| 91精品啪在线观看国产爱臀| 国产九色porny| 久久免费视频色| 又骚又黄的视频| 欧美成人精品在线| 卡通动漫精品一区二区三区| 日韩 欧美 高清| 中文字幕亚洲电影| 黄色a在线观看| 日韩免费av在线| 91精品啪在线观看国产81旧版| 天堂va欧美va亚洲va老司机| 欧美天天综合色影久久精品| 在线观看免费黄视频| 亚洲影院色在线观看免费| 99亚洲精品| 国精产品视频一二二区| 欧美mv日韩mv国产网站| 日韩成人亚洲| 国产一级不卡视频| 中文字幕欧美国产| 你懂的网站在线| 国产精品人人做人人爽| 国产精品www.| 日韩影视一区二区三区| 日韩精品专区在线影院重磅| 免费亚洲电影| 丁香婷婷综合激情| 国产精品日产欧美久久久久| 黄色美女一级片| 国产在线高清精品| 亚洲欧美不卡| 免费在线观看黄色av| 在线成人激情视频| 美女视频亚洲色图|