[問題] 先展開反而變慢了? (內詳)
我這邊有一隻程式
他的功能是傳入一串數字陣列做為query後
和database裡面的candidate做比對尋找最接近者
database是用特別的格式記錄每筆candidate
程式會把每筆candidate按這個格式讀進來放在struct裡面
然後把所有struct放在一個vector裡
等到要對該筆candidate進行比對時
再展開還原成和輸入的陣列相同的格式進行比對
我們可以很直覺的想到
當傳入多筆input時
重複展開的動作會浪費時間
所以先將原本的格式展開好存在struct當中
進行比對時直接拿這個展開好的陣列來比對就好了
問題來了
當我在struct中多放了展開後的陣列
在比對時拿這個先展開好的陣列進行比對
平均每筆query所花的時間卻變長了
我不信邪做了個實驗
我先把陣列展開放到struct裡面
然後在比對時
我又對每個candidate重新展開一次
拿這個展開的結果和query比
結果這樣居然比我拿struct中先展開好的陣列進行比對還要快
我本來以為可能是記憶體不夠
可是我開工作管理員出來看
這隻程式吃的記憶體只有幾十MB
遠小於我電腦的2GB記憶體
有人知道這是怎麼一回事嗎?
謝謝
我的compiler應該是VC6的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.213.11
※ 編輯: iamnotgm 來自: 140.114.213.11 (01/30 05:28)
推
01/30 09:47, , 1F
01/30 09:47, 1F
→
01/30 14:07, , 2F
01/30 14:07, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章