bash 腳本比較 100 個程序運行時間,精確到毫秒,腳本

腳本如下:

#!/bin/bash# 設置測試次數
NUM_TESTS=100
# 設置要測試的程序路徑
PROGRAM="./your_program"  # 替換為你的程序路徑
# 設置程序參數(如果沒有參數則留空)
ARGS=""  # 例如: "input.txt output.txt"# 初始化統計變量
total_time=0
min_time=999999.99
max_time=0echo "開始測試 $PROGRAM,共 $NUM_TESTS 次運行..."# 創建結果文件
result_file="timing_results_$(date +%Y%m%d_%H%M%S).csv"
echo "運行次數,時間(秒)" > "$result_file"for ((i=1; i<=$NUM_TESTS; i++))
do# 使用time命令計時,精度到毫秒start_time=$(date +%s.%3N)# 運行程序(后臺運行,捕獲輸出和錯誤)$PROGRAM $ARGS > /dev/null 2>&1end_time=$(date +%s.%3N)# 計算耗時(秒,保留3位小數后四舍五入到2位)elapsed=$(echo "scale=3; $end_time - $start_time" | bc)elapsed=$(printf "%.2f" $elapsed)# 更新統計信息total_time=$(echo "scale=2; $total_time + $elapsed" | bc)# 比較并更新最小時間(使用awk處理浮點數比較)if (( $(echo "$elapsed < $min_time" | bc -l) )); thenmin_time=$elapsedfi# 比較并更新最大時間if (( $(echo "$elapsed > $max_time" | bc -l) )); thenmax_time=$elapsedfi# 輸出當前結果并寫入文件echo "第 $i 次: $elapsed 秒"echo "$i,$elapsed" >> "$result_file"
done# 計算平均值
average_time=$(echo "scale=2; $total_time / $NUM_TESTS" | bc)echo ""
echo "============= 測試結果 ============="
echo "測試程序: $PROGRAM $ARGS"
echo "測試次數: $NUM_TESTS"
echo "總耗時: $total_time 秒"
echo "平均時間: $average_time 秒"
echo "最短時間: $min_time 秒"
echo "最長時間: $max_time 秒"
echo ""
echo "詳細結果已保存到: $result_file"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87651.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87651.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87651.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux學習】Linux安裝并配置Redis

安裝Redis在Linux系統上安裝Redis可以通過包管理器或源碼編譯兩種方式進行。以下是兩種方法的詳細步驟。使用包管理器安裝Redis&#xff08;以Ubuntu為例&#xff09;&#xff1a;sudo apt update sudo apt install redis-server通過源碼編譯安裝Redis&#xff1a;wget https:/…

redis每種數據結構對應的底層數據結構原理

Redis 的每種數據結構(String、List、Hash、Set、Sorted Set)在底層都采用了不同的實現方式,根據數據規模和特性動態選擇最優的編碼(encoding)以節省內存和提高性能。以下是詳細原理分析: 1. String(字符串) 底層實現: int:當存儲整數值且可用 long 表示時,直接使用…

WPF控件大全:核心屬性詳解

WPF常用控件及核心屬性 以下是WPF開發中最常用的控件及其關鍵屬性&#xff08;按功能分類&#xff09;&#xff1a; 基礎布局控件 Grid&#xff08;網格布局&#xff09; RowDefinitions&#xff1a;行定義集合&#xff08;如Height"Auto"&#xff09;ColumnDefinit…

馬斯克腦機接口(Neuralink)技術進展,已經實現癱瘓患者通過BCI控制電腦、玩視頻游戲、學習編程,未來盲人也能恢復視力了

目錄 圖片總結文字版總結1. 核心目標與愿景1.1 增強人類能力1.2 解決腦部疾病1.3 理解意識1.4 應對AI風險 2. 技術進展與產品2.1 Telepathy&#xff08;意念操控&#xff09;功能與目標技術細節參與者案例 2.2 Blindsight&#xff08;視覺恢復&#xff09;**功能與目標**技術細…

Vuex身份認證

雖說上一節我們實現了登錄功能&#xff0c;但是實際上還是可以通過瀏覽器的地址來跳過登錄訪問到后臺&#xff0c;這種可有可無的登錄功能使得系統沒有安全性&#xff0c;而且沒有意義 為了讓登錄這個功能有意義&#xff0c;我們應該&#xff1a; 應當在用戶登錄成功之后給用戶…

springboot中使用線程池

1.什么場景下使用線程池&#xff1f; 在異步的場景下&#xff0c;可以使用線程池 不需要同步等待&#xff0c; 不需要管上一個方法是否執行完畢&#xff0c;你當前的方法就可以立即執行 我們來模擬一下&#xff0c;在一個方法里面執行3個子任務&#xff0c;不需要相互等待 …

Flask+LayUI開發手記(十):構建統一的選項集合服務

作為前端最主要的組件&#xff0c;無論是layui-table表格還是layui-form表單&#xff0c;其中都涉及到選項列的處理。如果是普通編程&#xff0c;一個任務對應一個程序&#xff0c;自然可以就事論事地單對單處理&#xff0c;前后端都配制好選項&#xff0c;手工保證兩者的一致性…

