我有一个很大的Swig Python模块。C++包装器最终大约为320,000 LoC (我猜包括报头)。我现在用-O1编译它,g++生成了一个44MiB大小的二进制文件,大约需要3分钟来编译它。如果我关闭优化(-O0),二进制文件的速度是40MiB,编译需要44秒。
用-O0编译包装器会严重影响python模块的性能吗?在我分析模块在不同优化级别的性能之前,有没有人之前做过这样的分析,或者对它是否重要有任何见解?
据我所知,元组和字符串是不可变的,以允许优化,例如重用不会改变的内存。但是,python中没有包含一个明显的优化,即使元组切片引用与原始元组相同的内存。我知道这个优化是不包括的,因为当我计时下列函数时,所花费的时间就像O(n^2),而不是O(n),因此正在进行完全复制: tup = tuple(range(n))for i in xrange(n):如果实现了这种优化,python的某些行为是否会发生变化?即使原版是不