会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
牛犁heart
Stay Hungry,Stay Foolilsh
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
3
4
5
6
7
8
9
10
11
···
42
下一页
2022年9月28日
实现C++智能指针
摘要: 在对象切片一文中,提到可使用充当智能指针的类shape_wrapper,可以简化资源的管理,从根本上消除资源(包括内存)泄漏的可能性,本节来看下如何将shape_wrapper改造成一个完整的智能指针。 先来看下这个类: class shape_wrapper { public: explicit
阅读全文
posted @ 2022-09-28 08:14 牛犁heart
阅读(156)
评论(0)
推荐(0)
2022年9月27日
应用内存管理:Linux的应用与内存管理
摘要: 应用程序想要使用内存,必须得找操作系统申请,那就有必要先了解下Linux内核怎么管理内存的,然后再去分析应用程序的内存管理细节。 硬件架构 现代计算机体系结构被称为Non-Uniform Memory Access(NUMA),NUMA下物理内存是分布式的,由多个计算节点组成,每个CPU核都会有自己
阅读全文
posted @ 2022-09-27 00:04 牛犁heart
阅读(356)
评论(0)
推荐(0)
2022年9月25日
延迟分配:提供内存利用率的三种机制
摘要: 为了提供内存利用率,有一些奇妙的机制,本节就来介绍下:写时复制,请求调页和mmap系统调用 写时复制 写时复制,可概括为写时复制是一种计算机编程领域中的优化技术(Copy-on-Write,简称COW) 其核心原理是,如果有多个应用同时请求相同资源,会共同获取相同的指针,指向相同的资源。这个资源或许
阅读全文
posted @ 2022-09-25 22:57 牛犁heart
阅读(472)
评论(0)
推荐(0)
对象切片
摘要: C++支持将对象储存在栈上,但很多情况,对象不能,或不应该存储在栈上。比如: 对象很大 对象的大小在编译时不能确定 对象是函数的返回值,但由于特殊的原因,不应使用对象的值返回 常见情况之一是,在工厂方法或其他面向对象编程的情况下,返回值类型是基类(的指针或引用)。 举例:是对工厂方法的简单演示: e
阅读全文
posted @ 2022-09-25 10:55 牛犁heart
阅读(244)
评论(0)
推荐(0)
编译原理:代码生成
摘要: 这编译的最后一步,也就是生成目标代码,则必须跟特定CPU架构相关。 这就是编译器的后端。不过,后端不只是简单地生成目标代码,它还要完成与机器相关的一些优化工作,确保生成的目标代码的性能最高。 本讲将从机器相关的优化入手,看看编译器如何通过指令选择/寄存器分配/指令排序和基于机器代码的优化等步骤,完成
阅读全文
posted @ 2022-09-25 00:41 牛犁heart
阅读(1345)
评论(0)
推荐(0)
2022年9月24日
编译原理:代码优化
摘要: 常见的代码优化方法 对代码做优化的方法有很多,可按照下面两个维度进行分类: 第一个分类维度,是机器无关的优化与机器相关的优化。 机器无关的优化与硬件特征无关,比如把常数值在编译期计算出来(常数折叠)。而机器相关的优化则需要利用某种硬件特有的特征,比如SIMD指令可以在一条指令里完成多个数据的计算。
阅读全文
posted @ 2022-09-24 17:47 牛犁heart
阅读(2431)
评论(0)
推荐(3)
编译原理:中间代码IR
摘要: IR,中间代码(Intermediate Representation,有时也称为Intermediate Code,IC),它是编译器中很重要的一种数据结构。编译器在做完前端工作以后,首先就生成IR,并在此基础上执行各种优化算法,最后再生成目标代码。 IR的用途和层次 设计IR的目的, 是要满足编
阅读全文
posted @ 2022-09-24 14:49 牛犁heart
阅读(6835)
评论(0)
推荐(1)
2022年9月21日
编译原理:运行时机制
摘要: 在语义分析之后,编译过程就开始进入了中后端。 经过前端阶段的处理分析,编译器已经充分理解了源代码的含义,准备好把前端处理的结果(带有标注信息的 AST、符号表)翻译成目标代码了。 如果想做好翻译工作,编译器必须理解目标代码。而要理解目标代码,它就必须要理解目标代码是如何被执行的。通常情况下,程序有两
阅读全文
posted @ 2022-09-21 23:50 牛犁heart
阅读(954)
评论(0)
推荐(0)
2022年9月18日
编译原理:python编译器--运行时机制
摘要: python的运行时机制的核心 -- python对象机制的设计 理解字节码的执行过程 用 GDB 跟踪执行一个简单的示例程序,它只有一行:“a=1”。 对应的字节码如下。其中,前两行指令实现了"a = 1"的功能(后两行是根据Python的规定,在执行完一个模块之后,缺省返回一个None值) PS
阅读全文
posted @ 2022-09-18 15:42 牛犁heart
阅读(1057)
评论(0)
推荐(0)
2022年9月16日
编译原理:python编译器--从AST到字节码
摘要: 首先了解下从AST到生成字节码的整个过程: 编译过程 Python编译器把词法分析和语法分析叫做 "解析(Parse)", 并且放在Parser目录下。 从AST到生成 字节码的过程,才叫做 "编译(Compile)" Python编译工作的主干代码是在**Python/compile.c **,
阅读全文
posted @ 2022-09-16 00:09 牛犁heart
阅读(1685)
评论(0)
推荐(0)
上一页
1
···
3
4
5
6
7
8
9
10
11
···
42
下一页
公告