實驗需求:統計程式或者某個函式的執行時間
#include
#include
//計時必備
intmain()
我需要統計下面這個程式跑了多久
#include
#include
#include
#include
"math.h"
#include
"time.h"
#include
#include
#define city_num 38
//城市數,城市編號是0~city_num-1
#define popsize 300
//種群個體數
#define maxvalue 10000000
//路徑最大值上限
#define n 100000
//需要根據實際求得的路徑值修正
unsigned seed=
(unsigned
)time(0
);double hash[city_num+1]
;typedef
struct cityposition
cityposition;
cityposition citypos[38]
=,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,};
double citydistance[city_num]
[city_num]
;//城市距離詞典
typedef
struct
tsp,
*ptsp;
/*計算城市距離詞典citydistance[i][j]*/
void
calculatdist()
}}/*陣列複製*/
void
copy
(int a,
int b)
}/*用來檢查新生成的節點是否在當前群體中,0號節點是預設出發節點和終止節點*/
bool
check
(tsp &city,
int pop,
int num,
int k)
return
false
;//新生成節點沒有存在於已經生成的路徑中
}/****************種群初始化,即為city.colony[i][j]賦值****************/
void
initcolony
(tsp &city)
for(i=
0;i) city.colony[i]
[j]=r;}}
}/*計算適應值,考慮應該在這裡面把最優選出來*/
void
calfitness
(tsp &city)
city.fitness[i]
=n/city.distance[i];if
(city.fitness[i]
>city.fitness[best]
)//選出最大的適應值,即選出所有個體中的最短路徑
best=i;
}copy
(city.bestrooting,city.colony[best]);
//將最優個體拷貝給city.bestrooting
city.bestfitness=city.fitness[best]
; city.bestvalue=city.distance[best]
; city.bestnum=best;
}/****************選擇運算元:輪盤賭法****************/
void
select
(tsp &city)
for(i=
0;i) selectp[0]
=0;for
(i=0
;i)memcpy
(tempcolony[0]
,city.colony[city.bestnum]
,sizeof
(tempcolony[0]
));//void *memcpy(void *dest, const void *src, size_t n)從源src所指的記憶體位址的起始位置開始拷貝n個位元組到目標dest所指的記憶體位址的起始位置中
for(t=
1;t)memcpy
(tempcolony[t]
,city.colony[i-1]
,sizeof
(tempcolony[t]))
;}for(i=
0;i/****************交叉:頭尾不變,中間打亂順序交叉****************/
void
cross
(tsp &city,
double pc)
//交叉概率是pc
for(t=
1;tmemcpy
(city.colony[ca]
,temp1,
sizeof
(temp1));
}}}/****************變異****************/
double
getfittness
(int a[city_num+1]
)return n/distance;
}/*對換變異*/
void
mutation
(tsp &city,
double pm)
//變異概率是pm
for(m=a;m<
(a+b)/2
;m++)if
(getfittness
(temp)
<
getfittness
(city.colony[i]))
for(m=a;m<
(a+b)/2
;m++)if
(getfittness
(temp)
<
getfittness
(city.colony[i]))
for(m=a;m<
(a+b)/2
;m++)}
}memcpy
(city.colony[i]
,temp,
sizeof
(temp));
}}}void
output
(tsp &city)
intmain()
output
(city)
;//輸出
return0;
}
>
&'d:\program files\vscodeextensions\ms-vscode.cpptools-1.0.1\debugadapters\bin\windowsdebuglauncher.exe'
'--stdin=microsoft-miengine-in-gwmw4k4o.kaj'
'--stdout=microsoft-miengine-out-cxvhxnkf.pmt'
'--stderr=microsoft-miengine-error-elsqe2hx.3e3'
'--pid=microsoft-miengine-pid-cs45y1rf.15x'
'--dbgexe=d:\programfiles\mingw64\bin\gdb.exe'
'--interpreter=mi'
the best solution :
0 9 13 20 28 29 31 34 36 37 32 33 35 30 26
27 23 21 24 25 22 19 14 12 15 17 18 16 10 11
7 8 6 5 4 2 3 1 0
the best :6692.891534
除了main函式改變,其它部分不變(源**中已經引入time.h)
int
main()
output
(city)
;//輸出
stop=
clock()
; duration=((
double
)(stop-start)
)/clocks_per_sec;
std::cout<<
"time usage: "
<"s"
}
the best solution :
0 1 3 2 4 5 6 8 7 10 11 16 18 17 15 12 14 19 22 25 24 21 23 27 26 35 30 33 32 37 36 31 34 29 28 20 13 9 0
the best :7280.840812
time usage: 5.738s
stopwatch計時器統計程式耗時
1 引入依賴 import com.google.common.base.stopwatch 2 基礎用法 stopwatch stopwatch stopwatch.createstarted 建立計時器並開始計時 dosomething log.info dosomething 耗時 stopw...
Python之統計程式執行耗時
思路 程式開始前後各記錄乙個時間點,兩個時間點相減即程式執行耗時時間 方法1 普通計算方法 import time import sys import os start time time.clock time.sleep 5 stop time time.clock cost stop time ...
c 統計程式執行時間的方法
總結下c 中統計程式執行時間的方法。1 void main time t t2 time t2 printf 已執行 d秒 n t2 t1 2 vc的話有profile,在鏈結屬性頁勾選profile項,然後profile 在編譯選單下 各個函式時間都出來了3 int main 當然,你也可以用cl...