[問題] 時間效率問題
我寫了一個簡單的函數
內容是輸入起始月份和結束月份
最後會回傳這幾個月分的總天數
例如說輸入1、3月
最後會回傳31+28+31=90 天
(在此先不考慮閏年、也不考慮結束月份比起始月份小的問題)
以下是我的程式碼:
int Totalday(int start_month, int end_month)
{
int each_month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int i, total = 0;
for (i = start_month; i<= end_month;i++) {
total+=each_month[i];
}
return total;
}
最後結果是對的
但是我同事說如果考慮到效能問題的話
這樣還是花太多時間了
還說有個寫法可以比這快10倍
(例如原本這程式需要花2秒,有個寫法可以只花0.2秒)
我同事還舉例來說
each_month這個陣列不要定義在function裡
因為每次跑到這個函數時
記憶體就要重新配置一塊區域給這個陣列,所以無形中會花很多時間
最好是定義在外面比較好
(大概是這樣的意思 因為我不是很懂,所以可能轉達有誤 @@)
但是除此之外我就想不到還有啥方法可以更快了
我知道跑迴圈是很花時間的事情
可是這個函數如果不跑迴圈似乎也沒辦法
我自己的想法是可能把這個函數寫成巨集
或是利用
#if 1
...
#end
的方式來處理
查了一下書知道前置處理器的功用是在程式編譯前執行
但不知道他會不會也需要花時間
爬文好像也沒看到類似問題
所以就來請教大家究竟還有沒有其他方法可以縮短這個函數所需要的時間
小弟是剛用 C 工作沒多久的新手
如果問的不好也請大家多多指教包含了 XD
在此就先謝謝大家回覆囉
--
▍ ▍ ╯╰ ╯╰ ◢◣ ◢◣ 我最愛的 柏柏龍~ 柏柏龍~
◢██◣ ╮╭ ▎▎╮╭ ▎▎ 柏柏龍~ 柏柏龍~
⊙ ⊙ ◢ ◣ ⊙ ⊙ ◣ 人人心中都有柏柏龍~
≡ ▼ ≡ ▲▲ ● ● ≡ ▼ ≡ ■ ■ ■ ■ 憤怒就永遠不會消失~
皿 ◢⊙⊙◣ ≡皿 ≡ 皿 炸是最美的擁有~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.4.4
→
01/07 01:59, , 1F
01/07 01:59, 1F
推
01/07 01:59, , 2F
01/07 01:59, 2F
→
01/07 02:01, , 3F
01/07 02:01, 3F
推
01/07 02:01, , 4F
01/07 02:01, 4F
→
01/07 02:01, , 5F
01/07 02:01, 5F
→
01/07 02:01, , 6F
01/07 02:01, 6F
→
01/07 02:03, , 7F
01/07 02:03, 7F
→
01/07 02:03, , 8F
01/07 02:03, 8F
→
01/07 02:03, , 9F
01/07 02:03, 9F
推
01/07 02:10, , 10F
01/07 02:10, 10F
→
01/07 02:11, , 11F
01/07 02:11, 11F
→
01/07 03:23, , 12F
01/07 03:23, 12F
→
01/07 03:24, , 13F
01/07 03:24, 13F
推
01/07 04:53, , 14F
01/07 04:53, 14F
→
01/07 04:54, , 15F
01/07 04:54, 15F
→
01/07 10:35, , 16F
01/07 10:35, 16F
→
01/07 10:36, , 17F
01/07 10:36, 17F
推
01/07 11:08, , 18F
01/07 11:08, 18F
→
01/07 11:09, , 19F
01/07 11:09, 19F
→
01/07 14:24, , 20F
01/07 14:24, 20F
→
01/07 16:17, , 21F
01/07 16:17, 21F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
11
38