C 計時函式 統計程式執行了多長時間

2021-10-25 08:35:10 字數 4743 閱讀 7370

實驗需求:統計程式或者某個函式的執行時間

#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...