-5

我用多种语言编写了相同的控制台应用程序。应用程序要求用户输入一个数字并从 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

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) {}
}

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

Javascript - 在 firefox 中运行 firebug(比 VB 慢很多):

for (i = 0; i<100000; i++){ console.log(i); }

Befunge - 使用 chrome/javascript 运行这个网站(比 firefox 快,但仍然比 vb 慢)

&1-0>1+:.134*+,\:#v_@
    ^          \-1<

这么简单,是什么让 vb 解决方案比其他语言更快?

4

2 回答 2

6

为什么你认为 VB.NET 是最慢的?一旦编译,VB.NET 程序就是一个 CIL 程序,与 ac# 程序相同。.NET JIT Compiler 编译后,编译为原生代码,相当优化。Javascript 是一种解释性语言,而 firebug 是一种解释器/调试器,它会减慢代码速度,以便您可以跟踪调试信息。我希望 C++ 调试器也是如此。当您在没有调试器的情况下运行 c++ 程序时,您会得到较慢的结果吗?

于 2013-08-01T22:52:36.380 回答
-1

当要求在 Release 下优化和运行时,c++ 速度较慢,没有附加调试器,原因,c++ 不是缓存语言,它必须每一步都解决所有问题。与 CIL 相比,.Net Framework 意识到它是相同的操作并解决了差异。加上 c++ 是一门古老的语言。

于 2013-10-22T02:07:53.617 回答