[問題] 寫入值與原始值相同該如何處理較佳

看板C_and_CPP作者 (帥氣又拉風)時間10年前 (2014/03/09 10:23), 編輯推噓2(209)
留言11則, 6人參與, 最新討論串1/1
開發平台(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

03/09 11:27, , 1F
如果 dbg 是 int 就寫 B 吧
03/09 11:27, 1F

03/09 11:44, , 2F
是unsigned char 請問為什麼int時B比較好?
03/09 11:44, 2F

03/09 12:24, , 3F
我不很專業,但我猜這裡的效能差不會是重點
03/09 12:24, 3F

03/09 12:24, , 4F
若考慮效能問題的話,也許先往更重要的地方下手吧
03/09 12:24, 4F

03/09 12:25, , 5F
如果你系統運算能力爛到每秒兩次的這種差距都感覺的到
03/09 12:25, 5F

03/09 12:26, , 6F
想像起來還滿奇耙的......如果我想錯了請各路大神指正
03/09 12:26, 6F

03/09 15:09, , 7F
把組語叫出來看就知道了,猜測B要記憶體寫入會"稍"慢一些
03/09 15:09, 7F

03/09 19:49, , 8F
剛剛寫了程式去測 A較好 約快了2% 但還是不知道其原理
03/09 19:49, 8F

03/09 19:58, , 9F
branching很花時間
03/09 19:58, 9F

03/09 21:30, , 10F
可能是讀的成本比寫的成本小, 加上if(dbg)很少成立
03/09 21:30, 10F

03/09 23:00, , 11F
實測數據為準吧...我只是憑經驗亂猜
03/09 23:00, 11F
文章代碼(AID): #1J6z2kbJ (C_and_CPP)