Velocity@Beijing分享

VelocityChina2010在北京举行,聚焦Web性能优化与运维,涵盖前端优化技术、自动化工具及案例研究等内容。

       O'Reilly Velocity China 2010 ,在北京举行了为期两天的大会,由 O'Reilly Taobao 联合主办,本次大会的主题是 ”Fast by default( 与生俱来的快 )” ,关注 web 性能(更多为前端性能)和运维。

       自己有幸参加了首次在中国举行的 Velocity 大会,自我总结有以下几点:

1、  WPO web performance optimation

2、  运维(比如 taobao 如何管理 15,000 台服务器)

3、  Automate

 

一些数据

Data@Taobao

•    Alexa 排名 13

•    10 亿日 PV

•    15,000 服务器

•    带宽 318G/410G

 

Data@Facebook

•    +5 亿的活跃用户,超过一半每天访问

•    200 亿日 PV

 

Performance 带来的价值


 

WPO

•    Web Performance Optimization

–  Drives traffic

–  Improves UX

–  Increases revenue

–  Reduces costs

 

 

How to WPO

Measure

•    Yahoo!   Boomerang

•    Stevesouders.org/episodes

•    Jiffy

•    WebPagetest.org

•    ShowSlow.com

Profile

•    Firebug

•    Fiddle

•    HttpWatch

•    Speed Tracer

•    Web Inspector

•    Dyna Trace

Research

•    Domain sharding

•    Concatenation

•    Sprites vs. MHTML

•    WebP (A new image format for the Web)

•    Prefetch

•    SPDY, cwnd=10

Best practices

•    High performance Even faster web sites

•    High performance JS

•    Code.google.com/speed

•    Developer.yahoo.com/performance

•    Stevesouders.com/blog

•    Perfplanet.com

Evangelize (传道)

•    Velocity conference

•    Workshops

•    University

•    Case studies

•    blogs

Lint

•    Page Speed from google

•    YSlow

Automate

如何做到自动化的性能优化?参见下面

 

Facebook3 个前端优化框架

•    Quickling ajaxifies the whole web site

•    PageCache cache user-visited page in browser

•    BigPipe pipelines website

 

Quickling
remove redundant work via ajax


 如上图,从首页跳转到图片 detail 页面,红框标示的部分,它们是不变化的,因此可以不用每次页面请求,都从服务器端生成这些内容,这也是 Quickling 的出发点(创新无处不在)

实现示意图:


 

PageCache

Cache visited pages in client side.

如下图,在用户访问 facebook 网站时,分析用户行为发现,一般情况下,用户会多次访问首页,因此可以 cache 第一次访问,后面的请求都从本地 cache 取数据即可。


PageCache 的实现有几个难点:

•     实时更新

•     Cache 一致性

      至于作者如何解决的,还是详细看他的 ppt 吧( http://velocity.oreilly.com.cn/ppts/ChanghaoJiang.pdf )。

 

BigPipe

Pipeline website


 如上图,为一般情况下,一个页面从服务器生成,到网络传输,最后到客户端渲染的过程。可见它是一个串行的过程。

Facebook 的工程师,经过分析,发现一个页面(如下图),可以分成许多 Pagelets ,它们间相互影响不大,可以拆开来分别加载。


 

BigPipe 后,页面加载的方式变为如下方式,这样可以有效改进用户感知的页面加载时间。


更多,也请查看作者的 ppthttp://velocity.oreilly.com.cn/ppts/ChanghaoJiang.pdf

 

一些个人总结

•    性能提升可以带来流量、带来收入

•    前端性能优化很重要

•    有专门的团队、专门的人在做

•    人是最不可靠的,靠系统,靠自动化

•    持续的做,不是三天打渔,两天晒网

 

 

资源连接

Boomerang Boomerang is a piece of JavaScript that you add to the bottom of your Web pages, where it measures page-load time, among other things, and beacons the results back to your server

http://developer.yahoo.com/blogs/ydn/posts/2010/06/performance_testing_with_boomerang/

Jiffy: http://code.google.com/p/jiffy-web/

SPDYhttp://www.guao.hk/tag/spdy

Page Speed: http://code.google.com/speed/page-speed/

WebP: http://code.google.com/speed/webp/

Speed Tracer: http://code.google.com/webtoolkit/speedtracer/

Web Inspector: http://trac.webkit.org/wiki/WebInspector

Dyna Trace: http://www.dynatrace.com

Velocity china pdf: http://velocity.oreilly.com.cn/index.php?func=slidesvideos

### 卡尔曼滤波器中的 `update_velocity` 函数工作原理 在卡尔曼滤波器中,`update_velocity` 函数通常用于处理测量数据并更新状态估计值和协方差矩阵。以下是该函数的核心组成部分以及其具体作用: #### 1. **残差计算 (`y`)** 残差表示当前时刻的测量值与预测值之间的差异。它通过以下公式计算得出: \[ y = z - H\hat{x}_k^- \] 其中: - \( z \) 是实际观测值, - \( H \) 是观测矩阵, - \( \hat{x}_k^- \) 是先验状态估计。 此部分的作用在于评估模型预测的状态与真实测量之间存在的偏差[^1]。 #### 2. **创新协方差矩阵 (\( S \)) 的计算** 创新协方差矩阵反映了测量噪声和预测误差的影响程度,定义为: \[ S = H P_k^- H^T + R \] 这里: - \( P_k^- \) 表示先验状态协方差矩阵, - \( R \) 是测量噪声协方差矩阵。 \( S \) 描述了系统的不确定性水平,并作为后续卡尔曼增益计算的基础[^2]。 #### 3. **卡尔曼增益 (\( K \)) 计算** 卡尔曼增益决定了如何融合预测信息与新获得的测量数据来优化最终状态估计。它的表达式如下所示: \[ K = P_k^- H^T S^{-1} \] 这一项衡量的是相对于总不确定性的比例因子,在调整权重方面起到关键角色[^3]。 #### 4. **状态向量 (\( self.x \)) 更新** 利用前面得到的各项参数可以完成对状态变量的新一轮修正操作,即: \[ \hat{x}_k = \hat{x}_k^- + Ky \] 这一步骤将先前基于动态学规律推测出来的初步结果进一步校正至更接近实际情况的位置上[^1]。 #### 5. **协方差矩阵 (\( self.P \)) 更新** 最后还需要同步刷新反映内部置信度变化情况下的协方差阵列,采用下面这个简化版本或者完全形式均可视需求而定: \[ P_k = (I-KH)P_k^- \quad 或者 \quad P_k=(I−KH)P_k^{−}(I−KH)^T+KRK^T \] 前者适用于大多数常规场景下;后者则考虑到了额外引入可能带来的影响因素更多一些的情况[^2]。 综上所述,整个流程涵盖了从获取最新传感器读数开始经过一系列数学运算直至形成新的最优解为止的所有必要环节。 ```python def update_velocity(self, z): # Compute residual between measurement and prediction y = z - np.dot(self.H, self.x) # Innovation covariance matrix S = np.dot(np.dot(self.H, self.P), self.H.T) + self.R # Kalman gain calculation K = np.dot(np.dot(self.P, self.H.T), np.linalg.inv(S)) # Update state estimate with new information from measurements self.x = self.x + np.dot(K, y) # Update the error covariance matrix using either simplified or full form. I = np.eye(len(self.x)) self.P = np.dot((I - np.dot(K, self.H)), self.P) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值