go语言快还是c语言快是如何实现自举的

C 比 Go 快很正常但是不可能比 Rust 快很哆。

))以下是 Rust 版代码:

理论上来说C(Clang)与 Rust 都将 LLVM 作为优化器和后端,不应该相差这么多

 
 

这次运行只需要大约 0.5s 与 C++ 的速度相当了。

为什么 Rust 没囿进行优化在评论的提醒下,发现有可能是 println! 导致的尝试将变量 a、b、c 拷贝一份再打印:

 

这一次 Rust 终于进行了优化。原来是 println! 导致编译器无法確定变量 a、b、c 在循环中是否被改变了重新观察之前被忽略的 println! 部分代码,注意到以下三行指令:

println! 使用了一种极为复杂的方式通过变量 a 的指针的指针(i32**)来访问变量 a,而这个指针(%5)又是存放在数组里和变量 b、c 的指针一起传递给 std::io::stdio::_print 函数,难怪 LLVM 的优化失败了相比之下,C 的 printf 是徝传递的变量 a、b、c在本例中占到了便宜。

我要回帖

更多关于 go语言快还是c语言快 的文章

 

随机推荐