2013-08-01 4 views
-5

동일한 콘솔 응용 프로그램을 여러 언어로 작성했습니다. 응용 프로그램은 사용자에게 숫자를 묻고 1에서 해당 숫자까지 계산하여 각 숫자를 콘솔의 별도 행에 인쇄합니다. 실제로 vb.net이 프로그래밍 언어에서 최악의 상태가 될 것으로 예상했는데, 궁금한 점은 그것이 실제로는 가장 빠르다는 것입니다. - (VB보다 약 5 배 느린)이 VS 디버거를 통해 실행vb.net이 왜 그렇게 빠른가요?

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.Net

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

하스켈은 - 컴파일과에서 실행 콘솔 (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 

자바 스크립트 - 파이어 폭스에서 방화 광구를 실행합니다. 한 VB) :

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

비 펀지는 - 크롬/자바 스크립트 (파이어 폭스보다 더 빨리를 사용하여 through this 웹 사이트를 실행하지만, 여전히

&1-0>1+:.134*+,\:#[email protected] 
    ^  \-1< 

그래서 간단하게, 무엇보다 빠르게 다른보다 VB 솔루션이) VB보다 느린 언어?

+11

1. 벤치 마크 결과는 무엇입니까? 2. 모든 샘플을 똑같이 만드는 것은 어떻습니까? 3. 루핑과 수학보다는 콘솔 쓰기를 벤치마킹하고 있다는 것을 알고 있습니까? –

+1

전혀 동의합니다. 결과를 인쇄하는 것이이 코드에서 가장 느린 것입니다. 게다가, 당신은 Release not Debug 모드에서 시도해야한다고 생각합니다. 디버그의 C++ 실행 파일에는 추가 정보가 들어있어 속도가 느릴 수 있습니다. – user2468852

+0

@Michael Petrotta 글쎄, 실제로 시각적으로 얼마나 빨리 C++을 볼 수 있는지 알고 싶었습니다. VB보다 어디서나 가능한 한 빨리 그리고 짧게 썼습니다. C++, surprice가 VB보다 더 느릴 때 나는 하스켈이 컴파일러임을 자랑하기 때문에 다른 언어로도 같은 프로그램을 작성했습니다. 나는 언어를 같은 수로주고 simuntainlusly 여러 번 그들을 실행하여 서로 다시 서로를 테스트했습니다. – BlackCap

답변

5

왜 VB.NET이 가장 느릴 것으로 예상합니까? 일단 컴파일되면 VB.NET 프로그램은 C# 프로그램이며 C# 프로그램과 동일합니다. .NET JIT 컴파일러가 컴파일 한 후에는 매우 최적화 된 원시 코드로 컴파일됩니다. Javascript는 해석 된 언어이고 방화 광은 인터프리터/디버거이므로 코드가 느려지므로 디버그 정보를 추적 할 수 있습니다. C++ 디버거에서도 마찬가지라고 생각합니다. 디버거없이 C++ 프로그램을 실행할 때 속도가 느린 결과가 있습니까?

+0

컴파일 된 C++은 여전히 ​​디버거를 사용하는 VB보다 느립니다. – BlackCap

-1

Release에서 최적화 및 실행을 요청 받았을 때 디버거가 연결되지 않아서 C++이 느려졌습니다. 이유는 C++가 캐시 된 언어가 아니기 때문에 매 단계마다 모든 것을 해결해야합니다. CIL과 비교해보십시오. 닷넷 프레임 워크 (.NET Framework) 동일한 작업이며 차이점을 찾아냅니다. 플러스 C++는 오래된 언어입니다.

+1

현실과 관련된이 대답의 일부를 찾기가 어렵습니다. –

관련 문제