[笔记] Envoy bazel 学习 & 踩坑

2022-10-20
阅读 3 分钟
1.6k
原文地址:Envoy bazel 学习 & 踩坑近一年有开始折腾 Envoy 了,在 bazel 这块踩了一些坑,总结记录下的,主要是个人的体感,不一定准确,欢迎批评指正。bazel 是个啥编译构建工具,跟常用的 Makefile 是类似的。只是,bazel 更复杂,上手门槛更高,以我的个人的体验来看,主要是为了提升表达能力,可编程能力更强。Make...

Envoy 开发入门:搞懂 http filter 状态码

2022-10-20
阅读 3 分钟
1.9k
原文地址:Envoy 开发入门:搞懂 http filter 状态码对于 http filter,Envoy 提供了一大堆状态码,虽然每个都有不少的注释,但是依旧很头大,傻傻搞不清楚。本文记录一下自己的理解,如有错误,欢迎指正~http filter 是什么Envoy 提供的 http 层的扩展机制,开发者可以通过实现 Envoy 约定的接口,在 Envoy 的处理流程...

动态链接库如何函数寻址

2022-09-06
阅读 2 分钟
2.5k
最近我们发现 go 编译为 so 之后,内存占用涨了好多,初步分析下来,是动态符号导致的,感觉不太符合常识趁着娃还在外面放假,正好学习学习~

初识 WebAssembly

2021-07-07
阅读 2 分钟
3.2k
WebAssembly 简称 Wasm,最早起源于前端技术。即使在有了 JIT 加持之后,js 在大计算量的场景,性能还是不够理想,经过了 asm.js 的尝试,最后以 Wasm 定型,得到了四大浏览器的支持。最初的 Wasm 主要是应用于 WEB 应用,后续随着 WASI 的诞生,又扩展到了更宽的场景,比如服务端技术。

LuaJIT 是如何工作的 - JIT 模式

2021-06-23
阅读 3 分钟
9.8k
Just-in-time 即时编译技术,在 LuaJIT 里的具体使用是:将 Lua byte code 即时编译为机器指令,也就是不再需要解释执行 Lua bytecode,直接执行即时编译产生的机器指令。也就是说,解释模式,和 JIT 模式的输入源是一样的,都是 Lua byte code。相同的字节码输入,两种模式却可以有跑出明显的性能区别(一个数量级的区...

LuaJIT 是如何工作的 - 解释模式

2021-06-13
阅读 2 分钟
9.3k
今天我们介绍 Lua 语言的另外一个虚拟机实现 LuaJIT,LuaJIT 使用的 lua 5.1 的语言标准(也可以兼容 lua 5.2)。意味着同样一份遵守 lua 5.1 标准的代码,既可以用标准 lua 虚拟机来跑,也可以用 LuaJIT 来跑。

Lua 代码是如何跑起来的

2021-05-03
阅读 3 分钟
5.4k
C 语言虽然也是高级语言,但是毕竟是很 “古老” 的语言了(快 50 岁了)。相比较而言,C 语言的抽象层次并不算高,从 C 语言的表达能力里,还是可以体会到硬件的影子。

C 代码是如何跑起来的

2021-04-24
阅读 5 分钟
13k
上一篇「CPU 提供了什么」中,我们了解了物理的层面的 CPU,为我们提供了什么。本篇,我们介绍下高级语言「C 语言」是如何在物理 CPU 上面跑起来的。C 语言提供了什么C 语言作为高级语言,为程序员提供了更友好的表达方式。在我看来,主要是提供了以下抽象能力:变量,以及延伸出来的复杂结构体我们可以基于变量来描述复...

[趣闻] 代码顺序也会影响 LuaJIT 的执行效率

2021-04-12
阅读 2 分钟
3.2k
最近有一个有趣的发现,调整了一行 Lua 代码的顺序,执行时间却少了接近一半 😅现场案例情况下面这个 lua 脚本 order-1.lua: {代码...} 执行时间为 6.3s: {代码...} 如果将其中的 f1 函数实现,调整一下顺序: {代码...} 这个改动是将 n 的计算放到 m 计算的前面。从逻辑上来说,m 和 n 两个是并没有顺序依赖,先算哪一...

实操体验 CPU 的流水线/多发射

2021-04-05
阅读 4 分钟
6.3k
前言前文 <一行机器指令感受下内存操作到底有多慢> 中,我们体验到了 CPU 流水线阻塞带来的数量级性能差异。当时只是根据机器码,分析推断出来的,这次我们做一些更小的实验来分析验证。动手之前,我们先了解一些背景。在 \<CPU 提供了什么> 一文中介绍过,CPU 对外提供了运行机器指令的能力。那 CPU 又是如...