[問題] 先展開反而變慢了? (內詳)

看板C_and_CPP (C/C++)作者 (伽藍之黑)時間13年前 (2013/01/30 05:25), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
我這邊有一隻程式 他的功能是傳入一串數字陣列做為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
use profiler
01/30 09:47, 1F

01/30 14:07, , 2F
VC6也太舊
01/30 14:07, 2F
文章代碼(AID): #1H23vWip (C_and_CPP)
文章代碼(AID): #1H23vWip (C_and_CPP)