使用git合并多个提交

假设要合并最后的2个提交,可以按如下命令进行:

  1. git rebase –i HEAD\~2

运行完该命令,会出现如下所示内容: image

  1. 将第二个pick修改为squash或者s,然后输入":wq"退出。
  2. 这时git会自动第二个提交合并到第一个中去。并提示输入新的message(就是我们常说的comments),如下:
    image

  3. 编辑输入新的message,然后输入":wq"退出

  4. 此时本地的(HEAD中)最后两次提交已经被合并为一个。git log可以查看。
  5. 如果需要提交到远端,运行git push --force origin master即可。
more ...

google cpu profiler二进制结果读取

最近一段时间在google cpu profiler做性能热点采样。

用过的人都知道,cpu profiler产出的原始结果是二进制存储的。一般是得到这个结果再使用pprof工具去转化为人可读的文本形式的结果或者图片形式的结果。

但是最近有一些需求:

  1. 对两个版本的profiler结果做比较
  2. 根据历史数据,对单次profiler结果做一些分析,提示一些可以优化的点

要实现这两个功能,如果是基于pprof转化过的数据进行处理,总会有一些获取不到的信息。所以,最好是基于profiler的原始数据来完成上述的功能。

因为profiler的数据是二进制形式的,所以第一步先来做数据读取的操作。

google了一把,找到了一个profiler数据格式说明

有了这个说明,读取这个数据就方便了,写了个python实现,如下:

g_offset = 0
def Print(msg):
    print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()), " %s"%msg
def unpack_buff(fmt,buff):
    global g_offset …
more ...