随想01

如何注意到那些特别细小的性能问题呢?这里的细小可能是对于我这种不懂的人来说的。印象最深的例子是很早之前看到(可能是这篇)的一个讲关于Disruptor里,有一个class里,在声明变量的时候,写了几个无用的变量(jdk8之后有新的注解@Contended),而这几个变量对性能影响非常大(实际上就是cpu缓存的问题(缓存行对齐))。

黑盒、封装、缓存,这些技术将底层的事物抽象起来,让底层离我们非常远,可以非常简单的,从高层次入手,但是总会有一个阶段,你发现遇到瓶颈了,而这个瓶颈,不是自己这个层面的,是需要更往下走,去了解底下的事物,即抽象泄露

为什么会有这样的现象呢,是因为抽象并不能囊括所有的情况,所以那些偏向底层的人,非常不信任高层级的抽象。比如Rust的那些高级表达,真的没有开销吗?又比如关于缓存,一般情况下,是希望缓存对于外部来说是透明的,即不需要知道缓存的存在,但是类似上面的情况,在复杂的,性能敏感的时候,是不是又非得去关注这个点呢。

附一些相关文章:

updatedupdated2022-09-082022-09-08
加载评论