说明

本篇文章介绍redis使用的字符串结构。redis很巧妙的在操作的指针前面增加header,并且会在尾部增加’\0’,兼容二进制的同时,也可以直接将指针传递给C库操作字符串的函数直接操作

阅读全文 »

lua垃圾回收发展历程

  • 为什么不用引用计数?

    1. 引用计数有循环引用问题,会导致内存泄漏
    2. 应用计数嗯外开销大,赋值的时候会带来额外引用计数计算的开销。尤其是在内存比较稳定,没有新内存申请和释放的时候,你也需要承担这部分开销。
  • 5.0及以前使用的是stop the world的标记清除法,会卡住所有操作,直到gc完成

  • 5.1引入了分步gc,整个gc过程可以分为好几步,穿插在运行过程中

  • 5.2引入了分代gc,属于实验性质,实际效果不好,在5.3的时候又移除了

  • 5.4重新分代了分代gc,具体实现方式会在后面介绍

阅读全文 »

说明

介绍systemtap, stap++的一些使用方式,以及总结了一些遇到的坑点

systemtap介绍

systemtap跟perf一样也是一个linux下的性能分析工具,但它提供自定义脚本编写,所以功能会比perf更强大。

阅读全文 »

说明

总结perf在linux下进行性能分析的常用方式。

perf介绍

Perf是一款linux性能分析工具。
通过它,应用程序可以利用 PMU(performance monitoring unit),tracepoint和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题,也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。

阅读全文 »

说明

总结下最近在开发4个平台(win64, mac, ios, android)的unity复杂C++扩展遇到的坑点,不对unity如何开发c++插件进行介绍。整个插件开发用了3-4天,各个平台的编译兼容花了1周多时间。可见有多坑。

阅读全文 »

说明

记录下制作该博客时候的一些配置修改,默认已经有hexo+next环境,如果没有该环境,请自行搜索教程


博客好久没更新了,发现原来的版本hexo(3.x)部署之后页面都为空,最后升级了下hexo和next到最新版本。升级过程也挺坎坷的,最后走了最傻的版本,重新新建了一个hexo和next博客项目,然后迁移博客数据过来。

升级过程中发现之前写的一些东西已经没法用了,包括添加顶部加载条, 代码样式, 增加阅读统计, 腾讯移动分析。所以配置教程基本上没什么用了

阅读全文 »

说明

分析lua使用的gc算法,如何做到分步gc,以及测试结论

gc算法分析

lua gc采用的是标记-清除算法,即一次gc分两步:

  1. 从根节点开始遍历gc对象,如果可达,则标记
  2. 遍历所有的gc对象,清除没有被标记的对象
阅读全文 »

说明

lua中提供了3中字符串拼接函数,测试在日常使用情况下,各种拼接字符串的性能对比。

测试环境

操作系统:Debian GNU/Linux 8
CPU:Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
内存:64G
lua环境:LuaJIT-2.1.0-beta3 (测试的时候关闭jit)

阅读全文 »
0%