小编Wei*_*nde的帖子

Windows malloc替换(例如,tcmalloc)和动态crt链接

使用多个DLL和QT的C++程序应该配备malloc替换(如tcmalloc),以解决可以验证由Windows malloc引起的性能问题.使用linux,没有问题,但是对于Windows,有几种方法,我发现它们都没有吸引力:

1.将新的malloc放入lib并确保首先链接它(其他SO问题)

这样做的缺点是,例如strdup仍将使用旧的malloc,而free可能会使程序崩溃.

2.使用lib.exe(Chrome)从静态libcrt库中删除malloc

铬/铬进行测试/使用(?),但缺点是它只能与静态连接crt一起使用.如果一个系统库与msvcrt动态链接,则静态链接存在问题,堆分配/释放中可能存在不匹配.如果我理解正确,tcmalloc可以动态链接,以便所有自编译的dll都有一个公共堆(这很好).

3.补丁crt源代码(firefox)

Firefox的jemalloc显然修补了Windows CRT源代码并构建了一个新的crt.这又有上面的静态/动态链接问题.

人们可以考虑使用它来生成动态MSVCRT,但我认为这是不可能的,因为许可证禁止提供具有相同名称的修补MSVCRT.

4.在运行时动态修补加载的CRT

一些商业内存分配器可以做这样的魔术.tcmalloc也可以,但这看起来相当丑陋.它有一些问题,但它们已被修复.目前,使用tcmalloc它不能在64位窗口下工作.

有更好的方法吗?任何意见?

windows malloc dll crt msvcrt

23
推荐指数
3
解决办法
1万
查看次数

删除C++ - STL/Boost调试符号(...或不创建它们)

Linux/Gcc/LD - 工具链.

我想从库和可执行文件中删除STL/Boost调试符号,原因有两个:

  1. 对于大型程序,链接变得非常慢
  2. 调试跳转到stl/boost代码,这很烦人

对于1.增量链接将是一个很大的改进,但AFAIK ld不支持增量链接.在1999 dr.dobb的期刊中有一个解决方法"伪增量链接"(不再在网络中,但在archive.org(想法是将所有内容放在动态库中,并将所有更新的目标文件放在第二个中)首先加载)但这不是一般的解决方案.

对于2.有一个脚本在这里,但一)它并没有为我工作(它没有删除符号),B),它是非常缓慢的,因为它工作在管道的末端,而这将是更有效的去除先前的符号.

显然,其他调试符号应保持不变.

c++ debugging stl

5
推荐指数
1
解决办法
2650
查看次数

如何使用 openpyxl 将文本框添加到 Excel

我想使用 openpyxl 将文本框添加到 Excel 文件。似乎有一些支持,因为有模块 openpyxl.drawing.text,但我找不到示例/文档,如何使用它们。

有一个悬而未决的问题:使用 openpyxl 将文本框添加到 Excel 图表,但这似乎与图表中的绘图文本框相关。我想画出与细胞相关的它们,见下文。

在此输入图像描述

python excel openpyxl

5
推荐指数
0
解决办法
1792
查看次数

标签 统计

c++ ×1

crt ×1

debugging ×1

dll ×1

excel ×1

malloc ×1

msvcrt ×1

openpyxl ×1

python ×1

stl ×1

windows ×1