我用几种语言编写了相同的控制台应用程序.应用程序向用户询问一个数字,并从1到该数字进行计数,在控制台的单独行上打印每个数字.我实际上期望vb.net在编程语言中变得最糟糕,让我好奇的是它没有,它实际上是最快的.
VB.Net - 运行VS调试器:
Sub Main()
Console.Write("Give me a number, any number: ")
For i = 1 To CInt(Console.ReadLine)
Console.WriteLine(i)
Next
Console.ReadLine()
End Sub
Run Code Online (Sandbox Code Playgroud)
C++ - 运行VS调试器(比VB慢大约5倍):
#include <iostream>
using namespace std;
int main() {
cout << "Give me a number, any number: ";
int number; cin >> number;
cout << '\n';
for (int i = 1; i <= number; i++) cout << i << '\n';
while (true) {}
}
Run Code Online (Sandbox Code Playgroud)
Haskell - 从控制台编译并运行(仅比VB略慢):
import System.IO
import Control.Monad
main = do
putStr "Give me a number, any number: "
hFlush stdout
input <- getLine
mapM print [1..read input]
return 0
Run Code Online (Sandbox Code Playgroud)
Javascript - 在firefox中运行firebug(比VB慢很多):
for (i = 0; i<100000; i++){ console.log(i); }
Run Code Online (Sandbox Code Playgroud)
Befunge - 使用chrome/javascript 运行这个网站(比firefox快,但仍比vb慢)
&1-0>1+:.134*+,\:#v_@
^ \-1<
Run Code Online (Sandbox Code Playgroud)
那么简单地说,是什么让vb解决方案比其他语言更快?
你为什么期望VB.NET最慢?编译完成后,VB.NET程序就是一个CIL程序,与ac#程序相同.在.NET JIT编译器编译之后,它被编译为本机代码,并进行了相当优化.Javascript是一种解释型语言,firebug是一个解释器/调试器,它会降低代码的速度,因此您可以跟踪调试信息.我希望C++调试器也是如此.当你运行没有调试器的c ++程序时,你得到的结果会变慢吗?