看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 假設我有一個防呆的機制是一個 1byte counter 他大部分的時間都為0 只有硬體發生錯誤時才會開始跳 錯誤檢測時會把它+1 若是訊號正確時會把他清成 錯誤檢測500ms有可能會發動一次 就是說每1秒有1~2次會改成1及清成0 但大部分的時候都再作0->0的動作 約1~25ms一次 我現在的寫法為: if(dbg) dbg = 0; 但如果直接把if拿掉對系統的負擔是不是會相對小很多 我的想法是 記憶體若那一塊是屬於低電位的 再write一次低電位等於不改變資料 也等於不作動 但是如果有if 是不是每次都要read一次 多餘的動作 我對硬體特性不太懂 還請各位高手解答 感謝 補充說明(Supplement): 當資料是0時 (dbg = 0;) A_func() { if(dbg) dbg = 0; } B_func() { dbg = 0; } A和B哪一個要用到的CPU效能較少? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.171.27.145
applecool:如果 dbg 是 int 就寫 B 吧 03/09 11:27
poiuy777:是unsigned char 請問為什麼int時B比較好? 03/09 11:44
SocketAM2:我不很專業,但我猜這裡的效能差不會是重點 03/09 12:24
SocketAM2:若考慮效能問題的話,也許先往更重要的地方下手吧 03/09 12:24
SocketAM2:如果你系統運算能力爛到每秒兩次的這種差距都感覺的到 03/09 12:25
SocketAM2:想像起來還滿奇耙的......如果我想錯了請各路大神指正 03/09 12:26
dirkc:把組語叫出來看就知道了,猜測B要記憶體寫入會"稍"慢一些 03/09 15:09
poiuy777:剛剛寫了程式去測 A較好 約快了2% 但還是不知道其原理 03/09 19:49
azureblaze:branching很花時間 03/09 19:58
bobhsiao:可能是讀的成本比寫的成本小, 加上if(dbg)很少成立 03/09 21:30
applecool:實測數據為準吧...我只是憑經驗亂猜 03/09 23:00