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 | 1 月前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 | 1 月前3
05 PHP基本语法 - 变量、数组、字符串 杨亮 《PHP语⾔程序设计》## PHP基本语法 —变量、数组、字符串 杨亮 ## Web基本流程 请求页面 对应文件 获取数据 PC Mobile HTTP 请求 html css javascript 服务器 (Apache) (IIS) html css javascript 后端脚本 (PHP) (JSP) (ASP) 数据库(MySQL)(Oracle)(Access) 返回页面 PHP code :) 13:47, 17th February 2015 5 6 ## PHP中的变量 - 无需声明,直接使用 • 变量名:以$开头 • 字母(大小写敏感) - 下划线 • 数字(不能开头) - 动态变量类型,赋值时动态改变 - 变量的变量,变量名动态改变 1 ## 常量 - 为什么要有常量:代码可读性和规范 - 通常大写,用以和变量区分 - 非$开头,直接使用 • 只能存放标量 - 布尔、整形、浮点和字符串 1 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.BasicLit
0 码力 |
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 位版本
al
0 码力 |
108 页 |
9.47 MB
| 2 年前
3
The Zig Programming Language 0.6.0 Documentation
0 码力 |
214 页 |
5.37 MB
| 2 年前
3
06 PHP基本语法 — 条件、循环、函数 杨亮 《PHP语⾔程序设计》
PHPING
PHPCHINA.COM
—条件、循环、函数 杨亮
## 程序的基本结构
程序
运算(+ - x / & | ! ..)
输入
逻辑(条件、循环、递归)
输出
辅助(变量、数组、函数)
小测验
用你熟悉的程序找出
1~1000中的所有质数
## 我们直接看代码好了
';
}
if ($totalqty == 0) {
echo '
变量名不至于太长(作用域)
## PHP中的函数

";
}
}
?>
## 变量作用域
- 局部变量(函数中定义),从定义处到函数结束
- 全局变量(非函数中定义),从定义出到文件尾,但不包括其中的函数
- 超全局变量(下节课会讲到),所以地方
- require和include都不影响变量作用域,只是起到了将代码片段组合的作用
- 局部变量加上关键字global,可令其变为全局变量,即在函数外也可以访问
## 通过函数实现递归
0 码力 |
25 页 |
1.30 MB
| 2 年前
3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