redis的數據初始化或增量更新的方法

做系統開發的時候&#xff0c;經常需要切換環境&#xff0c;做一些數據的初始化的工作&#xff0c;而redis的初始化&#xff0c;假如通過命令來執行&#xff0c;又太復雜&#xff0c;因為redis有很多種數據類型&#xff0c;全部通過敲擊命令來初始化的話&#xff0c;打的命令實…

【PaddleOCR】OCR表格識別數據集介紹,包含PubTabNet、好未來表格識別、WTW中文場景表格等數據,持續更新中......

&#x1f9d1; 博主簡介&#xff1a;曾任某智慧城市類企業算法總監&#xff0c;目前在美國市場的物流公司從事高級算法工程師一職&#xff0c;深耕人工智能領域&#xff0c;精通python數據挖掘、可視化、機器學習等&#xff0c;發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

sparkjar任務運行

mainclass&#xff1a; test.sparkjar.SparkJarTest

Web攻防-文件下載文件讀取文件刪除目錄遍歷路徑穿越

知識點&#xff1a; 1、WEB攻防-文件下載&讀取&刪除-功能點&URL 2、WEB攻防-目錄遍歷&穿越-功能點&URL 黑盒分析&#xff1a; 1、功能點 文件上傳&#xff0c;文件下載&#xff0c;文件刪除&#xff0c;文件管理器等地方 2、URL特征 文件名&#xff1a; d…

使用LIMIT + OFFSET 分頁時,數據重復的風險

在使用 LIMIT OFFSET 分頁時&#xff0c;數據重復的風險不僅與排序字段的唯一性有關&#xff0c;還與數據變動&#xff08;插入、刪除、更新&#xff09;密切相關。以下是詳細分析&#xff1a; 一、數據變動如何導致分頁異常 1. 插入新數據 場景&#xff1a;用戶在瀏覽第 1 頁…

Excel 數據透視表不夠用時,如何處理來自多個數據源的數據?

當數據透視表感到“吃力”時&#xff0c;我們該怎么辦&#xff1a; 數據量巨大&#xff1a;Excel工作表有104萬行的限制&#xff0c;當有幾十萬行數據時&#xff0c;透視表和公式就會變得非常卡頓。數據來源多樣&#xff1a;數據分散在多個Excel文件、CSV文件、數據庫甚至網頁…

cf(1034)Div3(補題A B C D E F)

哈&#xff0c;這個比賽在開了不久之后&#xff0c;不知道為啥卡了差不多20來分鐘&#xff0c;后面卡著卡著就想睡覺了。實在是太困了.... 題目意思&#xff1a; Alice做一次操作&#xff0c;刪除任意數字a,而Bob做一次操作刪除b使得ab對4取余是3。 獲勝條件&#xff0c;有人…

瀏覽器與服務器的交互

瀏覽器地址欄輸入URL&#xff08;網址??&#xff09; ????(1) 服務器進行URL解析??&#xff1a;驗證URL格式&#xff0c;提取協議、域名等 ????(2) 服務器進行DNS查詢??&#xff1a;將域名轉換為IP地址&#xff08;可能涉及緩存或DNS預取&#xff09; ????…

Spring Boot中POST請求參數校驗的實戰指南

在現代的Web開發中&#xff0c;數據校驗是確保應用程序穩定性和安全性的關鍵環節。Spring Boot提供了強大而靈活的校驗機制&#xff0c;能夠幫助開發者輕松地對POST請求參數進行校驗。本文將詳細介紹如何在Spring Boot中實現POST請求參數的校驗&#xff0c;并通過具體的代碼示例…

Spring Boot + MyBatis/MyBatis Plus:XML中循環處理List參數的終極指南

重要提醒&#xff1a;使用Param注解時&#xff0c;務必導入正確的包&#xff01; import org.apache.ibatis.annotations.Param; 很多開發者容易錯誤導入Spring的Param&#xff0c;導致參數綁定失敗&#xff01; 一、為什么需要傳遞List參數&#xff1f; 最常見的場景是動態構…

Design Compiler:自適應重定時(Adaptive Retiming)

相關閱讀 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 簡介 重定時是DC Ultra引入的一種時序優化技術&#xff0c;可以將時序單元&#xff08;觸發器和鎖存器&#xff09;穿越組合邏輯前后移動&#xff0c;以優化設…

解決kali Linux在VMware中的全局縮放問題

在每次啟動kali時&#xff0c;因為屏幕分辨率過高&#xff0c;系統整體特別小&#xff0c;該怎么操作調整合適呢 在搜索中搜索kali HiDPI Mode 選擇yes 然后就會自動調整合適了

Python關鍵字梳理

在 Python 中&#xff0c;關鍵字&#xff08;Keywords&#xff09;是具有特殊含義的保留字&#xff0c;它們用于定義語法和結構。async 是 Python 3.5 引入的關鍵字&#xff0c;用于支持異步編程&#xff08;Asynchronous Programming&#xff09;。下面我將詳細講解 async 及其…