首先要注意一个问题:优化有两种不同的范畴。一种是细节上的,比如自动向量化、循环展开、分支预测等等,这种通过编译器优化、更换语言也许可以提升效率。另一种是高层的,比如使用更适应应用场景的数据结构、更换不同的处理策略、使用完全不同的算法。这种只能人工完成,甚至可能超出简单优化的范畴,而落入重构的领域。而对于一个运行效率有问题的程序,你只有了解它的实现细节,才能知道它在什么地方有优化问题,应当在什么范畴进行优化。这甚至连单纯地跑profile都未必能看出什么来,更何况仅仅更换语言。