1.2.2 GoLLVM 编译探索GO CN GoLLVM编译探索 马春辉 字节跳动程序语言团队工程师 目录 团队与个人 01 GoLLVM 背景 02 GoLLVM现状 03 GoLLVM问题解决 04 阶段性的成果 05 未来与展望 06 第一部分 团队与个人 ’ alt=‘OCR图片’/> 团队与个人 字节跳动程序语言团队 go 编译器/Runtime/GC 优化 基础库、性能分析工具、java、python 基础库、性能分析工具、java、python 马春辉 十多年的编译器领域相关工作经验 先后就职于HP编译器组,IBM jvm组,华为虚拟机实验室,字节跳动程序语言团队 ’ alt=‘OCR图片’/> 第二部分 GoLLVM背景 ’ alt=‘OCR图片’/> GoLLVM背景 · 字节内有大量的go微服务 性能要求 在原生Go SDK上的一些传统编译优化收益超过几十万核 PSM CPU Latency GoLLVM背景 传统编译优化在go compiler上的实现 Inline 策略调整 栈大小调整 Fast path inline Aggressive BCE ’ alt=‘OCR图片’/> GoLLVM背景 ·两条路 继续在原生Go SDK上开发 优化pass少 SSA比较简陋,缺少一些优化的基础设施 探索利用LLVM的优化能力:语言团队与STE-编译器组联合探索0 码力 | 25 页 | 3.99 MB | 3 月前3
Greenplum 编译安装和调试## Greenplum 编译安装和调试 本文先介绍如何从源代码编译安装Greenplum、初始化Greenplum集群。然后介绍SQL在Greenplum中的典型执行路径,最后介绍一些调试技巧。 源代码使用 Greenplum 开源社区最新源代码 6X_STABLE 分支: https://github.com/greenplum-db/gpdb,内核代码基于PostgreSQL 9. com/greenplum-db/gpdb-postgres-merge。 ### 1. 从源代码编译 Greenplum Greenplum 目前官方支持 Redhat/Centos/SuSE/Ubuntu 等 Linux 系统。大量开发人员包括我自己使用 Mac 系统,但是不在官方支持列表中。 ### 1.1 在 Mac 系统上编译 首先需要关闭苹果操作系统的 SIP 特性,否则无法初始化集群。 1. 重启操作系统 python get-pip.py $ sudo pip install psutil lockfile paramiko setuptools epydoc // 需要安装 openssl,否则无法编译 $ brew install openssl && brew link openssl --force $ CPPFLAGS="-I/usr/local/include/0 码力 | 15 页 | 2.07 MB | 2 年前3
Rust并行编译的挑战与突破Rust并行编译的挑战与突破 李原 2022年5月28日 ## 目录 - 相关浅谈 - Rust并行编译的挑战与突破 - 从并行编译到并行程序设计 - Rust社区与并行编译  ## 相关浅谈 ## Rust编译速度之殇 ## ## 编译器设计造成编译速度缓慢  · 单态化 · 借用检查 · 宏展开 · MIR优化 Rust规模编译速度慢于C++  ## Rust编译速度之殇 ## 提升编译效率成为近年社区重点工作  2017-2021,Rust编译速度已提升一倍以上 编译器的方案 AST = Abstract Syntax Tree抽象语法树 SSA = Single Static Assignment单静态赋值 IR = Intermediate Representation中间表示0 码力 | 36 页 | 1.63 MB | 3 月前3
C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程C++,后半段主要介绍并行编程与优化。 1. 课程安排与开发环境搭建:cmake 与 git 入门 2. 现代 C++ 入门:常用 STL 容器,RAII 内存管理 3. 现代 C++ 进阶:模板元编程与函数式编程 4. 编译器如何自动优化:从汇编角度看 C++ 5. C++11 起的多线程编程:从 mutex 到无锁并行 6. 并行编程常用框架:OpenMP 与 Intel TBB 7. 被忽视的访存优化:内存带宽与 /6/3/e663b1a918b94a0dc8c52ed2434c6082/p7_1.jpg) ## 模板函数:默认参数类型 但是如果模板类型参数 T 没有出现在函数的参数中,那么编译器就无法推断,就不得不手动指定了。 但是,可以通过 • template• 表示调用者没有指定时,T 默认为 int。 8 int main() { 9 sum(b) << std::endl; } ## 为什么要支持整数作为模板参数:因为是编译期常量 - 你可能会想,模板只需要支持 class T 不就行了?反正 int N 可以作为函数的参数传入,模板还不支持浮点。 • templatevoid func(); 0 码力 | 82 页 | 12.15 MB | 2 年前3
KCL: Rust 在编译器领域的实践与探索## RUST CHINA CONF 2023 第三届中国Rust开发者大会 6.17-6.18 @Shanghai ## KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 ## 😍 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 ## 01 KusionStack 与 KCL ## KusionStack是什么 badd1b5abffd9fb8525138fc88bca0/p9_2.jpg) ## 2 KCL 编译器架构升级 Python 代码翻译 Source Code Python code 栈式虚拟机 Source Code AST Bit code VM Rust 编译器 Source Code AST LLVM IR Native/WASM ## R ## 我们遇到了哪些问题? ## 01 稳定性提升 源于 Rust 强大的编译检查和错误处理方式,更少的 Bug 03 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 ## 02 66% 端到端编译执行性能提升了66% ## 04 50% 语言编译器编译过程平均内存使用量变为原来 Python 版本的一半 ## Case1: 单文件编译 > https://github.0 码力 | 25 页 | 3.50 MB | 2 年前3
通过SSA的解释执行窥探Golang编译之一角GCN ## 通过SSA的解释执行窥探Golang编译之一角  丁尔男 武汉航天远景 产品总监 凹语言 联合发起人 PLOC 联合发起人 一切可编译为 WebAssembly 的,终将被编译为 WebAssembly。 2a # WebAssembly 机械工业出版社 China Machine Press ## 目录 Golang 编译流程简介 01 SSA 解释执行 02 基于 SSA 的应用 03 ## Golang 编译流程简介 源代码 抽象语法树 抽象语法树(带语义信息) 静态单赋值 目标代码 ## Golang 编译流程简介 源代码 语法解析,生成抽象语法树(Abstract Syntax Tree,AST),涉及的包: go/token 词法单元定义 go/scanner 词法扫描 抽象语法树(带语义信息) go/ast 抽象语法树定义 go/parser 语法解析 静态单赋值 目标代码 ## Golang 编译流程简介 源代码 抽象语法树 抽象语法树(带语义信息) 静态单赋值 目标代码 $ 1 + 2 * 3 $ *ast.BinaryExpr (+) $ ^{*} $ ast.BasicLit0 码力 | 30 页 | 1.50 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化## AMD # 从汇编角度看编译器优化 by 彭于斌 (@archibate) 往期录播:https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码:https://github.com/parallel101/course 的压力。 • 因此 64 位比 32 位机器相比,除了内存突破 4GB 限制外,也有一定性能优势。 # 8 位,16 位,32 位,64 位版本 al0 码力 | 108 页 | 9.47 MB | 2 年前3
JavaScript 正则表达式迷你书 老姚 - v1.1纵向模糊匹配 1.2. 字符组 1.2.1. 范围表示法 1.2.2. 排除字符组 1.2.3. 常见的简写形式 1.3. 量词 1.3.1. 简写形式 1.3.2. 贪婪匹配与惰性匹配 1.4. 多选分支 1.5. 案例分析 1.5.1. 匹配 16 进制颜色值 1.5.2. 匹配时间 1.5.3. 匹配日期 1.5.4. window 操作系统文件路径 4.1. 没有回溯的匹配 ..... 38 4.2. 有回溯的匹配 ..... 39 4.3. 常见的回溯形式 ..... 41 4.3.1 贪婪量词 ..... 42 4.3.2 惰性量词 ..... 42 4.3.3 分支结构 ..... 43 4.4. 本章小结 ..... 44 5. 第五章 正则表达式的拆分 ..... 46 5.1. 结构和操作符 ... [Image](/uploads/documents/b/d/b/a/bdba1941e04ad4fdcab42d2d37c0ec3b/p14_1.jpg) ##### 1.3.2. 贪婪匹配与惰性匹配 看如下的例子: var regex = /\d{2,5}/g; var string = "123 1234 12345 123456"; console.log(string0 码力 | 89 页 | 3.42 MB | 1 年前1
JavaScript 正则表达式迷你书 老姚 - v1.0纵向模糊匹配 1.2. 字符组 1.2.1. 范围表示法 1.2.2. 排除字符组 1.2.3. 常见的简写形式 1.3. 量词 1.3.1. 简写形式 1.3.2. 贪婪匹配与惰性匹配 1.4. 多选分支 1.5. 案例分析 1.5.1. 匹配 16 进制颜色值 1.5.2. 匹配时间 1.5.3. 匹配日期 1.5.4. window 操作系统文件路径 4.1. 没有回溯的匹配 ..... 38 4.2. 有回溯的匹配 ..... 39 4.3. 常见的回溯形式 ..... 41 4.3.1 贪婪量词 ..... 42 4.3.2 惰性量词 ..... 42 4.3.3 分支结构 ..... 43 4.4. 本章小结 ..... 44 5. 第五章 正则表达式的拆分 ..... 46 5.1. 结构和操作符 ... [Image](/uploads/documents/d/6/9/c/d69c17c20af1c1741e35d11366531ba6/p14_1.jpg) ##### 1.3.2. 贪婪匹配与惰性匹配 看如下的例子: var regex = /\d{2,5}/g; var string = "123 1234 12345 123456"; console.log(string0 码力 | 89 页 | 3.42 MB | 1 年前1
共 765 条
- 1
- 2
- 3
- 4
- 5
- 6
- 77













