亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Flutter性能優(yōu)化:benchmark_harness鴻蒙化適配與微基準(zhǔn)測試實(shí)戰(zhàn)

Flutter性能優(yōu)化:benchmark_harness鴻蒙化適配與微基準(zhǔn)測試實(shí)戰(zhàn) 做 Flutter 性能優(yōu)化的人多少都和 benchmark_harness 打過交道——這是 Dart 官方維護(hù)的微基準(zhǔn)測試庫核心價(jià)值是讓你用標(biāo)準(zhǔn)化的方式量化函數(shù)耗時(shí)而不是靠 print 打時(shí)間戳拍腦袋。但大多數(shù)人沒用它跑過鴻蒙環(huán)境。我這次要交代的就是把它完整遷移到鴻蒙生態(tài)、打磨成一套可靠壓測工具的全過程包括為什么純 Dart 庫也會(huì)水土不服、怎么改才能拿到穩(wěn)定數(shù)據(jù)、以及跑通之后如何接入自動(dòng)化體系。這次適配的需求來自一個(gè)真實(shí)的性能優(yōu)化項(xiàng)目某跨平臺(tái)應(yīng)用需要評估自研加密算法在鴻蒙設(shè)備上的執(zhí)行效率對比不同實(shí)現(xiàn)方案。最開始大家覺得直接引入官方 benchmark_harness 就行結(jié)果第一輪壓測數(shù)據(jù)就讓人懷疑人生——同一個(gè)算法在標(biāo)準(zhǔn) Android 設(shè)備上耗時(shí) 0.8ms到鴻蒙開發(fā)板上變成了 1.9ms而且方差大得離譜。后來排查下來問題根本不在于算法本身而是 benchmark_harness 的底層計(jì)時(shí)鏈路在鴻蒙上踩了一堆坑。這篇文章適合三類人看要在鴻蒙設(shè)備上做算法選型或性能評估的 Flutter 開發(fā)者正在做三方庫鴻蒙適配的技術(shù)同學(xué)以及想把微基準(zhǔn)測試接入 CI 流水線的工程效能人員。我不會(huì)只講怎么改而是把為什么這樣改一并講透。1. 為什么一個(gè)純 Dart 庫也需要鴻蒙化適配很多人聽到 benchmarking 庫要適配第一反應(yīng)是疑惑benchmark_harness 又沒用到 Android 原生 API它不是純 Dart 嗎純 Dart 代碼跨平臺(tái)不是理所當(dāng)然的嗎這個(gè)理解對了一半。1.1 先搞清楚 benchmark_harness 到底做了什么benchmark_harness 的核心機(jī)制很簡單它定義了一個(gè) BenchmarkBase 抽象類你寫一個(gè)子類實(shí)現(xiàn) run() 方法它就負(fù)責(zé)幫你做預(yù)熱、計(jì)時(shí)、統(tǒng)計(jì)、報(bào)告。它之所以被公認(rèn)是官方基準(zhǔn)測試的默認(rèn)選擇是因?yàn)樗褞讉€(gè)關(guān)鍵環(huán)節(jié)封裝到位了預(yù)熱warmup正式計(jì)時(shí)前先跑若干輪讓 JIT 充分發(fā)揮作用避免解釋執(zhí)行階段的數(shù)據(jù)污染首次測量結(jié)果。反復(fù)執(zhí)行對一個(gè)被測方法連續(xù)執(zhí)行多次取平均/中位數(shù)減少單次調(diào)度噪聲。標(biāo)準(zhǔn)報(bào)告格式輸出每秒執(zhí)行次數(shù)Score和時(shí)間消耗方便橫向比較。聽起來確實(shí)很平臺(tái)無關(guān)對不對問題就出在計(jì)時(shí)的實(shí)現(xiàn)上。去看看它的源碼你就會(huì)發(fā)現(xiàn)底層計(jì)時(shí)依賴的是 dart:core 里的 Stopwatch而 Stopwatch 的計(jì)時(shí)精度和實(shí)現(xiàn)方式在不同運(yùn)行時(shí)環(huán)境下是有差異的。1.2 鴻蒙環(huán)境讓開箱即用變成了開箱即炸這里的核心矛盾在于Flutter 在鴻蒙上運(yùn)行時(shí)Dart 虛擬機(jī)跑在鴻蒙的運(yùn)行時(shí)之上dart:ui 和相關(guān)底層能力是經(jīng)過橋接適配的。官方標(biāo)準(zhǔn) Flutter 默認(rèn)的 Stopwatch 是基于系統(tǒng)時(shí)鐘實(shí)現(xiàn)的在 Android 和桌面 Linux 上行為一致但在鴻蒙環(huán)境下時(shí)鐘源的調(diào)度策略、時(shí)間戳獲取方式、甚至進(jìn)程優(yōu)先級(jí)的處理邏輯都和標(biāo)準(zhǔn) Linux 用戶空間環(huán)境不完全一致。我實(shí)測下來最直觀的現(xiàn)象有三個(gè)第一Stopwatch 的時(shí)鐘源不穩(wěn)定。鴻蒙某些版本上 Stopwatch 走的是墻上時(shí)鐘而非單調(diào)時(shí)鐘一旦系統(tǒng)校時(shí)或休眠喚醒測試數(shù)據(jù)直接跳變。第二線程調(diào)度噪聲大。標(biāo)準(zhǔn) Linux 上你可以通過進(jìn)程/線程優(yōu)先級(jí)設(shè)置降低調(diào)度干擾但鴻蒙的權(quán)限模型和調(diào)度策略不同默認(rèn)優(yōu)先級(jí)下跑出來的數(shù)據(jù)抖動(dòng)明顯。第三控制臺(tái)輸出通道不同。benchmark_harness 默認(rèn)用 print 輸出結(jié)果到 stdout而鴻蒙的原生日志系統(tǒng)是另一套通道在部分調(diào)試模式下 print 會(huì)帶來額外 I/O 開銷污染計(jì)時(shí)窗口??吹竭@里你應(yīng)該明白了這個(gè)適配的本質(zhì)不是跑不起來而是跑起來了但數(shù)據(jù)不可信。1.3 這次適配的實(shí)際改動(dòng)面有多大總的來說改動(dòng)并不算傷筋動(dòng)骨。核心工作集中在兩點(diǎn)把底層計(jì)時(shí)源替換成鴻蒙環(huán)境下穩(wěn)定可用的實(shí)現(xiàn)把輸出層接入鴻蒙日志體系。至于預(yù)熱邏輯、統(tǒng)計(jì)方式、報(bào)告格式化這些上層邏輯完全保持原樣。一個(gè)額外的判斷是這次適配的成果不只對一個(gè)項(xiàng)目有效。因?yàn)?benchmark_harness 在 Flutter 生態(tài)里被廣泛用作依賴庫你只要形成了穩(wěn)定的適配層后續(xù)任何基于它的壓測工程都能復(fù)用這套改法。2. 適配前的技術(shù)摸底拆解 benchmark_harness 的骨架動(dòng)手改之前我還是花了一個(gè)晚上把 benchmark_harness 的源碼完整讀了一遍。這里值得多說一句做三方庫適配第一件事永遠(yuǎn)是讀源碼而不是直接搜如何適配。官方文檔只會(huì)告訴你 API 怎么用源碼才會(huì)告訴你它底層依賴了什么。2.1 benchmark_harness 的核心類與調(diào)用鏈路整個(gè)庫的結(jié)構(gòu)相當(dāng)精簡核心就三個(gè)類BenchmarkBase所有測試的基類。它定義了完整的執(zhí)行流程setup → warmup → exercise → run → teardown。子類只需要實(shí)現(xiàn) run()其他步驟都可以按需重寫。BenchmarkRunner負(fù)責(zé)批量調(diào)度所有 BenchmarkBase 子類實(shí)例按順序執(zhí)行并聚合結(jié)果。Score封裝一組計(jì)時(shí)樣本計(jì)算平均值、標(biāo)準(zhǔn)差、置信區(qū)間等統(tǒng)計(jì)量。調(diào)用鏈路上最關(guān)鍵的一段代碼在 BenchmarkBase.report() 里。大致邏輯是final watch Stopwatch()..start(); run(); watch.stop(); final elapsed watch.elapsedMicroseconds;也就是說所有測量數(shù)據(jù)的最底層來源就是 Stopwatch。所以鴻蒙化適配的第一個(gè)技術(shù)決策就落到了怎么替換 Stopwatch上。2.2 摸清 Stopwatch 的時(shí)間來源Stowatch 在 Dart 虛擬機(jī)里不是憑空產(chǎn)生的它最終會(huì)走到操作系統(tǒng)的時(shí)鐘接口。在標(biāo)準(zhǔn) Linux 和 Android 上它用的是 clock_gettime(CLOCK_MONOTONIC)也就是單調(diào)時(shí)鐘——這個(gè)時(shí)鐘不受系統(tǒng)時(shí)間調(diào)整影響專門用來測量時(shí)間間隔精度通常是納秒級(jí)。但鴻蒙的運(yùn)行環(huán)境有自己的時(shí)鐘抽象層。在我實(shí)測的某款鴻蒙開發(fā)板上Stopwatch 的底層實(shí)現(xiàn)可能并不保證使用單調(diào)時(shí)鐘而且不同版本系統(tǒng)之間的行為還不一致。這個(gè)問題的隱蔽性在于如果只是偶爾跑一下你會(huì)發(fā)現(xiàn)數(shù)據(jù)好像還行但當(dāng)你要做嚴(yán)謹(jǐn)?shù)?A/B 對比時(shí)那點(diǎn)系統(tǒng)時(shí)鐘漂移就足夠讓你得出錯(cuò)誤結(jié)論了。這里有個(gè)很實(shí)用的判別方法連續(xù)跑 100 次空操作的 Stopwatch 計(jì)時(shí)如果最小值和平均值差距超過一個(gè)數(shù)量級(jí)說明時(shí)鐘源或調(diào)度噪聲有問題。我在鴻蒙環(huán)境上實(shí)測空操作平均耗時(shí)在 40 納秒左右但最小值只有 8 納秒最大值竟然能到 2.3 毫秒——純粹是調(diào)度抖動(dòng)不是庫本身的問題。2.3 適配前要準(zhǔn)備好的環(huán)境清單開始改代碼之前有幾個(gè)環(huán)境項(xiàng)必須先確認(rèn)否則后面調(diào)試的時(shí)候會(huì)花大量時(shí)間在環(huán)境問題和代碼問題之間做無意義的排查項(xiàng)目推薦配置說明Flutter SDK支持鴻蒙的 OHOS 版本必須用帶鴻蒙 Flutter Engine 的 SDK不能用標(biāo)準(zhǔn)版目標(biāo)設(shè)備至少兩臺(tái)不同型號(hào)的開發(fā)板只有一臺(tái)設(shè)備的話很難區(qū)分平臺(tái)共性問題與設(shè)備個(gè)例構(gòu)建模式release 或 profile 模式debug 模式屬于 JIT 解釋執(zhí)行數(shù)據(jù)沒有參考價(jià)值日志系統(tǒng)鴻蒙 hilog 工具鏈需要確認(rèn)設(shè)備能直接查看 hiLog 輸出提示如果你們團(tuán)隊(duì)還沒有鴻蒙開發(fā)機(jī)建議優(yōu)先選擇帶獨(dú)立 GPU 的型號(hào)因?yàn)楹罄m(xù)性能壓測大概率不止跑 CPU 算法還要覆蓋渲染鏈路。3. 代碼層面的鴻蒙化改造從 pubspec 到計(jì)時(shí)源環(huán)境準(zhǔn)備好之后真正的改造就開始了。我會(huì)按照從外到內(nèi)的順序來講先是依賴聲明再是核心計(jì)時(shí)源最后是輸出通道。每一步都會(huì)給你可以直接用的代碼。3.1 依賴聲明與編譯目標(biāo)調(diào)整如果你只是把 benchmark_harness 當(dāng)作普通三方庫依賴在 pubspec.yaml 里寫上版本號(hào)就完事了。但對于鴻蒙化適配來說我建議走本地源碼依賴 適配補(bǔ)丁的路線而不是直接引用線上包。dependencies: benchmark_harness: path: ./third_party/benchmark_harness這樣做的理由很實(shí)際你大概率需要修改庫的內(nèi)部實(shí)現(xiàn)如果直接引用 pub 上的版本這些改動(dòng)無法持久化每次重新 pub get 都會(huì)丟。把源碼拉到本地維護(hù)改完還能打私有補(bǔ)丁包。另外由于鴻蒙 Flutter 工程的編譯目標(biāo)設(shè)置和標(biāo)準(zhǔn)工程不同本地源碼依賴也方便你按需調(diào)整編譯選項(xiàng)。還有一個(gè)容易踩坑的細(xì)節(jié)確保你的工程開啟了 --enable-experiment 或者合適的空安全配置。benchmark_harness 較新版本已經(jīng)全面空安全化但如果你的工程還在用舊版 Flutter會(huì)出現(xiàn)類型錯(cuò)誤。鴻蒙上的 Flutter 版本通常落后于官方最新版建議先把 Flutter SDK 版本固定下來再引依賴。3.2 抽象計(jì)時(shí)源把 Stopwatch 換成可插拔實(shí)現(xiàn)這是整個(gè)改造的核心。我的做法是定義一個(gè)新的計(jì)時(shí)接口然后在鴻蒙環(huán)境里用 FFI 調(diào)用底層系統(tǒng)接口替代 Dart 默認(rèn)的 Stopwatch。首先定義抽象接口/// 統(tǒng)一的時(shí)間源抽象用于跨環(huán)境替換 abstract class TimeSource { /// 返回當(dāng)前時(shí)間戳單位納秒 int nanos(); /// 計(jì)算兩個(gè)時(shí)間戳之間的差值 int elapsedNanos(int startNanos, int endNanos); }這個(gè)抽象的價(jià)值在于benchmark_harness 的官方實(shí)現(xiàn)里計(jì)時(shí)邏輯是硬編碼在 BenchmarkBase 里的根本沒有替換的入口。我們引入 TimeSource 之后上層代碼完全不需要感知底層用的是哪個(gè)時(shí)鐘源。然后是鴻蒙環(huán)境的具體實(shí)現(xiàn)。這里我采用了通過 dart:ffi 調(diào)用系統(tǒng) C 接口的方式獲取單調(diào)時(shí)鐘import dart:ffi; import dart:io; typedef _GetTimeFunc Int64 Function(PointerInt64); final _getTime _loadLibrary(); /// 通過 FFI 調(diào)用鴻蒙系統(tǒng)的 monotonic clock 接口 class OhosTimeSource implements TimeSource { override int nanos() { // 示意代碼實(shí)際需按目標(biāo)體系的符號(hào)名綁定 final buffer _malloc.allocateInt64(sizeOfInt64()); final result _getTime(buffer); _malloc.free(buffer); return result; } }代碼里的符號(hào)綁定部分每家廠商的接口名和鏈接庫可能略有差異但我建議你優(yōu)先在系統(tǒng)庫中查找 monotonic 類型的時(shí)間接口。在真實(shí)項(xiàng)目中我最后找到的是通過 clock_gettime(CLOCK_MONOTONIC) 這條鏈路完成的耗時(shí)從原來的 90 納秒左右降到了 40 納秒上下而且穩(wěn)定性顯著提升。注意FFI 方案只適合用在自定義的測時(shí)環(huán)節(jié)。如果第三方庫內(nèi)部已經(jīng)直接使用了 Stopwatch你是替換不掉的。這也是為什么我們選擇把 benchmark_harness 改為本地依賴——只有改了庫的內(nèi)部實(shí)現(xiàn)才能做到真正的源頭替換。3.3 改造 BenchmarkBase 的內(nèi)部計(jì)時(shí)邏輯拿到 TimeSource 之后下一步是把 BenchmarkBase 內(nèi)部硬編碼的 Stopwatch 調(diào)用替換為可插拔的 TimeSource。核心改動(dòng)就一處report() 方法里的計(jì)時(shí)代碼。原邏輯final watch Stopwatch()..start(); run(); watch.stop();適配后final startNanos _timeSource.nanos(); run(); final endNanos _timeSource.nanos(); final elapsedNanos endNanos - startNanos;同時(shí)BenchmarkBase 的構(gòu)造函數(shù)需要增加一個(gè)可選參數(shù)允許調(diào)用方注入自定義 TimeSource。這樣在鴻蒙設(shè)備上使用的時(shí)候傳入 OhosTimeSource在標(biāo)準(zhǔn) Flutter 環(huán)境里不傳走默認(rèn)實(shí)現(xiàn)保持兼容。這個(gè)改法最舒服的地方是BenchmarkBase 對外暴露的 API 完全沒變?nèi)魏我延械臏y試用例代碼都不需要改動(dòng)只要在跑測時(shí)設(shè)置好 TimeSource 即可。對于工程里已存在的大量 BenchmarkBase 子類遷移成本幾乎為零。3.4 輸出層對接讓結(jié)果進(jìn) hilogbenchmark_harness 默認(rèn)用 print 輸出測試報(bào)告。print 在標(biāo)準(zhǔn)平臺(tái)上沒什么問題但在鴻蒙上我遇到了兩類麻煩一是部分調(diào)試版本下 print 會(huì)觸發(fā)額外的通道寫入影響計(jì)時(shí)窗口二是 print 的輸出不會(huì)自動(dòng)進(jìn)入 hilog導(dǎo)致在 integrated 日志工具里看不到壓測數(shù)據(jù)。我的改法是給 BenchmarkBase 增加一個(gè) ReportSink 抽象默認(rèn)實(shí)現(xiàn)仍然走 print鴻蒙實(shí)現(xiàn)則走 hilog。在適配環(huán)境里把報(bào)告輸出到 hilog 的 info 級(jí)別同時(shí)在應(yīng)用目錄下保留一份 result 文件方便后續(xù)回傳分析。abstract class ReportSink { void write(String line); } class OhosReportSink implements ReportSink { override void write(String line) { // 以結(jié)構(gòu)化日志方式輸出方便工具鏈檢索 hilog.info(Benchmark, line); File(${Directory.systemTemp.path}/benchmark_result.txt) .writeAsStringSync($line\n, mode: FileMode.append); } }這一步做完之后你在鴻蒙上跑壓測就能直接在 hilog 里看到每輪測試的 Score 和耗時(shí)統(tǒng)計(jì)了。4. 跑通只是開始計(jì)時(shí)噪聲、調(diào)度與數(shù)據(jù)可信度問題代碼改完、Demo 能跑通之后我本以為適配工作就算結(jié)束了。然而真正的挑戰(zhàn)從這一刻才開始。鴻蒙環(huán)境對性能數(shù)據(jù)的不友好程度比我預(yù)想的嚴(yán)重得多。這一節(jié)專門聊聊我在數(shù)據(jù)可信度上踩過的坑和總結(jié)的處理方法。4.1 時(shí)鐘源切換前后的實(shí)測對比改造完成以后我第一時(shí)間做了一次對照測試用同一個(gè)算法、同一臺(tái)設(shè)備分別用改造前的 Stopwatch 方案和改造后的 OhosTimeSource 方案各跑 100 輪記錄每輪的微秒級(jí)耗時(shí)。方案平均值(us)最小值(us)最大值(us)標(biāo)準(zhǔn)差(us)改造前Stopwatch189015203420620改造后OhosTimeSource16751598179046數(shù)據(jù)差距很明顯。改造前那套方案最大值和最小值差了近兩倍標(biāo)準(zhǔn)差高達(dá) 620 微秒——這種數(shù)據(jù)基本沒法用來做嚴(yán)謹(jǐn)?shù)膶Ρ雀脑旌髽?biāo)準(zhǔn)差降到了 46 微秒最大最小只差 12%這個(gè)精度才勉強(qiáng)達(dá)到了能用來評估算法效率的門檻。之所以差距這么大除了時(shí)鐘源的穩(wěn)定性差異還有一部分原因是 Stopwatch 接口在鴻蒙上的實(shí)現(xiàn)封裝層次更深每次 start/stop 的時(shí)間開銷本身就存在較大波動(dòng)而這些波動(dòng)被計(jì)算進(jìn)了測量結(jié)果里。FFI 直調(diào)系統(tǒng)接口之后單次測量的固定開銷更小、更穩(wěn)定。4.2 調(diào)度噪聲比時(shí)鐘源更隱蔽的性能殺手時(shí)鐘源解決之后我遇到了第二個(gè)大坑即使計(jì)時(shí)源穩(wěn)定了測試結(jié)果依然會(huì)在某些時(shí)刻突然劣化。排查了很久才發(fā)現(xiàn)問題出在系統(tǒng)調(diào)度器對 Dart 線程的時(shí)間片分配上。標(biāo)準(zhǔn) Linux 上你可以通過修改線程優(yōu)先級(jí)來降低調(diào)度干擾鴻蒙的調(diào)度器雖然也支持優(yōu)先級(jí)調(diào)整但 Flutter 引擎創(chuàng)建的 Dart 工作線程默認(rèn)并不帶高優(yōu)先級(jí)標(biāo)記。調(diào)度的隨機(jī)搶占反映在測量結(jié)果里就是偶發(fā)的耗時(shí)尖峰。針對這個(gè)問題我的處理思路有三個(gè)層級(jí)第一預(yù)熱輪數(shù)加倍。benchmark_harness 默認(rèn)預(yù)熱一輪在鴻蒙設(shè)備上明顯不夠。我把預(yù)熱輪數(shù)調(diào)整到 10 輪讓 JIT 穩(wěn)定下來同時(shí)讓系統(tǒng)調(diào)度器逐漸把線程調(diào)度到比較穩(wěn)定的 CPU 核心上。第二剔除非穩(wěn)態(tài)數(shù)據(jù)。對 100 輪有效數(shù)據(jù)去掉最高 10% 和最低 10% 再取中位數(shù)。這個(gè)策略來自工業(yè)級(jí)性能測試的常用做法——trucated mean 截尾均值對調(diào)度偶發(fā)噪聲有很強(qiáng)的抵抗力。第三開啟線程優(yōu)先級(jí)提升。在測試流程啟動(dòng)前我通過 FFI 嘗試提升當(dāng)前線程的調(diào)度優(yōu)先級(jí)。在開發(fā)板上有一定效果但在部分受限設(shè)備上會(huì)因?yàn)闆]有權(quán)限而失敗。所以這一步我封裝成了盡力而為的邏輯失敗了也不阻塞測試。提示優(yōu)先級(jí)提升如果依賴 root 權(quán)限不建議在產(chǎn)品設(shè)備上硬開。具體設(shè)備是否支持最好在測試啟動(dòng)時(shí)做一次自檢輸出日志即可別讓測試流程崩潰。4.3 置信區(qū)間怎么算才靠譜benchmark_harness 自帶的統(tǒng)計(jì)功能相對簡單只會(huì)輸出平均值和標(biāo)準(zhǔn)差。對于嚴(yán)謹(jǐn)?shù)乃惴▽Ρ任腋ㄗh自己加一層統(tǒng)計(jì)擴(kuò)展。在我這邊我給報(bào)告增加了 95% 置信區(qū)間Confidence Interval的計(jì)算。置信區(qū)間的公式不復(fù)雜CI mean ± z * (std / sqrt(n))。z 取 1.96 就是 95% 置信水平。比如 4.1 節(jié)里改造后的數(shù)據(jù)平均耗時(shí) 1675 微秒標(biāo)準(zhǔn)差 46 微秒樣本量 100那么置信區(qū)間就是 1675 ± 1.96 * 46 / 10 1675 ± 9.0 微秒。這意味著什么如果你的兩個(gè)方案 A 和 B 的測量結(jié)果差距不到 20 微秒那在統(tǒng)計(jì)意義上基本辨別不出來。有了置信區(qū)間你就有了一個(gè)是否繼續(xù)優(yōu)化的客觀依據(jù)而不是被單次跑分的隨機(jī)波動(dòng)誤導(dǎo)。4.4 內(nèi)存分配對計(jì)時(shí)結(jié)果的隱性污染還有一個(gè)很多教程不會(huì)提的坑benchmark_harness 的 run() 方法里如果有內(nèi)存分配GC 就會(huì)在計(jì)時(shí)窗口內(nèi)隨機(jī)觸發(fā)導(dǎo)致耗時(shí)暴漲。我用一個(gè)簡單字符串拼接算法跑測試時(shí)總有一部分輪次的耗時(shí)會(huì)突然沖到平時(shí)的 3 倍。后來用 DevEco Profiler 觀察內(nèi)存曲線才發(fā)現(xiàn)那幾輪恰好都觸發(fā)了新生代 GC。處理方式有兩種。最簡單的在測試腳本里主動(dòng)調(diào)用 System.gc()把 GC 推到計(jì)時(shí)窗口之外更嚴(yán)謹(jǐn)?shù)淖龇ㄊ窃?hot path 里避免任何內(nèi)存分配用預(yù)先分配好的 buffer 做操作。如果你的測試目標(biāo)本身就是內(nèi)存分配算法那就得換一種策略——直接測量 GC 頻率而不是測量單次操作耗時(shí)。不管選擇哪種方案原則都只有一個(gè)你需要明確知道每一輪測量數(shù)據(jù)里是否混入了 GC 的影響并在報(bào)告里標(biāo)注出來。5. 從單次壓測到工業(yè)級(jí)性能工具流適配和校準(zhǔn)做完之后benchmark_harness 在鴻蒙上已經(jīng)可以穩(wěn)定工作了。但要是只停留在能跑的程度那還配不上工業(yè)級(jí)性能基準(zhǔn)測試工具流這個(gè)目標(biāo)。真正有價(jià)值的是把壓測納入持續(xù)集成讓性能退化在代碼合并之前就被發(fā)現(xiàn)。5.1 把 benchmark_harness 嵌入 CI 流水線要在 CI 里跑鴻蒙壓測前提是有一套自動(dòng)化執(zhí)行鴻蒙測試任務(wù)的流水線。通用做法是準(zhǔn)備一臺(tái)鴻蒙開發(fā)板作為專用壓測機(jī)通過 adb 類似的調(diào)試通道連接由流水線觸發(fā)測試任務(wù)并收集結(jié)果。我在實(shí)際項(xiàng)目里的流程是這樣的每次有性能敏感代碼變更提交時(shí)流水線自動(dòng)拉取最新測試代碼并編譯 release 包。通過調(diào)試工具把測試包安裝到壓測機(jī)上。執(zhí)行 benchmark_harness 測試程序生成結(jié)果文件。把結(jié)果文件回傳到流水線與基線數(shù)據(jù)做對比。如果某關(guān)鍵指標(biāo)劣化超過設(shè)定閾值比如中位數(shù)耗時(shí)增加超過 5%流水線直接標(biāo)紅阻斷合并。這個(gè)流程的關(guān)鍵在于基線數(shù)據(jù)的維護(hù)。我建議把每次跑出來的結(jié)果都存到中央存儲(chǔ)里按設(shè)備型號(hào)、系統(tǒng)版本、代碼版本三個(gè)維度組織起來。這樣才能回答這次 5% 的劣化到底是代碼問題還是系統(tǒng)調(diào)度波動(dòng)這種問題。5.2 結(jié)果解析與性能回歸檢測benchmark_harness 的輸出格式雖然是標(biāo)準(zhǔn)化的但跨設(shè)備橫向比較時(shí)還需要做一次歸一化處理。比如 A 設(shè)備 CPU 主頻 2.0GHzB 設(shè)備 2.6GHz直接比較毫秒數(shù)是沒意義的。我在結(jié)果解析階段會(huì)額外做一個(gè)每指令周期耗時(shí)換算把耗時(shí)除以設(shè)備參考頻率得到歸一化指標(biāo)。這個(gè)換算不需要特別精確只要能消除設(shè)備間主頻差異的干擾就夠了。回歸檢測的閾值策略值得單獨(dú)說不要只看單一指標(biāo)要看分布變化。只對比平均值很容易被少量極端值帶偏。我的做法是對比中位數(shù)和 P9090 分位耗時(shí)兩者都劣化才判定為真回歸。中位數(shù)反映整體性能變化P90 反映極端場景表現(xiàn)——兩者結(jié)合漏報(bào)和誤報(bào)都能減少。提示第一次跑出基線的時(shí)候建議連跑三天每天跑三遍把數(shù)據(jù)的日間波動(dòng)范圍測出來。只有基線自身的波動(dòng)范圍明確了后續(xù)設(shè)置的劣化閾值才有意義。5.3 和 DevEco Profiler 聯(lián)動(dòng)的進(jìn)階用法benchmark_harness 只能告訴你慢了沒法直接告訴你為什么慢。要定位根因還得結(jié)合 Profiler 工具做采樣分析。我在性能回歸排查時(shí)的標(biāo)準(zhǔn)動(dòng)作是先跑 benchmark_harness 確認(rèn)劣化存在接著立刻用 Profiler 抓取測試過程中的 CPU 采樣分析熱點(diǎn)函數(shù)。兩次分析對齊同一個(gè)時(shí)間窗口就能把函數(shù)耗時(shí)變長和某個(gè)系統(tǒng)調(diào)用變慢關(guān)聯(lián)起來。這套聯(lián)動(dòng)里有個(gè)細(xì)節(jié)Profiler 采樣會(huì)引入額外開銷所以不要和正式計(jì)時(shí)的那一輪測試同時(shí)跑。正確順序是先跑一輪干凈的數(shù)據(jù)確認(rèn)結(jié)果再跑一輪帶采樣的數(shù)據(jù)看熱點(diǎn)。兩輪測試的結(jié)論疊加在一起才是完整的性能畫像。我在一次排查中就是這樣定位到問題的benchmark 顯示某個(gè)哈希算法在鴻蒙上比標(biāo)準(zhǔn)平臺(tái)慢了 40%但 Profiler 采樣顯示熱點(diǎn)根本不在哈希邏輯本身而在內(nèi)存分配器的鎖競爭上。后來換成預(yù)分配池耗時(shí)直接降了 25%。如果沒有 Profiler 聯(lián)動(dòng)光靠 benchmark 數(shù)據(jù)我可能會(huì)去優(yōu)化哈希函數(shù)本身——那就白費(fèi)力氣了。6. 適配收尾的個(gè)人體會(huì)與三條務(wù)實(shí)建議最后聊一點(diǎn)適配工作完成之后的體會(huì)。這次 benchmark_harness 鴻蒙化單看代碼改動(dòng)量其實(shí)不算大——新增一個(gè) TimerSource、一個(gè) ReportSink再把 BenchmarkBase 內(nèi)部計(jì)時(shí)邏輯替換掉滿打滿算不到兩百行代碼。但真正花時(shí)間的不是寫代碼而是搞清楚三個(gè)問題的過程Stopwatch 在鴻蒙上為什么不靠譜、調(diào)度噪聲怎么隔離、數(shù)據(jù)怎么才能算可信。工具庫適配的工作量從來不在于改了多少代碼而在于你驗(yàn)證了多少假設(shè)。再分享三條務(wù)實(shí)建議。第一條適配任何三方庫之前先確認(rèn)它是不是真的需要改。我見過不少團(tuán)隊(duì)把第三方庫拉下來就開改最后只是環(huán)境配置問題。建議先給原庫寫一個(gè)環(huán)境自檢腳本把底層依賴逐項(xiàng)驗(yàn)證一遍確認(rèn)確實(shí)有不兼容再動(dòng)手。第二條本地源碼依賴是適配期的正確姿勢但不是長期姿勢。適配穩(wěn)定之后建議把改動(dòng)以補(bǔ)丁形式整理清楚推動(dòng)官方主倉合并或者在內(nèi)部維護(hù)一個(gè)干凈的 fork 倉庫。長期維護(hù)一個(gè)脫離主倉的本地目錄會(huì)越來越難合并上游更新。第三條數(shù)據(jù)可信比功能跑通更重要。一個(gè) benchmark 工具如果數(shù)據(jù)不可信那它不但沒有價(jià)值反而會(huì)誤導(dǎo)決策比沒有工具更糟。每次改完適配代碼一定要做一輪對照實(shí)驗(yàn)來驗(yàn)證數(shù)據(jù)穩(wěn)定性——就像我在 4.1 節(jié)里做的那樣連續(xù)跑多輪對比標(biāo)準(zhǔn)差。標(biāo)準(zhǔn)差壓不下來其他都是白搭。如果你近期要在鴻蒙設(shè)備上做算法效率評估我建議你直接把 benchmark_harness 拉到本地按我上面這套方法改造一遍。前期多花一天做數(shù)據(jù)校準(zhǔn)后面每次壓測都能省下大量重復(fù)排查的時(shí)間這筆賬怎么算都劃算。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
超碰97丝袜| 人人玩人人添人人澡免费| 免费A V在线| 91综合网站| 99在线观看无大码| 中文字幕一区av| 嫩草美女久久| 亚洲性综合11| 91精品少妇搡搡搡| 最新一二三区视频| JULIA一区二区三区在线播放| 日本不卡在线二区三区| 九九九综合精品| 亚洲一区二区三区四区视频| 亚洲精品97| 中文字幕日韩人妻视频一区二区三区交换夫妻| 五月天成人综合| 被男人吃奶很爽的毛片| 一二三卡欧美日韩人妻免费精品| 亚洲AV资源| 国产亚洲日本精品在线| 亚洲1区2区三区高清中文字幕| 亚洲天堂资源在线| 91欧美经典| 日日噜噜夜夜久久亚洲一区二区 | 久久99干一本高清| 自拍视频大全亚洲专媒视频/一区二区三区| 国产日产精品久久快鸭的功能介绍| 欧美 综合 亚洲| 色色无码| 97碰在线视频| 亚洲综合春色| 欧美性爱五月天| 成年女人黄网站| 婷婷综合激情| 图片区小说区| 五月丁香色情| 99热色精品| 99熟女| 欧美性爱免费短视频| 中国少妇啪啪视频| 久久精品久久久久久久| 97欧美资源| 亚州欧美在线| 亚洲第一男人天堂| 丝袜加勒比| 久久久久久久久国产| 好湿好紧好爽 视频| 中文字幕在线观看二区三区| 爽 好舒服 无码刺激久久| 国产亚洲性生活视频播放| 国产一级内射高清视频| 97无码视频在线播放| 国产精品久久久久婷婷二区次| 亚洲另类色综合网站| 亚洲天堂电影网99999| 人妻喷水| 欧美亚洲手机在线| 五月天伊人网| 亚洲国产一级黄色视频| 色就色综合| 最新日日夜夜天天干干| 免费?级毛片无码?∨蜜芽试看| 美女露胸露尿口| 久久国产99精品72福利| 久视频在线观看| 丝袜六区| 日韩色女精品| 色区97| www.91视频网| 色欲av国内精品久久久久久| 亚欧性爱无码| 久久久一区二区三区四曲免费听| 97超碰逼| 91热色| 日韩AV噜噜噜一区二区三区四区 | 国产91亚洲精品一区二区三区| 九九九精品美女| 超碰97护士| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 中文字幕成人理论在线| 大香蕉久久| 久都青青视频 | 久操视频在线| 狠狠操狠狠操操| 午夜AV人气不卡| 欧美劲爆视频一区二区| 东京热男人的天堂网| 欧美大码在线视频| 青青伊人这里只有精品| 五月天综合网| 中文字幕AV片| 天天拍夜夜| 日本成人A片网站| 99热这里| 丰满人妻一区二区三区蜜桃视频| 凹凸视频在线观看伊人| 精品 码产区一区二-1080P高清在线www-B029AV| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 亚洲色阁| 中文字幕一区电影在线观看| 婷婷五月在线视频| 啊啊啊啊啊啊啊在线| 97干色| 午夜男人av| 亚洲第一页色| 欧中美三级一区二区三区| 91熟女丨91老女人| 另类小色呦| 国产丰满少妇久久久精品影院| 91老妇女| 国产激情视频一区区三区| 久久av无码| 色色色热| 夜夜狠狠躁日日躁色视频| av橘色网站| 91伊人久| 国产黄a三级三级三级av在线看| 天天干人妻| 欧美高清无码免费视频高清版| 一区三区啪啪| 热热色色综合| 久久亚洲欧美中文字幕国语 | 精品一二三区四视频| 免费男人的天堂| 久久久久久亚洲Av无码| 欧美日韩夜夜| 亚洲一区二区三区婷婷| 五月天激情综合网| 一区二区三区麻豆| 伊人婷婷五月天| 青青草十区九区爱夜| 亚洲加勒比| 狠狠爱综合网| 啊啊啊爽爽| 激情综合亚洲| 亚洲精品自拍| 韩日男人的天堂| 亚洲熟伦熟妇AV无码春色| 超碰超碰95| 97碰碰色| 人妻在线臀日韩| 青青草这里只有精品| 亚洲色图亚洲无码强奸乱伦| 偷拍色图| 欧亚乱色熟女一区二区| 免费97视频| 久久久激情| 国产精品白丝在线播放| PMv在线观看| 熟女六十路| 粉嫩国产精品久久久| 久久久久久中文| 国产最新小视频在线播放下载| 入口操逼网站| 亚洲天堂,男人| 色婷婷一区二区三区久久午夜| 亚洲综合首页| 性爱久久| 91久久久老司机| 亚洲色交| 国内自拍 日韩激情 99| 色综合加勒比四四季| 亚洲色欧| 一区二区三区视频在线观看免费| 91av天美性媒精品视频| 欧美激情一| 国产剧情AV不卡在线观看| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 欧美精品成人一区二区在线观看| 欧美性高潮| 国产人妖视频一区在线观看| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 日韩久射综合| 好吊色综合| 久久女人| 超碰人人超在线观看| 98色网| 伊人影院在线理论播放| 91n处女在线观看| 亚洲一区二区在线观看91| 久久成人国产精品| 91小视频| 97国产天堂岛| 1769一区| 亚洲男人的天堂亚洲| 九九九九欧美| 日韩无码视频黄色| 蜜桃成人1区2区3区| 亚州欧美综合| 中文字幕精品一区欧美| 欧美黑人XXXⅩ高潮交| 天天拍天| 婷婷丁香九月| 色综合91| 久久老熟女| 欧美不卡二区| 日韩人妻无码精品系列| 中文字幕免费在线观看| 加勒比在线视频一区二区三区| 小草精彩毛片| 日韩小电影| 婷婷久久网| 九九人妻| 91精品国产高清久久久久久,亚洲成人 | Julia在线播放亚洲久久| 色香在线| 欧美另类精品xxxx| 狠狠图片青青草| 欧州91高潮| 先锋精品av色鲁| 一区超碰一区| 懂色AV蜜臀无码精品APP | 偷窥自拍A片| 亚洲大色堂| 亚洲无码精品AV久久久| 亚洲国产综合久久天堂| 欧美色999| 蜜臀久久久久久999| 91美女视频直播| 亚洲综合一区二区| 国产精品不卡少妇白| 免费看久久久性性| 亚洲三级。日韩三级| 五月婷婷色色| 欧美日韩大香蕉| 欧美第38页| 屁股久久久久久| 欧苏综合色综合| 神马久久午夜| 亚洲欧美另类少妇精品| 嫩草影院在线观看精品| 插入逼91| 精品人妻一区春色| 白嫩国模丰满一二三区| 欧美激情1区| 97操操| 午夜精品人妻二区三区| 免费看久久久性性| 亚洲欧美清纯| 国产夜夜艹| 亚洲啪AⅤ永久无码| 人人天天欧洲| 亚洲精品人妻在线| 天堂性色| 亚洲免费97免费| 国产精品视频一区二区三区八戒| 亚洲中文制服诱惑| 黄在线| 欧美综合在线91| 日本不卡高清视频| 亚州日韩97| 久久久久久久久久8888| 亚洲日韩精品久久久久一区壹牛| 97久久天天综合色天天综合色电影| 大地资源在线观看中文第二页| 欧美黑人猛交春色影视大全| 91成人久久| 久久二| 熟女欧美日韩综合婷婷| 五月天偷拍| 久草尤物| 天天激色| 99爱在线视频| 色色网91| 清纯唯美亚洲综合| 天天情欲宗合网| 97国产高清视频在线观看| 欧美少妇色图| 美女网站黄页| 久久熟妇五十路一区| 大地资源在线观看中文第二页| 91综合中文字幕| 精品国产乱码久久久兰草影视| 日日操天天操| 色天使亚洲综合在线观看| 600国产精品视频| 啊啊啊啊啊啊啊啊啊啊在线观看| 国产玖玖| 再深点灬舒服灬太大了好硬好爽| 亚洲精品一二牛牛| 亚洲中文字幕av| 亚州 综合 色图| 五月香婷婷| 天天操人人操狠狠插| 久久婷婷苹果| 久久综合久色欧美综合狠狠| 97在线免费看| 激情五月婷婷| 丁香五月激情综合国产| 国产操逼逼网| 国产高清自拍视频| 精品午夜福利| 中文字幕在线免费观看| 日日超碰亚洲| 久9精品| 91色综合色| 日韩少妇丰满亚洲| 97久久视频| 中国国产精品一区视频| TS人妖另类精品视频系列| 蜜臀va69| 动漫av中文| 亚洲综合性感在线| 婷婷色香| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 探花一区在线| 国产毛片在线| 亚洲av综合色区无码一| 手机在线人成免费视频| 99国产精品视频尤物| 伊人网青青| 亚洲在饯| 加勒比综合| 久久大香蕉97| 水多多映视AV| 香蕉国产精品麻豆亚洲欧美日韩| 思思热在线视频在线| 欧美一二三| 91色色网站| 亚洲久久久久| 69国产对白刺激| 久久精品 六十路 熟女 欧美| 国产在线综合福利网站| 国产日韩欧美操逼视频| 欧美强奸一区二区诱惑| 久热超碰| 青青草操逼逼视频| 蜜臀精品1区2区| 欧美大香蕉97| 综合大香蕉美。| 91日韩网站| 玖玖久久久| 亚洲天堂资源在线| 人人操,人人插| 精品无码久久久久久国产浪潮| 熟妇综合一区二区三区| 亚洲精品三区在线观看| 极品尤物在线观看| 欧美久久九九| 欧美猛交黑寡妇中文字幕| 亚洲色图综合网| 亚洲天堂日本| 成人怡红院| 亚洲啪AⅤ永久无码| 天天做日日做| 嗯嗯嗯好爽| oumeizonghese,www| 亚洲在线综合| 国产真乱mangent| 中文一区在线视频| 夜夜高潮夜夜爽高清视频一 | 亚洲 国产 精品一区| 激情久久久| 日本综合久久| 久久视频,这里只有精品| 美女好片色日本| 狠狠色伊人亚洲综合网站色| 亚洲一区中文字幕一区| 人妻精品一区二区全免费| 五十路人妻在线| 男人的天堂一区| 国产欧美精选激情视频| 无码又爽又硬又激情免费视频| 自拍丝袜美腿人妻| 91精品成人| 夜夜欢天天干| 伊人五月天激情| 精品熟女一区=区三区| 久久久久9| 欧美色就是色| 狠狠色婷婷777| 日韩电影天堂视频二区三区| 欧美综合网在线| 国产黄片在线免费观看| 六月丁丁香| 91影视亚洲| 日韩三级在线观看网站| 日韩在线视频1234| 久久久啊啊啊| 久久婷五月天| 伊人在线大香蕉视频久久| 久久亚洲日韩国产欧| 自拍偷拍国产欧美日韩韩| 亚洲无码色| 91 国产丝袜在线播放-百度| 91精品女厕偷拍视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 极品丝袜无码| 粉嫩av一区二区三区天美传媒| 国产精品亚洲无码| 欧美色图私拍91| 人妻少妇久久久| 大香蕉一人在线| 日韩91网站| 大香蕉520| 久久久久久久久9| 97欧美性爱| 无码操逼天堂| 看一级特黄a大一片| baiduhicn.com。| 自拍偷拍草一草| 亚洲色天堂日韩中| 天天干人人看综合| 五月天久久久| 囯产精品强| 国产 日韩 欧美高清| 岛国小电影| 欧美亚洲情色| 亚洲最大黄网| 伊人网免费视频| 在线天堂999| dy888午夜老子影视达达兔| 91neishe| 国产女大学生AV| 亚洲图片欧美91N| 日本不卡在线二区三区| 中文字幕艹艹| 欧美色就是色| 人人摸人人干| 久久久久久亚洲Av无码精| 91九久| 丰满人妻被猛烈进入中| 97这里只精品| 丁香五月激情综合国产| www.91视频网| 日韩国产品视频中文字| 中文AV制服乱伦| 在线观看AV不卡| 综合伊人激情| 乱伦熟女区| 久久久999国产精品| 亚洲欧美精品一区天堂久久 | 亚州欧美综合| 国产 码在线成人网站| 蜜臀中文字幕| 欧美日韩婷婷中文| 国产免费一区在线观看| 69麻豆天美| 加勒比综合九九99视频在线播放| 天天视频综合在线观看视频| 玖玖爱伊人玖玖爱| 人人妻人人操人人乐| 亚洲国产av中文字幕久久 | 大色综合| 热热色色综合| 校园春色 男人天堂 | 91夜色chaopeng| 久操com| 青青操日韩| 国产精品国产自产拍高清AV| 97人妻免费中文字幕| 97国产|免费| 国产一区二区三区不卡手机在线| 国产日韩在线播放av| 中文字幕av片| 四虎884a| 国产欧美美女免费观看视频| 日本操大逼| 97爱亚洲| 欧美日本不卡| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 草莓精品视频在线免费观看| 97超碰精品图片| 亚洲人妻熟妇三十三区| 国产女人操逼视频| 91精片| 亚洲AV在线资源| 欧美综合站| 操逼国产免费| 中文字幕第9页萱萱影音先锋| 九九拍拍精品视频在线播放 | 蜜臀久久99精品久久久久久无删减 | 日韩无码服务区| 久久熟妇五十路一区| 99久热| 95自拍视频在线观看| 欧美日韩1234| 日本不卡中文| 99最新日韩偷拍视频| 校园春色欧美色图| 综合网欧美在线| 精品一区二区成人动漫| 777AV电影| 国产亚洲色停停久久99精品91| 欧美同性恋 的搜索结果 - 91n| 亚洲少妇在线影音| 成人无码专区精品视频| 成片免费观看视频大全| 久操免费观看| 在线天堂资源亚洲| 久草毛片| 日日AAvv| 日日日色色色色色| 色偷综合| 美美91成人国产精品欧美精品久久久久久久 | 一区二区日韩欧美久久| 殴美大黄片| 51国产午夜精品视频| 加勒比无码毛片| 97超碰天天爱天天爱| 一区,二区,三区网站| 亚洲综合中文字幕有码| 3p国产色噜噜一区| 免费啪啪啪网站18岁| 黑人精品成人一区二区三区| 亚洲精品中文字幕一区在线视频 | 免费超碰97久久| 国产熟妇一区二区| 夜夜 中文视频rt| 欧美成人色| 日本欧美韩国日产片片在线看免| 91狠| 精品久久久中文字幕不| 久九干| 精品v1区| 伊人国产视频| 日本中文字幕一区| 久久久久久中文| 九九五月天| 久久春色| 久久黄片国产一区二区| 18禁免费视频| 破苞ⅩXXX性无码动漫无码| 激情干在线| 亚洲AV成人无码一区二区三区在线观看| 午夜精品久久久久久久99蜜桃一| 综合网色| 一本久道久久综合狠狠爱| 无码9区| 搡老女人老妇女老妇老熟女怎么读| 欧美日韩99精品麻豆传媒| 黄色大片一区二区密桃丝袜| 欧美午夜色妇色鬼| 欧美男人亚洲天堂| 色淫网站优优视频| 欧美极品| 熟女色综合久久| av中文在线| 97干色天堂| 青木玲在线不卡| 国际精品久久久| 97色碰| 91成人久久| 极品色www影院| 欧美少妇一区二区三区| 麻豆亚洲Av成人无码一区精品| 精品人妻视频入口| 欧美78| 思思99热| 神马久久久久久久久| 丰满少妇一区二区三区四区观看| 97视频在线观看高清资源| 日本精品九九九| 97视频免费| 色就色综合| 五月丁香婷婷综合| 北条麻妃性愛视频| 亚洲国产97| 日韩丰满熟妇| 中文字幕av久久爽Av| 亚洲激情久久久伊人综合| 精品丝袜无码一区二区三APP| 99久久久无码国产精品性男| 安徽熟妇视频| 亚洲色图欧美激情| 性爱av在线免费观看| 天美一二三在线观看Av| 中国少妇啪啪视频| 国产97视频免费观看| 亚洲AV乱码专区国产噜噜亚洲| 97精品视频在线| 欧美激情性久久久久久| 精品一区96| 国内一级精品| 一区不卡在线观看av| 亚洲午夜免费狠狠干| 东京热一区二区三区四区五区六区| 色偷偷综合91久久噜噜| 91社区拍啪人妻| 91碰碰碰| 后入式五六区| 久草视频在线视频在线视频在线观看| 国产视频一区二区在线观看| 久久精品日韩专区免费观看| 激情五月综合开心五月| 人妻天天夜夜爽一区二区| 欧亚 另类 久| av天堂天堂av日韩| 日日干夜夜干| 亚洲男人的天堂网| av网站在线看| 无码国产精品久久久久| 免费看污网站| 啊啊啊啊啊在线| 色色婷婷五月| 91精品国产91熟女| 色五月婷婷五月天| 少妇久久久免费| 国产自制av蜜乳| 五月丁香网站| 96精品久久久久久久久| 偷窥自拍亚洲色图| 日韩有码回春沙龙第一页| 色色九区| 成人一级性爱| 欧美韩国你懂得在线| 超碰人人操97碰| 日韩中文字幕av在线播放| 一本色道综合久久欧美| 中文有码第五页| 超碰在线人妻中文字幕| 天堂av2019| 日本一级特级毛片视频| 精彩国产视频播放1区2区| 亚洲日韩人妻中文字幕一区| 国产久久一区二区三区野外在线| 色综合V| 好看的久久不射无码影视影院| 亚州一区二区| 青青草自拍视频在线播放| 99精品国产户外露出| 91在线色综合| 日本高清免费一本视频在线观看| 啊嗯好大视频在线观看| 伊人久久大香线蕉无码| 色老大| 人妻啊啊人妻啊| 午夜福利国产欧美日韩夜夜| 91暧暧| 黄色免费一级在线毛片| 97网址www| 国产精品盗摄 偷窥盗摄| 97香蕉人人乳| 亚洲精品成人激情在线| 奶水 人妻 哺乳 在线| 91伊人久| 亚洲伊人久久精品影院| 色色激情五月天| 成人性爱免费播放| 曰本特级特黄特色黄色A级网站高清在线免费看| 日韩av在线播放不卡| 久热最新在线杭州| 亚洲情色在线| 婷婷丁香六月天| 黄色人人| 熟女人妻精品一区二区视频| 青青草男人天堂| 26uuu国产| 人人么人人操| 日韩综合97P| 色妺妺在线视频| 欧美日韩国产黄色片| 中国特猛少妇色xxx| 黄网站黄视频网站进入口| 欧美黄片视频在线观看免费| 狠狠久久手机视频精品| 大香蕉草草| 后入内射蜜桃臀| 久久久无码av精| 国产精品美女视频诱惑| 人妻爽爽啪视频| 猛交交| 久久香蕉国产线看观看猫咪av| 97久久超碰| 成人情色综合网| 嗯啊啊啊轻点视频 | 国产超碰欧美| 久久av色| 中文字幕一区av| 欧美另类精品xxxx| 人人操人人色网| 国产精品一区二区麻豆| 欧美成人精品一区二区三区| 婷婷精品| 911粉嫩人妻| 2020中文在线一区二区三区| 男人的天堂午夜av| 凹凸视频在线一区二区| 人妻熟妇一区二区三区| 国产AB视频| 日韩影片中文字幕一区二区三区| 免费视频无码| 玖玖婷婷五月天| 911粉嫩人妻| 欧美日本中字另类在线| 热久久国产| 妇女性内射冈站HDWWWCOM| 欧美色偷偷| 97在线免费视频观看| 天天操天天日天天干| 欧美黑人与女人91~| 视频在线观看一二三区| 性色一线| 六九九九| 国产女人高潮视频| 国产999精品久久久久久| 亚洲AV成人无码一区二区三区在线观看 | 色综合av综合久久| 久久噜噜噜精品国产亚洲综合| 和协影院中文字幕三区| 800zy一区二区| 91亚洲黑人| baisiav| 91丝袜美腿网站| 97干com| 久操精品网| 一区二区三区视频在线观看免费| 免费啪啪一级视频| 大地资源在线观看中文第二页| 国模少妇一区二区三区 | 乱老熟女一区二区三区| 久久 亚洲 日韩 人妻| 国产精品电影推荐| 成人网欧美风情| 国产少妇高潮| 国产中午字一暮区| 亚洲人人夜夜澡人人爽| 夜夜爽爽夜夜精品视频| 情色五月天就去干| 天天干18禁| 欧美色欧美| 天天谢天天干| 日本性爱少妇| 日韩精品国产精品五码一区二区| 久久久久久久久久8888| 亚洲精品国产精品乱码不99| 午夜福利成人免费视频| 免费看毛片操穴| 精品人妻1237| 欧美最大综合网| 91日日夜夜| 熟女91网站| 蜜乳AV免费观看| 国产亚洲精品久久久久小| 亚洲国产精品成人久久蜜臀| 啪啪视频亚洲第一| 国内三级自拍小视频在线观看 | 大鸡巴久久久| 日日噜噜夜夜久久亚洲一区二区| 亚洲日韩狠狠撸视频| 超碰免费97| 口爆吞精在线观看| 精品久久人妻成人网| 国产视频三区四区| 国产精品乱码久久久久久久久久久久| 亚洲视频二区| 亚洲国产精品成人久久蜜臀| 国产一级不卡在线观看| 国产情侣自拍在线播放| 欧美色五月| 香港日本韩国人妇99www.wccm20| 黄色交缠性感爆操91国产精品免费一区二区三区| 亚洲精品久久久久久久蜜桃臀| 成 人片 黄色大片| 99在线免费观看| 男人久久精品| 久久精品一区二区| 亚洲一区中文字幕一区| 人人摸人人干| 国产sv美女内射| 日本天天操| 国产婷婷一区| 亚洲欧美另类图片| 入口操逼网站| 91欧美丨精品丨入口| 91亚洲色图| 26uuu性物| 国产suv精品一区二区四| 欧美人妻熟女在线| 香蕉热人人精品| 亚洲AV免费在线观看| 精品女同一区二区三区| 97人妻免费中文字幕| 玖玖蜜臀资源网| 免费观看一区| 久7色| 大逼色网站| 91精品国产日韩欧美综合| 色婷婷aV一区二区三区麻豆综合| 97人人夜| 免费伦费视频在线观看| 95人妻爽爽人人做人人澡| 国产丝袜高跟美女av免费观看| 亚洲色图尤物视频| 色五91| 91精品人妻一区二区三区蜜桃| 午夜影美女日鸡鸡天天视频国产| 欧美丝袜激情| 国产成人在线观看网址| 亚洲成人在线播放| 日夜精品| 99热99色| 97伦综合| 国产精品免费视频不卡| 欧美 亚洲 综合 制服 另类| a片偷拍视频| 亚洲中文字幕妇伦久久| 亚洲色天| 国模限制级电影| 亚洲欧美日韩免费观看| 中文字幕 一区二区 亚洲无码| 快灬快灬 一下爽蜜桃在线观看| 五月婷在线| 99re这里| 亚洲精品亚洲人成在线麻豆| 亚洲熟久久| 国内毛片婷婷六月色| 美女诱惑在线一区| 午夜视频好爽啊| 99久热精品99re6热| 日韩性爱毛片操骚逼| 久久久99999久网站| 一本一道vs波多野结衣| www. 男人天堂成人在线| 秋霞影音一区二区三区| 久久久啊啊啊| 偷拍欧美综合| 精品九九| 青青草色插素人| 十八禁的黄污污免费网站| 91狠狠狠| 啊啊啊好爽快点啊啊啊嗯嗯| 日日超碰亚洲| 亚州春色| 人看人人摸人人操| 久久久久久久| 成人热久久精品| 日本成人电影资源网| 国产AV人人夜夜澡人人爽麻豆| 国产一区二区在线电影| 天天干1区2区在线| 日韩精品一区的| 中欧人妻丝袜中文字幕| 日日干夜夜操视频h| 欧美疯狂做爰xxxx| 超碰97欧美| 欧美在线视频播放| 视频二区美腿丝袜制服人妻欧美| 蜜乳AV免费观看| 330dv亚洲成年视频网| 偷窥自拍A片| 青娱乐国产剧情av一区| 台湾佬中文娱乐网久久久久久久久久com| 9l视频自拍9l九色成人| 精品久久久久久中文字幕视频免费| 亚洲drav色图| 九九九九久久久| 亚洲网站一区二区在线| 夜色97| 午夜呻吟欧美| 国产福利影视| 国内亚洲高清无码| 色哟哟av| 欧美激情超碰777| 欧美日韩岛国大片在线观看| 97国产精品| 亚欧中文字幕在线视频| 人妻AV在线| 18禁超污无遮挡无码免费网| 久久久久久久强迫| com 首页 18岁 禁区 女优 免费 精选 同城 | 99热这里都是精品| 久草男人天堂| 蜜色网色哟哟| 亚洲图片婷婷五月天| 人妻精品一区二区| 日韩人妻丝袜美腿中文| 91成人国产综合久久精品蜜月| 桃色五月天| 网页导航五月天免费一二三区 | 国产99热| 国产精品日本无码A片| 精品9999| 美女主播色欲91抠b在线播放| 欧美日韩另类在线播放| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 国产久久一区二区午夜| 人妻日日干| 日本欧美一区二区三区免费| 日韩欧美亚洲自拍偷拍| 亚洲熟女诱惑| 男人的天堂1024| 青草伊人久久| 中文字幕第95页| 夜夜福利| 久久99手机免费视频| 久久综合18p| 色婷婷丁香五月| 色爱三区| 午夜超爽| 国产精品免费1区2区视频| 久久久久少妇| 97久久国产| 欧美性爱超碰97| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 午夜视频好爽啊| 不卡中文字幕aⅴ在线| 五月丁香激情四射| 综合网亚洲| 精品免费成人久久| 熟妇一区,二区,三区。| 国产欧洲精品亚洲午夜拍精品| 97日视频| 综合一区二区影视| 欧美亚洲宗合色性图| 99蜜桃臀亚洲成人在线观看| 偷拍 精品另类 凸凹了四区| 97色碰| 久久一二三四五六七八九区区区| 九九热AV| 91天堂色男人的天堂| 久久香蕉综合一本到3atv| 手机在线人成免费视频| 日韩精品一区的| 久久‘黄片视频| 国产高清精品福利| 五月丁香社区婷婷日韩欧美精品影院| 久久久免费一级黄片| 人妻乱仑一区二区三区| 国产精品老师| 综合网欧美在线| 日韩乱码Av| 久久精品天美| 青青草乱入乱欲视频在线观看| 密臀在线免费观看| 欧美 青青草| 最新精品久久蜜桃 | 亚洲一曲日韩精品| 秋霞无码av鲁丝片一区| 色综合久久888| 啊啊啊用力在线观看| 综合 青草 伊久久 影院 综合| 天天碰操中国年青熟妇| 污到发麻的视频 国产| 色情亚洲日本成人| 久湿久久| 精品少妇999| 婷婷在线视频在线观看| 无码国产精品久久久久| www.激情| 97九色人妻| 综合天天网| 欧美专区17页| 91美女视频在线观看| 久久欲| 欧美日韩性爱无码| 久久婷婷精品| 91 国产丝袜在线放观看| 精品人妻一区二区三区夜夜| 久久女女| 熟女乱3伦999| 色综合尤物| 插入综合网| 粉嫩小泬久久久一区二区| 骚货操死你| 伊人网免费视频| 干婷婷综合网| 操逼内射干逼白丝91| 91中出在线| 国内精品久久人妻性色av| 人人看人人摸人人色| 欧美熟爽综合| 91操熟女视频| 超碰人人操97碰| 五月天激情综合网| 亚洲Av噜噜一区二区三区妖精| 欧美色乱| 404操逼福利视频| 夜夜肏2021| 大白逼三四级| 操逼无码操逼| 天天弄天天操| 91欧美性| 少妇精品| 久久久久久亚洲中文| 91啪9色| 久久人妻一区二区三区高清| 日韩免费中文字幕视频| 色婷婷丁香五月| 国产热av| 免费av高清无码| 熟女六十路| 91熟女综合| 午夜超碰| 在免费jIzzjIzz在线视频| 欧美日日夜夜| 97天天| 日本护士高潮| 亚洲AV在线资源| 强奸国产精品视频| 综合久久99| 久久久久久免费电影| 欧美精品一区二区少妇免费A片| 亚洲精品一区二区三区新线路| 中文字幕第二页| 色视频蜜乳| 久久综合18p| 亚洲色图欧美一区二区不卡| 久久婷婷影院| 美日韩一二三区| 八戒午夜福利理论片| 国产免费大片| 我想要 啊 啊 啊| 五月丁香影院| 亚洲 在线| 色哟哟的毛片| 国产精品白丝| 久久久久久久极品香蕉视频| 少妇特黄一区二区三区| 日韩 欧美 视频 在线 一区| 一区二区三区色综合| 日韩av不卡在线看| 精品夜夜澡人妻无码| 91色香| 大香蕉av在线| 欧亚 另类 久| 亚洲成人久久美女| 91色夜| 日本福利二区视频| 国产精品丝袜在线| 99视频内射三四| 亚洲另类春色| 九九久久久久久爱| 日本高清视频xxxx| 久久综合女优| 亚洲国产尤物yw在线观看| 91久久国产综合精品| 国产精品自在线发布| 大香蕉日亚洲日本亚大 | 大屁股熟女一区二区三区| 国产无马视频| 九九九九一级| 日本岛国黄色网址| 丰满人妻-区二区三区免费看 | 91视频观看网站| 国产精品内射婷婷一级二| 啊啊啊好湿国产一二| 91美女小视频| 91jk色拍| 乱伦图av| 亚洲黄色电影| 嗯嗯嗯嗯啊啊啊好紧好大| 天天爽夜夜爽夜夜爽精| 60秒免费小视频| 色哟哟511老熟女| 91欧美情色| 成人日韩中文字幕| 精品人体无圣光凹凸| 十八禁电影伊人网| 婷婷在线播放| 国产精品干干干| 国产人妻精品一区二区三区秋霞 | 国产精品3| 亚洲女毛多水多21P| 神马久久久久久久| 色欲人妻一区二区在线| 性色av网站| 亚洲色图欧美| 97爱啪| 99色综合| 国产高清无码一区三区二区| 9.1小视频| 超碰 另类 欧美 | 操东北女人| 玖玖爱综合网| 色色色色色色色色色色色色色色综合| 日韩卡一卡二卡三在线| 狠狠色五月亚洲91| 一区二区三区 丝袜 高跟 美腿| 欧美91视频| 欧美97爱| 狠狠躁日日躁夜夜躁A| 大香蕉啪啪网| 国产精品ⅴ无码大片在线看.| 熟人人妻少妇精品久久| 手机看片1025| 久久精品国产亚洲妲己影视| 亚洲在钱| 国产肏屁眼视频| 乱伦av麻豆| 欧美不卡在线一区二区| 中文字幕1区2区| 香港日本韩国人妇99www.wccm20| 成年女人18级毛片毛片免费观看| 涩综合导航| 日日躁夜夜躁狠狠躁超爽| 91伊人久久在线| 蜜臀亚洲中文| 综合色图亚洲欧美| 秋霞欧美性爰视频| 精品无码久久久久久久久果冻糖心| 欧洲精品欧洲精品| 天堂精品小草| 亚洲无套久久嗯嗯| 精品二区三四区五电影| 欧美日日夜夜| 91国产精品熟女| 午夜男女爽爽爽在线视频| 樱花蜜乳av| 国产精品午夜AV完会免费| 97免费视频在线| 久久久性少妇| 九区国产| 中国黑人三级片网站上区| 性色一线| 狠狠操综合| 夜夜影视四色| 青草精品视频-日本久久久久网站| 激情另类激情| 懂色av中文字幕| 狠狠爱AV| 天堂精品| 伊人久久亚洲中文字幕不卡| 超碰精品| www四虎| 欧美久久草熟女| 亚洲 日韩 欧美 国产综合体| 一级aaaaa欧美中文字幕录像片| 一道α片欧美| 中文字幕乱码人妻二区三区| 欧美白嫩女HD| 欧美96精品在线| 日日摸日日碰夜夜爽视频| 人人操超碰在线| 精品人妻久久久| 欧美一区二区三区成人性生活| 人妻熟妇久草在线| 久九干| 男人的天堂2018东京热啪啪啪| 色色婷婷五月天| 欧美日韩一区二区三区四区蜜桃| 精品国产无码中文| 日韩av免费一级电影| 欧美精品宗合| 后入精品| 一本色道人妻久久| 91人人| 久久午夜色播影院免费高清| 玖草在线视频| 日韩一级二级三级免费看完整版| 最新亚洲黄色免费电影| 熟妇色99| 欧美色狠| 日韩三级在线观看网站| 综合影院永久入口国产| 亚洲综合另类小说色区亚洲成av人片在www | 欧洲精品久久| 色哟哟av网址| 亚洲人妻精品一区二区| 精品九九九九九| 在线岛| 日韩人妻中文视频| 国产精选三级在线观看| 99国产人成精品| 91大神电影天堂| 好看的91视频| 亚洲性猛| 狠狠干91| 久久成人国产精品|