C隐藏符号会增加重定位时间
我正在尝试优化具有200多个依赖项的库的加载时间.我尝试使用可见性属性隐藏符号,这使我将导出符号的数量减少了30%.
查看精灵直方图,优化后桶的数量保持不变,但成功和不成功的查找减少了很多.布隆过滤器的大小从8kb减少到4kb,但设置的位数从19%增加到24%. 尽管加载时间增加了,我认为这是由于布隆过滤器中设置的位数比之前更高. 看看依赖关系,我可以看到有大约400,000个符号在重定位时被查看到我的库但没有成功. Bloom过滤器用于过滤其中大部分,但由于比特集的数量??较多,误报的数量从3.6%增加到5,76%(我在互联网上找到了这个公式:false positive = bitsets%^ 2) 在优化之前做一些数学我必须搜索我的库14.440误报,并且在优化之后这个数字上升到23.040.即使不成功的查找从1.7减少到1.1,比较的数量仍然比之前更高. 我也用calgrind对它进行了测试,确认优化降低了库的性能.该库本身比以前快2%左右,但重定位时间高出约1%(在ld strcmp调用中从3575000上升到3617000). 我还尝试使用导出映射进一步减少导出符号的数量,这有助于我将导出符号的数量减少50%.但它甚至是最糟糕的.桶的数量是一半,但是不成功的查找将Bloom过滤器大小增加到1.4kk,比特集合为29%,误报率为8.4%. 隐藏符号如何增加重定位时间的比较次数?如果布隆过滤器对结果产生如此大的影响,为什么链接器更愿意减小其大小而不是减少误报率?是否有任何链接器选项可以帮助我? 先感谢您 解决方法
不久之前,我正在为媒体播放器应用寻找类似的东西.
使用直接绑定确实有助于减少符号解析时间. 不确定隐藏符号对布隆过滤器的影响.
据我所知,没有办法调整符号查找中使用的布隆过滤器. 有一些好文章,但没有一个强调调整布隆过滤器. bloom filter elf cost of elf symbol (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |