![]() |
1
4
根本原因正如大多数人所说,“为什么同一个程序在两种不同的语言中表现不同?”,答案几乎总是:“因为它们不是同一个程序。” 它们在高层意图上可能类似,但它们的实现差异很大,因此可以区分它们的性能。 有时它们在控制方式上有所不同(例如,在一个程序中使用数组,在另一个程序中使用哈希集),有时在控制方式上有所不同(例如,与编译的C函数调用相比,您使用的是CPython,并且您正在经历解释和动态方法调度的开销)。 一些示例差异在这种情况下,我可以看到一些显著的差异:
一般来说,您会注意到一种趋势,Swift优化了安全性和开发人员体验,而C优化了接近硬件的性能。Swift优化允许开发人员表达其对业务逻辑的意图,而C优化允许开发人员表达其对运行的最终机器代码的意图。
Swift中通常有“逃生舱口”,可以让您牺牲安全性或便利性来获得类似C的性能。这听起来很糟糕,但可以说,你可以认为C只是在使用这些逃生舱口。没有
提高性能您可以通过以下方式在达到性能平价方面取得很大进展:
这些不是你通常应该做的事情。如果需要提高关键代码的性能,它们只是存在的可能性。
例如,Swift公约通常使用
|
![]() |
2
4
你忘了打开优化器。在没有优化的情况下,Swift比C慢得多,但在这样的情况下,优化后大致相同:
这是没有做任何工作来改进您的代码(
|
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |