無程式碼的啟動速度測試 with stagesepx
前段時間翻了翻,發現 stagesepx 已經誕生一年了。在一年裡,從一個我的玩票專案到現在逐漸被接受,謝謝各位願意嘗試新東西:)
最近幾個月陸陸續續在收集反饋、把可靠性的坑填上,隨著功能穩定下來,真正的使用者也變得越來越多,很開心看到一些應用性質的帖子。這裡特別感謝下 @150109514 同學寫的 基於stagesepx的App頁面跳轉效能分析,相當詳細,把原理也講得很透徹了,比我從自己的角度出發的例子要更加貼近真實使用者的感受。
第一次瞭解這玩意兒的朋友可以直接跳到最後面的相關連結,先了解下背景
要解決的問題
除了可靠性,這個專案被吐槽最多的前三是:
- 使用流程太繁瑣
- 真正落地鋪開時重複的程式碼很多
- 圖片與模型管理起來太麻煩
這三個點在我寫 work_with_stagesepx 就發現了,作為開發者我自己寫起來也感覺不是很方便(...),更不用說使用者了。雖然用程式碼來支配非常靈活,但無形中是提升了一些落地門檻的,很多人在看到需要寫程式碼之後就止步了。
怎麼解決與為什麼
後來我還是決定用 命令列+配置檔案 的設計,主要做兩個方面的補全:
- 更低的落地門檻
- 更好的其他語言相容性
門檻
這個東西很客觀,配置化在犧牲了靈活性的前提下節約了編寫程式碼的成本。對於程式碼與配置我保持中立態度,看各位自己取捨,並沒有絕對好壞。我還是非常推薦 python開發者 直接調庫。
從這裡開始假定各位都看過了最後面的相關連結
手動
以原來的手動模式為例,你只需要一個簡單的 json 檔案:
{
"output": ".",
"video": {
"path": "../videos/short.mp4",
"fps": 30
}
}
之後執行:
stagesepx run cut_only.json
即可得到一樣的效果,而且具有很高的可讀性。
自動
而對於全自動的模式也是一樣的,首先先訓練一個模型(一樣都在命令列完成):
stagesepx train trainset model.h5
執行之後我們可以得到一個 model.h5
檔案。直接配就完事兒了:
{
"output": ".",
"video": {
"path": "../videos/short.mp4",
"fps": 30
},
"classifier": {
"classifier_type": "keras",
"model": "./model.h5",
},
"calc": {
"output": "./output.json",
"operators": [
{
"name": "cost between 1 and 3",
"calc_type": "between",
"args": {
"from_stage": "1",
"to_stage": "3"
}
}
]
}
}
可以看到配置裡我選擇了計算階段1跟3的差值。一樣的命令列執行之後,你就可以得到結果(階段1到3對應的是14-33幀,耗時0.63333):
[
{
"name": "cost between 1 and 3",
"type": "between",
"result": {
"from": 14,
"to": 33,
"cost": 0.6333333333333333
}
}
]
我們在命令列裡完成了整個流程,而你沒有編寫一行程式碼。完整程式碼參考 run_with_config
相容性
這個很好理解,因為很多企業與開發者並不使用python。命令列 + JSON 的組合能夠讓其他語言的開發者也無痛使用:
- 寫配置
- call
- 讀結果
這就不贅述了。
後話
- 新設計,可能會有一些隱藏問題,歡迎嚐鮮:)
- 這次加入的特性的抽象層級很高(客觀來說,只是對例子的一些合理整合),還是比較可讀的,也很歡迎使用過的同學擴充API
- 本次改動主要就集中在
run
函式內:https://github.com/williamfzc/stagesepx/blob/master/stagesepx/api.py
相關連結
- 主庫:https://github.com/williamfzc/stagesepx
- 例子倉庫:https://github.com/williamfzc/work_with_stagesepx
- 還是非常推薦 基於stagesepx的App頁面跳轉效能分析
寫完睡覺
相關文章
- 無聊程式碼,測試bootstrap.boot
- 【MYSQL備庫恢復速度測試 半同步速度測試】MySql
- Shell指令碼 | 效能測試之啟動時間指令碼
- AR自動化測試工具即將推出無程式碼化的新版本!-Alltesting|澤眾雲測試
- JavaScript 評測程式碼執行速度JavaScript
- 介紹兩個測試網頁開啟速度的網站網頁網站
- 測試程式碼
- nacos啟動,MySQL無密碼啟動MySql密碼
- 無需編寫程式碼,API業務流程測試,零程式碼實現API
- 星雲精準測試對安卓底層驅動程式碼的測試案例分析安卓
- 如何測試伺服器的速度伺服器
- 伺服器的速度如何測試伺服器
- MYSQL程式碼顯示測試測試MySql
- 測試你的前端程式碼:視覺化測試前端視覺化
- 理解 Mach O 並提高程式啟動速度Mac
- .net 程式通過 crontab 無法啟動,手動執行指令碼可以啟動指令碼
- 測試程式碼高亮
- 小程式自動化測試--測試3
- What-If 工具:無需寫程式碼,即可測試機器學習模型機器學習模型
- 150萬元現金激勵助力首測!《永劫無間》手遊啟動測試正式開啟
- 2.5.4. 測試Oracle net——2.5.4.1. 啟動監聽程式Oracle
- 測試你的前端程式碼 – part4(整合測試)前端
- 安卓 unit 測試與 instrument 測試的程式碼共享安卓
- Angular單元測試如何只執行指定的測試用例,提高測試速度Angular
- APP效能測試_啟動時間APP
- 程式碼寫作測試
- 代理類測試程式碼
- App啟動速度優化APP優化
- phpunit測試成功phpunit測試實踐程式碼PHP
- 如何編寫優秀的測試程式碼|單元測試
- 測試你的前端程式碼 - part2(單元測試)前端
- 測試你的前端程式碼 – part2(單元測試)前端
- 效能測試工具 jmeter 原始碼剖析:jmeter 分散式壓測啟動過程JMeter原始碼分散式
- 測試金字塔新解之移動無線應用測試
- 如何測試伺服器的訪問速度伺服器
- 啟動vmware虛擬機器報錯:“無法獲得VMCI驅動程式的版本:控制程式碼無效”虛擬機
- 【效能測試】移動測試md知識總結第1篇:移動端測試課程介紹【附程式碼文件】
- 116測試環境修改8088埠後iis無法啟動