使用多个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位窗口下工作.
有更好的方法吗?任何意见?
Linux/Gcc/LD - 工具链.
我想从库和可执行文件中删除STL/Boost调试符号,原因有两个:
对于1.增量链接将是一个很大的改进,但AFAIK ld不支持增量链接.在1999 dr.dobb的期刊中有一个解决方法"伪增量链接"(不再在网络中,但在archive.org(想法是将所有内容放在动态库中,并将所有更新的目标文件放在第二个中)首先加载)但这不是一般的解决方案.
对于2.有一个脚本在这里,但一)它并没有为我工作(它没有删除符号),B),它是非常缓慢的,因为它工作在管道的末端,而这将是更有效的去除先前的符号.
显然,其他调试符号应保持不变.
我想使用 openpyxl 将文本框添加到 Excel 文件。似乎有一些支持,因为有模块 openpyxl.drawing.text,但我找不到示例/文档,如何使用它们。
有一个悬而未决的问题:使用 openpyxl 将文本框添加到 Excel 图表,但这似乎与图表中的绘图文本框相关。我想画出与细胞相关的它们,见下文。