跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 一个弱值的问题,读的成本比写低多少?
未分類
22 9 月 2020

一个弱值的问题,读的成本比写低多少?

一个弱值的问题,读的成本比写低多少?

資深大佬 : 786375312123 0

RT 以前上大学学过汇编,可是好久不用记不清楚了。而且那个时候也没讨论过成本问题。

比如说很简单的 c++代码

a > 0 和 a = 12

前一句的成本能比后一句低多少?底在哪了?

大佬有話說 (9)

  • 資深大佬 : lcdtyph

    单独拎出来两句比较对应汇编的性能是没有意义的,还要考虑前后指令对流水线、缓存的影响

  • 資深大佬 : ryd994

    建议你代码成形前不要纠结这种细枝末节的事
    代码成形以后,你会发现你的程序根本没到这个级别
    如果你的程序真的需要这个级别的优化,那你应该已经掌握各种 profiling 的用法,问不出这个问题。

  • 主 資深大佬 : 786375312123

    @ryd994 我工作不少年了。就是今天突然想起这个问题,好奇

  • 主 資深大佬 : 786375312123

    @lcdtyph 这个只是举例。我也不想比较 mov 和读语句(忘记哪个了,读有对应的汇编么?)我就是想知道语义上的读和写,哪个成本更高?似乎读的话,你一定拷贝一个东西,不管是地址还是值。写的话,似乎需要获取地址,然后写到这个地址?
    这么看读的成本大概率比写要低?

  • 資深大佬 : cassyfar

    今天所说的“写”成本,主要是指互联网应用下分布式系统的“写”,里面涉及了 replica 的更新,多个写到同一 entry 的 consistency,cache 的更新,高 TPS 下如何处理写,atomic 的写,等等吧。而读,基本就是一个读。

  • 資深大佬 : vk42

    @786375312123 读和写都涉及地址和数据啊,从 CPU 执行单元来看没啥区别。如果按你的假设没有上下文,现在主流 CPU 的 Cache 是写回策略,所以写会直接 Cache hit,而读是直接 miss,所以读更慢

  • 資深大佬 : AX5N

    `mov eax, [ebp-4]`,把内存里的某个值复制到寄存器上,`mov [ebp-4], 5`,把某个值直接写入地址里,`mov eax, 5`把某个数直接写入寄存器里,`mov [ebp-4], eax`把某个数从寄存器里写入到内存里。这 4 个操作你既可以看成是读,也可以看成是写,不过读似乎都是先复制到寄存器上?

    鬼知道谁比较快是比较慢,你可以用 c++写个循环自己去测一下啊。编译之后再用调试器去改下汇编代码就好了。

  • 資深大佬 : OysterQAQ

    @vk42 cpu 多级缓存策略不同,

  • 資深大佬 : CRVV

    https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=vmovdqu&techs=AVX&expand=5655,3418

    单纯回答这个问题的话,随便找一对 load 和 store 指令看文档就好了
    所以不同的处理器上不一样,Intel 架构上 load store 指令有一大堆,估计这个数字还会各不相同。
    上面链接里的这一对指令,在 Icelake 上是 store 的开销比 load 小

    当然,以上回答其实没有意义,因为如一所说这个数字没有用。

    不过,如果你要做的是一个并发的系统,可能是 cpu core 并行工作,也可能是你部署了一个集群来处理请求。
    那么, 在很多情况下,最后系统的瓶颈是在对同一个位置的写操作上。
    比如 atomic counter,不论是 cpu 上实现的还是 Redis 实现的,这个写操作都不可能被无限扩展,在 cpu core 足够多或者并发请求足够多的时候就会成为瓶颈。

    所以,通常情况下,设计架构 /算法时,会让写操作少一些。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具