VizTracer 0.4.0, 我们终于支持Windows啦

VizTracer从0.3走到了0.4,使用和支持的人也越来越多,首先感谢大家~

按照惯例,我们还是先看一下和0.3相比,0.4.0多的重要feature。

首先最核心的,一定是对Windows的支持啦。Windows这件事一直在我脑子里,今天忽然有个issue说Windows上装不了,我就发现哎原来还是有Windows的开发者,于是花了一段时间把Windows support搞定了。其实因为我程序结构的原因,支持Windows也没有那么费劲,主要是把pthread的部分用Windows的原生API代替掉,然后把workflow整理顺利,让测试可以在github VM上跑过。

VizTracer现在终于是个全平台package啦!说到这个,0.4.0也稍微修改了一下thread id,在Mac和Linux上用了不同的API,拿到了更合理的thread id。

然后新加了两个Custom Event,VizCounter和VizObject。这两个Event的核心功能是类似的,让用户可以在程序运行的过程中track自己的数据随时间的变化。不同的地方就是Counter是数,而Object是一个对象,里面只要能jsonify,放什么都行。这个部分我在demo里新加了一个case,是一个梯度下降的算法,其中每次循环记录cost的大小的,看着还蛮有趣的,感兴趣的可以看一下。

另外就是优化了一下hook function。思前想后,决定把原来记录的class name拿掉,因为相对比较费时间,换成了line number(和cProfile之类的 统一了)。还有原来include/exclude file用了realpath,overhead极大,直奔python,现在也换了实现方法,回归了正常,但是有一些特殊case下就会有点小毛病,已经注明了,tradeoff嘛,没办法。

因为确实开始有人使用了,所以我决定把documentation从README.md搬到readthedocs,显得正式一些。所以现在我们的docs在viztracer.readthedocs.org啦!

另外还有几个比较小的不易察觉的优化

  • 把每个事件都按照Chrome的要求加上了tid(这个之前算小bug)
  • 用orjson的话,可以更快地dump出json文件了(不再来回来去decode encode了)
  • 加了console command,现在可以直接viztracer my_script.py
  • 支持了.gz格式,嫌log太大的,可以压缩之后直接用chrome://tracing打开
  • 修正了src包里少header file的问题(影响没有whl的平台,比如老的MacOS)

大概就是这样啦!最后依然是欢迎大家试用VizTracer以及提供宝贵意见!

gaogaotiantian/viztracergithub.com图标

发布于 08-27

文章被以下专栏收录