跳至正文

技术

文件系统对比 btrfs vs zfs

btrfs vs zfs

btrfs是一个支持写时复制的文件系统,同时zfs是另外一个也被广泛使用的文件系统。

btrfs使用红黑树,zfs使用另外一套技术,zfs在大型机器上似乎是被广泛使用,处理大型文件的性能上优于btrfs,并且存储文件没有上限,btrfs文件数量上有上限,同时处理小文件更快。[……]

继续阅读

python 源码路径组织

python源码路径组织:

  • Include: 包含了python提供的头文件,如果需要自己编写扩展python,需要用到这里的头文件;
  • Lib: 包含python自带的标准库,都是用python写的。
  • Modules: 包含所有C语言编写的模块,都是对速度要求比较高的模块。
  • Parser: 包含解[……]

    继续阅读

C++ 继承和虚拟继承的内存分布

  • 技术

菱形继承

菱形继承:菱形继承的问题在于数据冗余和二义性。

将子类转化成爷爷类的时候会报错,因为不知道要转化到哪个类上去,这里需要加入static_cast才行。爷爷类会在两个父类中都被定义,解决的办法是:虚拟继承。

虚拟继承让被菱形继承的父类只会存在一份,消除数据冗余,那这里就得问一下,内存是如何布[……]

继续阅读

编译优化PGO

PGO的介绍

基本概念

PGO是一个可以平均提高任何程序5%~8%性能的技术,全称是Profile Guided Optimization,它的思路其实很简单,就是编译器在对变量和函数如何放置排布和使用问题上,其实是有很大的自由权利的。

这里没有一个绝对的最优解,同一段代码,在对于不同应用场景的最优[……]

继续阅读

TCP-Jersey拥塞控制介绍

  • 技术

介绍

TCP-Jersey拥塞控制算法在中文世界里的描述非常的少,有点好奇信号和丢包共同控制的算法是怎样的,就翻译了这篇论文,链接在最后。

传统TCP拥塞控制

传统TCP的拥塞控制算法是使用拥塞控制窗口来实现的,TCP发送端在发送时除了要兼容接收端的接收窗口,自己这边的发送窗口,还需要考虑拥塞控制窗[……]

继续阅读

Unix编程艺术 读书笔记

1 哲学

  • 性能—时间的指数曲线对软件开发过程所引发的结果,就是每过18个月,就有一半的知识会过时。Unix并不承诺让你免遭此劫,只是让你的知识投资更趋稳定
  • 策略相对短寿,而机制才会长存
  • 对于程序员和开发人员来说,如果完成某项任务所需要付出的努力对他们是个挑战却又恰好还在力所能及的范围内,他们就会觉[……]

    继续阅读

Python高性能编程 读书笔记

主题

在当python的函数越短,通常意味着性能越高!

这不是笑话,在不改变算法的情况下,同一个功能是一定存在一个最短指令集的,当python代码变短意味着指令码变少,那多的指令码就在底层以CPU指令码的形式转移了。

这叫做同算法指令集数量守恒。 ——本人

第二章 通过性能分[……]

继续阅读