摘要: 1.简介 1.1名词解释 TCMalloc全称Thread-Caching Malloc,即线程缓存的malloc,是Google开发的内存分配器,实现了高效的多线程内存管理器,用于替代系统的内存分配相关的函数(malloc,free,new,new[]等).整个 TCMalloc对内存的管理实现了 阅读全文
posted @ 2024-04-16 15:10 liyakai 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 简单介绍各种操作系统上的IO多路复用的实现原理和网络库实现模型. 阅读全文
posted @ 2024-04-16 14:15 liyakai 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 7.1 Template 7.1.1 Template 的 "具现"行为 C++ Standard 已经禁止编译器将"声明一个指针指向某个 template class" " 具现 "出来.如果不是指针,而是引用,则会将template"具现"出来. 一个 class object 的定义 都会导致 阅读全文
posted @ 2022-02-17 12:19 liyakai 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 6.1 对象的构造和解构 一般而言,会把 object 尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作和摧毁操作. 6.1.1 全局对象 C保证,一定会在 main()函数中第一次用到 全局对象之前,把它构造出来,而在 main() 函数结束之前把 它摧毁掉. C中所有的g 阅读全文
posted @ 2022-02-17 12:18 liyakai 阅读(26) 评论(0) 推荐(0) 编辑
摘要: C++ 支持三种类型的 member functions: static, nonstatic, virtual。 4.1 Member 的各种调用方式 4.1.1 Nonstatic Member Functions(非静态成员函数) 非静态成员函数会被内化为nonmember 的形式.步骤: 改 阅读全文
posted @ 2022-02-17 12:17 liyakai 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 5.0.1 纯虚函数的存在 纯虚函数可以不经由虚拟机制静态地调用一个纯虚函数,纯虚析构函数除外,class 设计者一定得定义它[纯虚析构函数]. 因为每一个 derived class destructor 会被编译器加以扩展,以静态调用的方式调用其 "每一个 virtual base class" 阅读全文
posted @ 2022-02-17 12:17 liyakai 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 3 Data 语义学 对于空的 class,编译器会安插 1 byte的char,用以区分两个不同的object. 对象object的大小会受到三个因素的影响: 语言本身所造成的的额外负担(overhead) 当语言支持 virtual base classes时,就会导致一些额外负担.在 deri 阅读全文
posted @ 2022-02-17 12:16 liyakai 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 2. 构造函数语义学 关键词 explicit 之所以被导入这个语言,就是为了提供给程序员一种方法,使他们能够制止 "单一参数的constructor"被单做一个 conversion运算符.[说人话就是explicit关键字的作用就是防止类构造函数的隐式自动转换] 2.1 Default Cons 阅读全文
posted @ 2022-02-17 12:15 liyakai 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 1 关于对象 加上封装后的布局成本 封装特性不会带来任何空间或执行器的不良回应,C在布局以及存取时间上主要的额外负担是由 virtual 引起的,包括: 1. virtual function 机制 用以支持一个有效率的"执行期绑定"(runtime binding) 2. virtual base 阅读全文
posted @ 2022-02-17 12:14 liyakai 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 常用命令: perf record -e cpu-clock -a -g -p $pid sleep 10 >cpu火焰图 perf record -e syscalls:sys_enter_mmap -a -g -p $pid -- sleep 10 >内存火焰图 perf script -i p 阅读全文
posted @ 2022-01-21 18:27 liyakai 阅读(101) 评论(0) 推荐(0) 编辑