ninja代码解析02-如何执行一条command
ninja如何执行一条编译指令,这个主要在builder.cc里的Build(string* err)里实现 这里主要关注一条edge的执行 bool Builder::StartEdge(Edge* edge, string* err) { // ... previous code // start command computing and run it if (!com...
ninja如何执行一条编译指令,这个主要在builder.cc里的Build(string* err)里实现 这里主要关注一条edge的执行 bool Builder::StartEdge(Edge* edge, string* err) { // ... previous code // start command computing and run it if (!com...
随便看看 Visual programming is stuck on the form douyin-download watchyourlan A 10x Faster TypeScript 上面的repo go的error处理逻辑设计 android 15的terminal blog集合 网页渲染 GPU 卡顿的小故事 网页渲染 GPU 卡...
ninja代码不多,主要分成两个部分,libninja + libninja-re2c 有些unix平台支持browse的,还会带上brows.py的代码, 跟libninja-re2c一起到browse.o里去,最后跟libninja一起合成ninja的二进制 理论上unix下的ninja binary里是直接有一个python代码的字符串文件的,它是通过inlie.sh把一个brow...
今天看的时候发现只要在cxx + link的时候带上 arch -x86_64 arch -arm64 翻译过来的话就是ninja规则类似 rule cxx command = $cxx -MMD -MF $out.d $includes $cflags -arch x86_64 -arch arm64 -c $in -o $out description = CXX $ou...
How fast can you open 1000 files? https://lemire.me/blog/2025/03/01/how-fast-can-you-open-1000-files/ apple垃圾,lemire写了个thread pool + thread的对比代码 [译][论文] Transformer paper | Attention Is All ...
我们来说一说TCP神奇的40ms 文章写的很糙,nagle下小于MSS的小数据包会等没有未确认数据包的时候发送,这个算法的设计的初衷是频繁的发送小字节的包会导致网络拥塞 tcp delay ack开启之后,当接收到数据包时,TCP 不会立即发送 ACK,而是等待一段时间看看是否有数据可以一起发送。如果在这段时间内有数据需要发送,ACK 会与数据一起发送,从而减少单独发送 ACK ...
看Endianness Explained, 有点意思 在计算机的世界中,最小可以寻址的单位通常是 byte,1 个 byte 是 8 bits,这个没有争议。但其实严格讲的话,看struct iphdr也存在到bit位的端序 如果一个数据类型需要占用多个 bytes,比如 32 位的 int,占用 4 个 bytes,那我们在编程的时候会用一个内存地址表示这个 int,从这个地址开始,...
写文件时进程宕机,数据会丢失吗? 写文件时进程宕机,数据会丢失吗? memory profiling Memory Profiling Part 1. Introduction 另外这个老哥的blog感觉有点意思 udp send之前到底要不要bind win sendto win recvfrom win bind 看下来是不推荐的,实际上se...
entt的介绍 有个用局部性原理优化的, 优势是 Fastest unordered iteration speed Constant insertion and deletion Constant lookup by ID ID (but not pointer) stability OK (but not amazing) deterministic itera...
主要看到两个文章,之前看brpc的mesi相关的线程极致优化,当时没看全 MESI协议 是一种用于维护多核CPU缓存一致性的协议,确保多个核心访问共享内存时数据的一致性, 它是缓存一致性协议中最常见的一种 M (Modified):缓存行已被修改(与主内存不一致),且只有当前核心拥有最新数据。 E (Exclusive):缓存行与主内存一致,且只有当前...