2.1.5 Go语言编译器简介中国 上海 / 2020-11.21-22 Go语言编译器简介 ’ alt=‘OCR图片’/> 关于我 Contributors to golang/go · GitHub 给Go编译器提交过127个补丁,累计六万余行; 拥有Go官方git仓库提交权限; 全球贡献者排名长期处于前50名; 世界上90%的gopher都用过我写的代码; 编译器的重要性 只有1%的程序员懂汇编语言 汇编语言无法构建大型系统 汇编语言无法构建大型系统 操作系统内核也需要编译器才能运行起来 编译理论是图灵奖大户,仅次于计算复杂度理论 操作系统有后门,编译器的后门更致命 编译器的难题:任务爆炸 N种语言 * M种机器 = N*M 个任务 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 两个方案 $$ N \mathrm {种 语 言} + M \mathrm {种 机 器} = {个 任 务} $$ 其它语言 -> C -> 各个机器 各个语言 -> x86 -> 其它机器 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 通用(非专用)编译器的方案 AST = Abstract Syntax Tree抽象语法树 SSA = Single Static Assignment单静态赋值 IR = Intermediate Representation中间表示0 码力 | 36 页 | 1.63 MB | 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是什么 add1b5abffd9fb8525138fc88bca0/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 ## 我们遇到了哪些问题? 强大的编译检查和错误处理方式,更少的 Bug 03 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 ## 02 66% 端到端编译执行性能提升了66% ## 04 50% 语言编译器编译过程平均内存使用量变为原来 Python 版本的一半 ## Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase ## …0 码力 | 25 页 | 3.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
C++ Memory Model: from C++11 to C++230 码力 | 112 页 | 5.17 MB | 1 年前3
现代C++ 教程:高速上手C++11/14/17/20本书每章最后还加入了少量难度极小的习题,仅用于检验你是否能混合运用当前章节中的知识点。你可以在这里找到习题的答案,文件夹名称为章节序号。 ## 第 1 章 迈向现代 C++ 编译环境:本书将使用 clang++ 作为唯一使用的编译器,同时总是在代码中使用 -std=c++2a 编译标志。 > clang++ -v Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: Bjarne Stroustrup C++ 历史 C++ 特性在 GCC/Clang 等编译器中的支持情况 C++98 与 C99 之间的区别 ## 第 2 章语言可用性的强化 当我们声明、定义一个变量或者常量,对代码进行流程控制、面向对象的功能、模板编程等这些都是运行时之前,可能发生在编写代码或编译器编译代码时的行为。为此,我们通常谈及语言可用性,是指那些发生在运行时之前的语言行为。 ### 出现的目的是为了替代 NULL。在某种意义上来说,传统 C++ 会把 NULL、0 视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 $ ((void*)0) $ ,有些则会直接将其定义为 0。 C++ 不允许直接将 void * 隐式转换到其他类型。但如果编译器尝试把 NULL 定义为 $ ((void*)0) $ ,那么在下面这句代码中: char *ch =0 码力 | 83 页 | 2.42 MB | 2 年前3
2022年美团技术年货 合辑美团外卖推荐情境化智能流量分发的实践与探索 大众点评搜索相关性技术探索与实践 美团 SemEval2022 结构化情感分析跨语言赛道冠军方法总结 检索式对话系统在美团客服场景的探索与实践 端智能在大众点评搜索重排序的应用实践 对话摘要技术在美团的探索(SIGIR) 异构广告混排在美团到店业务的探索与实践 短视频内容理解与生成技术在美团的创新实践 美团搜索中查询改写技术的探索与实践 美团内部讲座 前言 众所周知,在搜索、推荐、广告等大规模工业界应用领域,为了平衡性能和效果,排序系统普遍采用级联架构 $ ^{[1,2]} $ ,如下图1所示。以美团搜索排序系统为例,整个排序分为粗排、精排、重排和混排层;粗排位于召回和精排之间,需要从千级别候选item集合中筛选出百级别item集合送给精排层。 0 码力 | 1356 页 | 45.90 MB | 2 年前3
PyConChina2022-杭州-ARM芯片的Python+AI算力优化-朱宏林## Python for Good >>> PyCon China 2022 ARM 芯片的 Python + AI 算力优化 主讲人:朱宏林-阿里云程序语言与编译器团队 Python  HELLO WORLD [Image](/uploads/documents/7/e/7/0/7e7069c0246e16402e9a8fd670f8e842/p7_4.jpg) ## GEMM ## • 优化 GEMM • 内存布局:矩阵分块;重排 • 向量化指令:AVX、NEON C  [Image](/uploads/documents/7/e/7/0/7e7069c0246e16402e9a8fd670f8e842/p8_5.jpg) ## GEMM 例子 ## • 优化 GEMM • 内存布局:矩阵分块;重排 • 向量化指令:AVX、NEON for (int j = 0; j < N; j++) { for (int i = 0; i < M; i++) {0 码力 | 24 页 | 4.00 MB | 2 年前3
WebAssembly 简介 - 陈思衡@Shanghai WebAssembly 介绍 ## WebAssembly 简介 WebAssembly(简称 Wasm)是一种新的编译目标,帮助在 web 中运行高性能应用。它是一种低级语言,设计为编译器目标,以在 web 浏览器中高效运行。 ## WebAssembly 简介 ## #高性能 WebAssembly 代码可以以接近原生的速度运行,且具有很小的二进制大小和快速加载速度。 ## # Mozilla、Google、Microsoft 等主要浏览器供应商共同设计。它现已在所有主流浏览器中实现,包括 Chrome、Firefox、Safari 和 Edge。 ## # 多语言支持 现在多种语言都有编译器支持 WebAssembly,如 C/C++、Rust、Go、Zig 等。 ## WebAssembly 简介 ## WebAssembly 机制 ## memory Wasm 的 memory ); println("[wasm] exit"); } Async Wasm 解决方案 ## 基于 Asyncify(Binaryen) Binaryen 是一个编译器基础架构库,提供了一套用于处理 WebAssembly 的工具。其中一个功能是 asyncify,它允许将同步的 WebAssembly 代码转换为异步代码。就像 rust 对 async function0 码力 | 24 页 | 773.46 KB | 2 年前3
openEuler 23.09 技术白皮书/d/c/7/f/dc7fd79a5ea7f843f1e868bb29ea8f1a/p26_2.jpg) 热补丁应用范围 ## 新增特性 支持容器内构建补丁 通过使用 ebpf 技术监控编译器进程,实现无需创建字符设备、纯用户态化获取热补丁变化信息,并允许用户在多个不同容器内进行并行热补丁编译。 用户可以通过安装不同 rpm 包(syscare-build-kmod 或 syscare-build-ebpf)来选择使用 实现,syscare-build 进程将会自适应相应底层实现。 ## 约束限制 当前仅支持 64 位系统。 当前仅支持 ELF 格式的热修复,不支持解释型语言,不支持纯汇编修改。 • 当前仅支持 GCC / G++ 编译器,且不支持交叉编译。 暂不支持 LTO 优化。  流程设计图 ## 二 进制文件合并 目前只支持全静态合并场景,将应用与其依赖的动态库合并为一个二进制,并进行段级别的重排,将多个离散的代码段 / 数据段合并为一个,提升应用性能。 后续希望提供其他两种方式供用户选择: · 支持运行时合并动态库场景。 · 支持部分合并场景,例如:内部闭源产品二进制不能合并 LGPL0 码力 | 52 页 | 5.25 MB | 1 年前3
how webpack works0 码力 | 26 页 | 2.35 MB | 2 年前3
共 413 条
- 1
- 2
- 3
- 4
- 5
- 6
- 42













