作者poiuy777 (帥氣又拉風)
看板C_and_CPP
標題[問題] 寫入值與原始值相同該如何處理較佳
時間Sun Mar 9 10:23:39 2014
開發平台(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