learningmachine |
| C++ • learningmachine c++ 对象构造的 “complete object constructor” 和 “base object constructor”? 2022 年 3 月 30 日 • 最后回复来自 learningmachine | 2 |
| 程序员 • learningmachine c++哈希表的问题 2022 年 1 月 10 日 • 最后回复来自 learningmachine | 11 |
| 程序员 • learningmachine Histogram(Prometheus)指标类型如何设置 bucket 呢? 2021 年 5 月 15 日 • 最后回复来自 guyeu | 1 |
| 程序员 • learningmachine c++ blade 怎么导出 compile_commands.json 文件呢? 2021 年 3 月 6 日 • 最后回复来自 learningmachine | 2 |
learningmachine 最近回复了
| 回复了 shanks02 创建的主题 › 开通了个人博客,欢迎 V 友们交换友链哈~ Golang Lua OS2022 年 4 月 23 日 |
| 回复了 learningmachine 创建的主题 › c++ 对象构造的 “complete object constructor” 和 “base object constructor”?2022 年 3 月 30 日 |
@3dwelcome 谢谢你的方法
我在本地用 gdb 调试了一下,发现 https://godbolt.org/z/6q1GEeqzW 这个 demo 里面的构造就是调用的 ABI 标识符号是 _ZN1AC2Ev ( c++filt 后是 A::A()),根据 ABI ( https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-special-ctor-dtor )的解释,应该是 “base object constructor”,和 goltbolt 的结果有些不一致,我猜测是平台的问题。
后面我在 goltbolt 中发现 Filter 选项会把 "Unused labels" 给过滤掉,取消过滤后找到了原因。
有一段:
.weak _ZN1AC1Ev
.set _ZN1AC1Ev,_ZN1AC2Ev
demangle 后是:
.weak A::A() [complete object constructor]
.set A::A() [complete object constructor],A::A() [base object constructor]
将 A::A() [complete object constructor] 指向 A::A() [base object constructor]。
在目前这种情况下,这两种 constructor 应该是相同的
我在本地用 gdb 调试了一下,发现 https://godbolt.org/z/6q1GEeqzW 这个 demo 里面的构造就是调用的 ABI 标识符号是 _ZN1AC2Ev ( c++filt 后是 A::A()),根据 ABI ( https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling-special-ctor-dtor )的解释,应该是 “base object constructor”,和 goltbolt 的结果有些不一致,我猜测是平台的问题。
后面我在 goltbolt 中发现 Filter 选项会把 "Unused labels" 给过滤掉,取消过滤后找到了原因。
有一段:
.weak _ZN1AC1Ev
.set _ZN1AC1Ev,_ZN1AC2Ev
demangle 后是:
.weak A::A() [complete object constructor]
.set A::A() [complete object constructor],A::A() [base object constructor]
将 A::A() [complete object constructor] 指向 A::A() [base object constructor]。
在目前这种情况下,这两种 constructor 应该是相同的
| 回复了 chuanqirenwu 创建的主题 › 博客改版,有没有极简风的博客主题推荐参考?2022 年 3 月 26 日 |
@learningmachine 我 markdown 写失败了,博客地址是 https://pokpok.ink/ ,主题是 hugo 的 DoIt
| 回复了 chuanqirenwu 创建的主题 › 博客改版,有没有极简风的博客主题推荐参考?2022 年 3 月 26 日 |
| 回复了 learningmachine 创建的主题 › c++哈希表的问题2022 年 1 月 11 日 |
| 回复了 learningmachine 创建的主题 › c++哈希表的问题2022 年 1 月 11 日 |
@GeruzoniAnsasu 我去看了下我贴的地址,很抱歉,确实是指错地方了。
首先谢谢你认真的回答,以及对视频中提到的点的解释。
我在看视频的时候也是想到 「相邻槽已经被读入 cache 了」,所以在想会不会快一些,所以想找些轮子做一下 benchmark 看下是不是真的会快一些。
第一点代码实现的角度和第二点线性探查的聚集的问题,如果不提醒确实很容易忽视这些问题都存在。
第四点的 key+ptr 的实现很精彩,我之前也搜索过一些回答,线性探查的实现会限制于数组大小,而 key+ptr 这种方式却不会。
https://stackoverflow.com/questions/2556142/chained-hash-tables-vs-open-addressed-hash-tables
第三点中的经典实现是指 key+value 组成的结构体放在一个 hash 的 bucket 里面吗?如果是这样的话,确实是比视频中的方式,即再访问一次内存要好。
很厉害的回答!
首先谢谢你认真的回答,以及对视频中提到的点的解释。
我在看视频的时候也是想到 「相邻槽已经被读入 cache 了」,所以在想会不会快一些,所以想找些轮子做一下 benchmark 看下是不是真的会快一些。
第一点代码实现的角度和第二点线性探查的聚集的问题,如果不提醒确实很容易忽视这些问题都存在。
第四点的 key+ptr 的实现很精彩,我之前也搜索过一些回答,线性探查的实现会限制于数组大小,而 key+ptr 这种方式却不会。
https://stackoverflow.com/questions/2556142/chained-hash-tables-vs-open-addressed-hash-tables
第三点中的经典实现是指 key+value 组成的结构体放在一个 hash 的 bucket 里面吗?如果是这样的话,确实是比视频中的方式,即再访问一次内存要好。
很厉害的回答!
| 回复了 learningmachine 创建的主题 › c++哈希表的问题2022 年 1 月 9 日 |
@liberize 谢谢,我去了解一下
| 回复了 learningmachine 创建的主题 › c++哈希表的问题2022 年 1 月 9 日 |
@lookcos 谢谢回答,其实我更加希望找到一个关于用 open addressing 实现的库
| 回复了 learningmachine 创建的主题 › c++ blade 怎么导出 compile_commands.json 文件呢?2021 年 3 月 8 日 |
谢谢你,不好意思啊,很多地方都搜索过,文档也看了,忘记 google 这种最简单方法