Latency Trumps all - 一些有趣的order magnitude

每个程序员应该有一把尺子,这个尺子就是各种语句执行的开销.

今天在网络上搜到了一些有趣的order magnitude

 

  • 美国东海岸-西海岸的时间(network): 60ms
  • Relative Data Access Latency Fast Slow
    • CPU Registers (1)
    • L1 Cache (1-2)
    • L2 Cache (6-10)
    • Main Memory (25-100)
    • Hard drive(1e7)
    • LAN(1e7-1e8)
    • WAN(1e9-2e9)

 

CPU Registers 比内存快100倍

内存比磁盘快1万倍

磁盘比内网快10倍

内网比外网快10倍

 

  • Relative Data Access Latency Fast Slow
    • CPU寄存器:人类平均升高
    • RAM : 25 ~ 100 Godzilla 哥斯拉
    • Hard Drive: 10M 0.4 地球赤道一周
    • WAN: 100M 0.42地球到月球
    • Mobile phone (iphone 3G 500ms): 500M  地球月球往返

 

提高响应速度的策略

  •  move date up 网络
    • make fewer http request(避免从地球到月球)
    • 使用CDN(content delivery network)
    • Add an expires header(climb 哥斯拉[RAM] instead of 去月球[network]
    • 使用压缩格式,Gzip 
  • move date up 磁盘
    • Bloom Filter来检查是否元素存在,从而避免不必要的磁盘操作
    • 将索引放在内存(压缩,再压缩)
    • 顺序读写代替随机读写
    • 使用批量(batching) 和流式(streaming)
    • 保持数据的局部性(locality)
  • move date up 内存 cache line awareness
    • Linked List 不要一次分配一个节点
    • Hash table 冲突再探测,使用步长为1 (?)
    • stack allocation :栈的顶部放在cache中,堆不是
    • Pipeline processing 流水线处理,each stage separately
    • Optimize for size 好的cache size 比好的code快
  • 实际优化
    • Memcached Facebook: 使用UDP代替TCP,减少packet; batch deque减少锁竞争。20万/s请求,平均0.173毫秒

 

浏览器时间:

Fetch time

Parse time (html css javascript)

Execution time(javascript execution, DOM construction and layout, style application)

 

 

参考:

Steve Souders: High performance web sites

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FireCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值