需要額外注意兩點:
- 一個大的struct數組,要注意字節對齊帶來的不必要消耗 。內存敏感的話,調整字段的順序以節約空間 。
- 一個大的struct數組,可以故意加些padding的字段,然item盡可能的按照cache line的長度對齊,可以提升訪問性能 。
關于分支預測的案例,可以看看我寫的這個分析文章:《用重復寫入代替if判斷,減少程序分支》
golang標準庫中也有個很好的例子:《How does ConstantTimeByteEq work?》
一個簡單的if x==y,考慮了攻擊者對計算時間的猜測,考慮了分支預測的損耗 。
其他的關于分支預測的優化技巧,這篇也不錯:《淺談利用分支預測提高效率》
在日常的開發中,換個寫法是有可能會提高性能的:
switch variable{ case "a": // 根據業務特點,把最可能的分支放在最前 。提高分支預測的成功率 // do something case "b": // do something}OK,文章到這里就結束了 。
本人也才寫了兩年的golang,難免有很多錯誤之處,還請讀者不吝賜教,謝謝!
【用golang開發系統軟件的一些細節】
經驗總結擴展閱讀
- 持續集成指南:GitLab 的 CI/CD 工具配置與使用
- 信用卡怎么查消費明細
- 消費貸款申請產生的費用高嗎
- oppo賬號的姓名怎么修改
- 租房可以換鎖芯嗎合法么 租房換鎖費用誰來承擔
- 特斯拉可以用家用電充電嗎
- 拆線多久可以用祛疤膏?
- 衛生間和廚房用什么瓷磚?
- 肉蓯蓉副作用是什么
- 計米器怎么設置參數
