파스칼이 C언어보다 성능이 좋다는분이 있어서요.....

mastercho의 이미지

long long sum=0;
int i =0;
int startTime = GetTickCount();
for(int j = 0; j<100;j++)
{
sum=0;
for(i=1 ; i<=5000000; i++)
sum+=i;
}
printf("time %d , %ld \n",GetTickCount()-startTime,sum);

이런 코드를 똑같이 파스칼 언어로 짜서 성능을 테스트 하면

파스칼이 2배나 빠른다는분이 계십니다

그러면서 결론이, 파스칼[툴은 델파이] 이 C/C++언어보다 훨씬 빠른 언어라 하시길레

제가 for문 하나로 언어의 성능을 평가하는건 무리라고 해도

계속해서

Quote:
C/C++이 파스칼보다 빠르다는것 증명하라
고 계시네요

배열 조작이나 포인터 조작부분을 저 for문에 넣으면 확실히 C언어가 빠를거라
생각이 드는데

파스칼(델파이)가 없어서 , 증명할 길이 없습니다

C언어 고수분들이 즐비한 이곳에서 , 부디 파스칼(델파이)가 C보다 훨씬 성능이 낫다는 주장하는분의 뜻을 꺾어 주시기를 부탁드립니다

vacancy의 이미지

어차피 퍼포먼스야 컴파일러에 달린 건데요 뭐.
파스칼로 할수 있는건 전부 C로 할 수 있고,
C로 할수 있는건 전부 파스칼로 할 수 있는데. -_-a
언어 자체와 속도를 결부시키는 건 이상한 것 같네요.
( 파스칼로도 배열을 다룬다거나 포인터 쓰는건 자유자재로 쓸 수 있고요. )

이와 별도로, 주제와 상관 없는 이야기이긴 합니다만-
컴파일 속도는 파스칼쪽이 월등하다고 할 수 있습니다.
( 열배 이상 빠른 경우도 많이 있을거라고 생각합니다. )
파서 입장에서는 파스칼쪽이 훨씬 아름답죠.

익명 사용자의 이미지

냉무~

mastercho의 이미지

그러게요 저도 저런 코드를 해석하는 컴파일러의 차이로 인한 성능차이라고 생각하거든요

예를 들면 VC++ 과 gcc 에서도 저 코드를 컴파일해보면
다른 결과가 나오는거와 같다고 생각하거든요

특히 파스칼 자체도 어차피 C언어 컴파일러처럼 네이티브코드를 낸다고 알고 있는데

저 내용을 주장하는분은
마치 비주얼 베이직이 C언어보다 느리다는 관점을
적용시키는 오류를 범하고 있는데.... 도무지 -_-; 말이 안통해서요

뭔가 다른 방법으로 설득을 시켜야 할거 같은데,
방법이 떠오르지 않아서 여기까지 오게되었습니다 ^^;

이 주장을 하던분도 원래는 원래 C언어 쓰는분인데 ,
이거 C/C++이 파스칼보다 빠르다는걸 증명 못하면
아무래도 프로젝트를 파스칼[델파이]로 하게 될거라는데

어째튼 주장하는 내용이 , 좀 뷁 스럽네요 --;

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

mycluster의 이미지

Quote:
저 내용을 주장하는분은
마치 비주얼 베이직이 C언어보다 느리다는 관점을
적용시키는 오류를 범하고 있는데.... 도무지 -_-; 말이 안통해서요


이게 왜 오류죠? 똑같은 일을 하기 위해서 언어를 선택해야하는 상황에서 당연히 가장 빠른 속도를 내는 언어를 골라야하는 경우가 발생하고 그럴 경우에 이왕이면 성능 좋은 결과를 내는 컴파일러와 언어를 선택해야하는 것이 당연한데, 그것이 왜 오류고 말이 안통한다고 생각하시는지요?

그 사람의 논리를 깨고 싶으면 C로 연산을 수행하는 프로그램을 짜서 파스칼이나 혹은 다른 언어와 속도비교를 해보시면 됩니다.

실제로 기계의 성능을 재거나 혹은 여러가지 벤치마크 테스트를 하는 프로그램들은 대부분 여러가지 언어로 작성이 되어있고, 가장 좋은 성능을 내는 언어/컴파일러 조합을 동시에 발표합니다. 따라서, 저 코드가 만약에 벤치마크 코드라면 당연히 저 벤치마크 결과는
'무슨 무슨 기계에서 10초 걸렸고, 그때 컴파일러는 델파이기반의 파스칼이다'라고 발표를 할 것이고, 님은 '무슨 무슨 기계에서 20초 걸렸고, VC++로 작성했다'라고 주장하시면서 비교의 의미가 없다... 라고 하시겠지만, 그러면 님은 벤치마크테스트에서 떨어지게 되는 겁니다.

Quote:
이 주장을 하던분도 원래는 원래 C언어 쓰는분인데 ,
이거 C/C++이 파스칼보다 빠르다는걸 증명 못하면
아무래도 프로젝트를 파스칼[델파이]로 하게 될거라는데

어째튼 주장하는 내용이 , 좀 뷁 스럽네요 --;

저런 for문으로 언어의 성능을 측정하는 것이 무리라고 생각되신다면, 새로 진행할 프로젝트에서 가장 중요한 core가 되는 부분을 예측할 수 있는 패턴의 벤치마크 프로그램을 C와 Pascal로 작성해서 속도비교를 해보십시오. 그래서 좋은 것을 쓰면 됩니다. 그 패턴이 위에 예로 든 for문이 주종인 것이라면 당연히 파스칼로 가는 것이 맞겠지요.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

mastercho의 이미지

for문 하나로 언어및 컴파일러의 성능이 결정되다고 보지 않습니다

for문이 조금 더 느리면 범용언어에서 평가 기준에서
더 느린 언어가 되는건가요?

일반적으로 비주얼 베이직보다 C언어가 빠르다고 알고 있습니다 ,그런데 그 관점을 파스칼과 C언어 비교처럼 같은 레벨의 성능차이라고 볼수 있을까요?

for문 하더라도 어셈블리 몇개 안되는것으로 알고 있습니다

그리고
거기서 단기적으로는 모르되 전체적인 성능을 높이기 위해 for 코드를 어셈으로 바뀔때 어셈블리 언어 더 추가(캐쉬 같은거) 할수도 있는거 아닙니까?

그런데 단지 몇줄의 코드를 테스트 해보고 언어의 전체적인 성능을 평가하는건 , 눈가리고 아웅하는거와 다를바가 없다고 생각합니다

컴파일러는 지역성 최적화 및 전역 최적화등에서
많은 다른 결과를 가져 올수 있는데 [ 소스 양이 많은 코드 또한 ]

저 몇줄의 코드로 언어의 모든걸 평가하다니요?

또한 그거 하나로 벤치 마킹에서 떨어진다? 과장이 지나치다고 생각됩니다

그리고 프로젝트 기준이라면 프로젝트에서 저런 무모한 for을 사용하는지에 대한 관점을 봐야 겠죠

예를들어 대부분 포인터 접근에 함수 호출이 찾은 프로그램 개발이라면
그런부분을 벤치 마킹해야 옮지 않을까요?

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

mycluster의 이미지

Quote:
또한 그거 하나로 벤치 마킹에서 떨어진다? 과장이 지나치다고 생각됩니다

그러면 님은 C가 성능이 잘 나오는 프로그램을 하나 짜시면 됩니다.
BMT문제는 주는쪽에서 정합니다. 모 공공기관에서 980억짜리 컴퓨터를 도입하는데 BMT문제는 포트란으로 몇십년된 프로그램으로 합니다. 그 포트란 프로그램이 현재 자신이 제안한 기계의 성능에 맞지 않던, 혹은 구닥다리라고 불평을 님처럼 하던, 혹은 그 프로그램만으로 어떻게 벤치마크를 결정할 수 있냐고 아무리 항변해봐야 소용없읍니다. 오로지 그 프로그램 하나의 계산속도만으로 980억짜리 딜은 결판이 났읍니다.
저 프로그램이 BMT문제라면 님은 떨어집니다. 세상을 너무 아름답게 보시는 듯하군요.

Quote:
배열 조작이나 포인터 조작부분을 저 for문에 넣으면 확실히 C언어가 빠를거라
생각이 드는데

파스칼(델파이)가 없어서 , 증명할 길이 없습니다


일단 증명하고 싶으시면 파스칼(혹은 델파이)를 어둠의 경로를 통해서라도 구하십시오. 그리고, 배열조작이나 포인터 조작등 C에 유리할 것으로 보이는 프로그램을 하나 작성해서 보여주시면 끝나겠지요? 당연히 결과를 보고 싶어하는 사람은 숫자로 보고 싶어합니다. 그리고, 각종 배열이나 포인터 처리 등등이 파스칼이 C보다 못할 것이라는 것은 속단이라고 보이는군요.

Quote:
그리고 프로젝트 기준이라면 프로젝트에서 저런 무모한 for을 사용하는지에 대한 관점을 봐야 겠죠

예를들어 대부분 포인터 접근에 함수 호출이 찾은 프로그램 개발이라면
그런부분을 벤치 마킹해야 옮지 않을까요?

이건 논리가 아니죠. 대부분의 프로그램이 포인터 접근과 함수 호출이 잦은 프로그램이라면 그런부분을 줄여야한다고 생각지는 않으신지요? for문은 무모하고, 함수호출이나 포인터 접근이 잦은 프로그램은 덜 무모한가요?
제가 짜는 프로그램은 처음부터 끝까지 수만라인의 대부분이 for문이고, 이런 종류의 프로그램은 잦은 함수호출이나 포인터 접근이 성능을 극도로 떨어뜨리므로 일부러 없애고 복수개의 for문으로 바꾸게 되지요.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

mastercho의 이미지

MyCluster wrote:
저 프로그램이 BMT문제라면 님은 떨어집니다. 세상을 너무 아름답게 보시는 듯하군요.

세상을 너무 비관적으로 바라 보시는게 아닌지요?

그런 단편적인 테스트로 모든것을 평가하는것이

면접때 영어 잘한다고 , 다른거 다 잘할거라는 오류와 왜이리 비슷한지 모르겠습니다

흡사 "악법도 법이니 , 악법에 따르라" 는 논리로 가는듯 싶습니다만은?

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

mycluster의 이미지

Quote:
흡사 "악법도 법이니 , 악법에 따르라" 는 논리로 가는듯 싶습니다만은?

님의 팀 그분을 설득하기전에 저도, 그렇다면 C가 잘나오는 것을 하나라도 보고 싶군요.
저도 제가 했던 대부분의 BMT에서 C보다는 무모하고 for문(정확히는 do)만 주로 쓰는 포트란이 훨씬 성능이 좋더군요.
그러면 답이 될른지요?

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

mastercho의 이미지

자꾸 벤치 마킹이라는것이

닷넷진형과 자바 진형에서

누가 엔터프라이즈 환경에서 더 빠른 환경을 제공하냐

의 예전 공방과 비슷하게 느껴지는군요

서로 자기 진형 환경의 성능이 좋은 결과를 내었지만

그 벤치 결과들은 다른 사람들에게 별로 어필하지 못한것으로 압니다

신뢰성이라는게 떨어졌기때문이죠

결국 개발자들은 자기들은 자기들 좋은대로 벤치마킹에 상관없이 자기들 갈길 대로 간것으로 아는데

저런 for 하나의 테스트에 벤치마킹을 끝내다니
단순 눈속임에 익숙하신분이 아니신지요?

다시 말하지만 , 프로젝트에 따라 벤치마킹도 다르게 해야 하는게 아니냐는겁니다

말을 겉돌지 마세요

프로젝트 성격에 따라 분명 그거에 맞는 테스트를 해야 하는게 아니냐고 분명히 위에 언급했습니다

for문에 강한 프로젝트에 포트란이 강한면모를 보인다면 그걸로 쓸수도 있는것을 부정하는게 아님을 아실텐데..... 이상하게 나오시네요

지금 논하는건
일반적인 범용 프로그래밍 환경에서의 일을 말하고 있습니다

자꾸 특수한 환경에서의 논리를 일반화 하는 오류좀 범하지 마셨으면 좋겠습니다

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

mycluster의 이미지

Quote:
이상하게 나오시네요

처음에 이야기를 꺼낸것은 님이죠. 왜 이상하죠?
님이 설득해야할 상대는 '시간이 빠른 결과가 보이는 것을 하나라도 가져와봐라'하는 것입니다.
그러면 님은 그런것을 가져가면 한방에 승리하는겁니다. 제가 님의 말에 이상하게 보이는 답변을 한것은 님이 상대편을 이기기 위해서는 그 사람이 요구하는 정곡을 정면으로 반박하면 되는데 자꾸 헛다리 짚는 이야기를 하기 때문입니다.

그사람은 빠른 결과를 보고 싶다입니다. 그러면 님은 C가 가진 장점을 극도로 발휘하는(그게 허접한 for문이던 말던 상관없이) 프로그램을 하나 만들어서 보여주면 그만입니다.

님이 설득하고자 하는 사람이 C언어의 장단점을 몰라서 저런 황당한 요구를 했다면 더더욱 그렇게 하면 그만입니다. 언어의 장단점은 윗사람에게 아무리 설명해봐야 소용없읍니다. 숫자로 보여주시면 되는겁니다.

Quote:
다시 말하지만 , 프로젝트에 따라 벤치마킹도 다르게 해야 하는게 아니냐는겁니다

그러면 님은 님 프로젝트에 맞는 벤치마킹문제를 만들어서 보여주면 되는겁니다. 그걸 상대편이 지금 님에게 요구하고 있는데, 님은 다른 방법으로 설득하고자 하는 것일 뿐입니다.
상대편이 요구한 프로그램에 대해서 현재 성능이 안나오면 그걸 잘 나오게 고쳐서 상대를 누르면 그만입니다.

제가 보기에는 님이 지금 처한 그런 상황이 상당히 특수해보이는군요. 저한테 일반화의 오류나 C의 장단점을 장황하게 설파하실 시간이면 저 같으면 빨리 델파이 구해서 함수호출이 많고 포인터를 왕창 부르는 프로그램을 만들어서 속도비교를 하겠읍니다.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

mastercho의 이미지

제가 윗사람에게 설득하는게 아닙니다, 다른 커뮤니티에서 그런분을 보았고 ,계속 게시판에서 그런주장을 하시길레 여기서 좀더 명확한 답변을 얻을수 있지 않나 싶어서 퍼온것입니다

그리고 그분을 반드시 설득 시킬 의무도 없으나 , C/C++를 쓰는 입장에서 설득을 한번 해볼려고 했을뿐입니다

또한
파스칼(델파이)가 없는 관계로(구하기도 좀 뭐하고해서)
현재 다른분들의 조언좀 구해 보려고 한것뿐입니다

어째튼
이 논쟁이 불필요하게 어긋난다고 생각이 드는군요

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

bluemoon의 이미지

Quote:
for ( int j = 0; ...

C에선 블럭시작부분에 변수를 선언해야.. (C99에선 지원되지만..)
C++로 컴파일되었다면 느릴지도 모르겠습니다.
근거는 딱히 없고 바이너리가 크다보니 실행속도에도 영향이 있겠죠.
더구나 GetTickCount 이 함수는 척 보니 Win32 API 함수인것 같은데
C언어라서 느린게 아니라 그 함수로인해 느린게 아닐지..

델파이나 C++Builder는 빌드기능이 좀 독특하다고 들었습니다.
아마 그 과정에서 VC++컴파일러보다 더 최적화되어 빠른 결과를 나은게 아닌가 싶기도 하네요.

mycluster의 이미지

불필요하다고 생각되실지 모르지만, 벤치마크테스트의 기본원칙은 'Do your own benchmark'입니다.
아무리 님이 이야기 해봐야, 그사람 눈에는 문제가 맨앞에 들었던 저 프로그램입니다. 저 프로그램이 델파이에서 잘 돌기때문에 그 사람은 그게 진리일뿐입니다. 그건 반대로 님한테도 마찬가지입니다.

벤치마크는 하는 사람맘입니다. 그 사람이 아무리 허접한 걸 하던말던 쓸 사람이 결정할 문제이므로, 가장 좋은 방법은 무시하거나 보여주는 겁니다. 상사가 아니라면 무시하면 그만입니다. 그런거 설득할려고 해봐야, 저같은 사람만 만날 뿐입니다.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

bluemoon의 이미지

제가 글을 올린사이 내용들이 이상하게... -_-;

mastercho의 이미지

MyCluster wrote:
상사가 아니라면 무시하면 그만입니다. 그런거 설득할려고 해봐야, 저같은 사람만 만날 뿐입니다.

조심해야 겠네요 , 명심하겠습니다 :twisted:

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

alsong의 이미지

long long sum=0; 
int i =0; 
int startTime = GetTickCount(); 
for(int j = 0; j<100;j++) 
{ 
    sum=0; 
    for(i=1 ; i<=5000000; i++) 
    sum+=i; 
} 
printf("time %d , %ld \n",GetTickCount()-startTime,sum);

이정도의 구문이라면 속도가 비슷비슷할것 같은데
2배나 차이나는 이유가 궁금하군요.
델파이가 있으면 어셈블코드로 변환해서 비교해보고 싶은 마음이 드는군요.

그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.

mycluster의 이미지

Quote:
조심해야 겠네요 , 명심하겠습니다

^^ 님 기분상하라고 말한거 아니니 마음 푸시길...
제가 님하고 똑같은 상태를 당한지 어언 5년째입니다.

A라는 프로그램을 전세계의 수백명이 PGI 컴파일러로만 사용하고 있읍니다. 그런데 그 컴파일러를 사용하는 이유는 big endian 데이타를 little endian으로 읽어들이는 옵션을 지원하는 유일한 컴파일러였던 때가 있었기 때문입니다.

그래서, 컴파일러를 바꾸면 성능이 훨씬 좋아짐에도 불구하고, 더구나 요즘 나온 컴파일러는 저 기능이 추가되었음에도 불구하고 사람들이 컴파일러를 바꾸지 않습니다. 그래서, 5년째 새컴파일러로 컴파일해서 속도가 40%이상 빨라진다는 것을 최근에 보여줬읍니다. 물론 속도 뿐만 아니라 결과도 똑같다는 것을 보여줬지요. 딱 3명이 긍정적으로 컴파일러를 바꿔볼까 하는 생각을 하더군요. 눈으로 보여줘도 안바꾸는 인간들이 득실득실합니다. 그런 사람들한테, 아무리 언어의 장점과 컴파일러의 장점을 설명해봐야 입만 아플 뿐입니다.
눈으로 보여줘도 겨우 믿을까 말까 합니다.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

죠커의 이미지

괜찮으시다면 그 분의 파스칼 소스와 그 분이 짜신 C언어 소스 전체를 올리실 수 있을까요?

포트란 프로그램이면 몰라도 파스칼 프로그램에게 실행 속도로 C가 밀렸다는게 납득이 안가는군요.

voider의 이미지

제가 예전에 어셈블러를 만든다고 볼랜드 컴파일러와 VC의 어셈블 아웃풋을
비교해본적이 있습니다.
그때 느낀건데 볼랜드 컴파일러는 속도를 높이기 위해 레지스터를 많이 활용합니다
그리고 VC는 대체적으로 정직하게 컴파일 하죠...

그래서 저렇게 특정 변수에 치중된 연산에서 속도 차가 나지 않나 하는 생각이
드네요

그래서
register long long sum = 0;
register int i = 0;

이렇게 한번 해보면 어떨까요...

-- 아쉬운 하루 되세요 --

fender의 이미지

세상엔 4가지의 거짓말이 있습니다.

lies...

damn lies...

statistics....

...그리고 benchmark

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

Bini의 이미지

http://dada.perl.it/shootout/
에서 대충비교해보시면...
C컴파일러와 비교해서 델파이도 상당히 괜찮네요...

http://www.bagley.org/~doug/shootout
여기는 주로 비상용컴파일러들을 모아놓았네요...

vacancy의 이미지

Delphi를 오래 쓰다가,
최근엔 VC++를 쓰기는 합니다만, ( Delphi엔 이제 손도 못대는 ㅠ_ㅠ )
사실 VC++를 꼭 써야 하는 상황이 아니라면
( 같은 팀의 사람들이 VC++를 써서 인터페이스가 문제라거나요. )
솔직히 Delphi 쪽의 손을 들어주고 싶던데요.

제 개인적인 느낌으로는 MFC보다는 VCL이 솔직히 더 간결하고 편했고요.
UI쪽은 양쪽을 써보신 분이라면 두말할것 없이 Delphi 쪽의 손을 들것같네요.
또 컴파일 속도가 비교도 안되기때문에 생산성도 높다고 보고요.
( 뭐 상관없는 언급일 수도 있겠는데요. )
( C#이나 Java도 사실 C++보다는 Object Pascal에 가깝게 개발되었습니다. )
( C# 개발을 주도한 사람은 원래 Delphi 만들던 사람이고요. )

물론 라이브러리들 구하기엔 MFC쪽이 편하고,
VC++하는 사람들이 많으니 팀 구성면에서나
기존 VC++ 소스들과 인터페이스 만들기에도 VC++ 쪽이 편하겠죠.
( 물론 DLL 써서 하는 경우엔 비슷하겠습니다만. )
제 생각엔 그 분께서 Delphi를 고려에 넣으실 때는
위의 잇점들때문에 속도가 같다는 전제 하에서라도 쓰시겠다는 것 같네요.

그리고 벤치마크는 윗분들 말씀대로 정하는 사람 마음같네요.
Computer Architecture 책들도 실제로 그렇게 말하고 있고요.
에, 그리고 Delphi가 C보다 빠르다는 걸 증명하기 어려운 만큼,
C가 Delphi보다 빠르다는 걸 증명하기도 어렵기는 마찬가지입니다.
벤치마크에 연연하시지 않는 편이 좋을 것 같네요.
그리고, 참고로 글 전체적으로 포인터나 배열 다루는데
Pascal이 C보다 못하다는 선입관을 가지고 계신 것 같은데요.
전혀 그렇지 않습니다. 그럴만한 이유도 없고요.

정태영의 이미지

저런 코드는 gcc에서 -O2나 -O3가 붙으면..
...

미리 계산해서 넣어주기 때문에;;
비교불능일듯한 =3=33

(룹을 안돌거에요 캬캬캬)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

galien의 이미지

정태영 wrote:
저런 코드는 gcc에서 -O2나 -O3가 붙으면..
...

미리 계산해서 넣어주기 때문에;;
비교불능일듯한 =3=33

(룹을 안돌거에요 캬캬캬)

benchmark를 위한 꼼수랄까요 ^^

mastercho의 이미지

program StrTest;

{$APPTYPE CONSOLE}

uses
SysUtils,
Windows;

var
start: Cardinal;
i, j, sum: Integer;
str: string;

begin
Start := GetTickCount();
for j := 1 to 100 do
begin
Sum := 0;
for i := 1 to 5000000 do
Inc(Sum,i);
end;
Writeln('Time : ' + IntToStr(GetTickCount() - Start));
Writeln('Sum : ' + IntToStr(Sum));
end.

이건 파스칼 코드라고 하네요

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

cdpark의 이미지

언어 자체보다 코드생성기 쪽의 문제일 수도 있습니다.

같은 프로그램을 Linux와 Windows의 두 플랫폼에서, C 언어(gcc 2.9x)와 pascal (gpc, free pascal)의 두 언어, 세 컴파일러로 비교해 본 적이 있습니다.

I/O는 거의 없는 재귀호출 프로그램, loop 반복 프로그램 등으로 테스트했습니다.

경우에 따라 1-2배, 심하면 10배가량 차이가 나더군요. 컴파일 옵션으로 -O를 주면 차이가 줄 때도 있고, 늘 때도 있었습니다. 누가 더 빨랐는지는 비밀입니다. :)

원래의 경우에도 Delphi와 Borland C++Builder 간의 비교라면 그나마 참고할 수 있겠지만, Delphi와 VC++ 간의 비교라면 그냥 웃고 넘기겠습니다. 같은 프로그램을 BC++B와 VC++로 컴파일해도 속도가 다르고, 컴파일 옵션을 바꿔도 속도가 다른 법인데...

advanced의 이미지

델파이하고 C 라면 생산성 문제로 붙을 줄 알았는데..

속도 문제라니..좀 의외군요... :shock:

보통 속도보다는 프로젝트에대한 적합성을 따지지 않나요?

- advanced -

mastercho의 이미지

ㅎㅎ 드디어 원인을 찾았습니다

데브피아 노영선님이 2배 이상 느렸던 이유를 발견하셨습니다

파스칼에서는 int 형이 연산에 수행된 반면

VC++에서는 long long 64비트 형이 연산을 하고 있었습니다

32비트 컴퓨터에서는 64비트를 사용시 2개의 레지스터를 사용하기 때문에 2배 느린것은 당연한것이었습니다

파스칼 코드는 원체 눈에 안들어와 검증을 안하려고 했던게 저도 실수 였습니다

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

chunsj의 이미지

이런 이야기는 처음부터 의미가 없는 것이 어떤 언어가 다른 것 보다 빠르다,
느리다라는 것이 의미가 없기 때문입니다. 단지 컴파일러가 어떤 것이 더
좋다 나쁘다는 될 수 있겠죠. 너무 특정 언어에 집착하시는 것은 아닌가요?
언어는 목적에 맞게 가는 것이 정상입니다. 생산성, 성능, 컴파일러의 질,
플랫폼의 특징등에 맞게 말이죠. 특정 어플리케이션에서 사용하는 코드가
특정 언어의 큭정 컴파일러가 주어진 플랫폼에서 가장 좋은 성능을 낸다면,
그리고 성능이 최우선 과제라면 당연히 그걸 써야 하는 것입니다.

mastercho wrote:
ㅎㅎ 드디어 원인을 찾았습니다

데브피아 노영선님이 2배 이상 느렸던 이유를 발견하셨습니다

파스칼에서는 int 형이 연산에 수행된 반면

VC++에서는 long long 64비트 형이 연산을 하고 있었습니다

32비트 컴퓨터에서는 64비트를 사용시 2개의 레지스터를 사용하기 때문에 2배 느린것은 당연한것이었습니다

파스칼 코드는 원체 눈에 안들어와 검증을 안하려고 했던게 저도 실수 였습니다

nohmad의 이미지

chunsj님 말씀에 동의합니다.
언어와 컴파일러를 구분하지 않고, 잘못 사용하는 대표적인 예가 되겠군요. C 혹은 C++ 표준에 파스칼보다 실행속도가 빨라야 한다는 규정은 없습니다. "마이크로소프트 Visuall C++이라는 제품과 볼랜드 델파이라는 제품의 속도 비교"라고 고쳐야겠지요. 이 문장은 "라세티와 아반떼 중 무엇이 빠릅니까?"와 별로 다르지 않을 것 같군요.

mastercho의 이미지

도움이 될거 같아 퍼왔습니다

cdecl wrote:
테스트

아래의 결과는 델파이7 의 트라이얼 버전을 받아 IDE 에서 컴파일 한것을 콘솔에서 테스트 한 결과 입니다.

(델파이 컴파일러가 어떤 것인지 몰라서. dcc32.exe 가 없더군요, 제가 못찾은건지 아님 다른 이름으로 되어 있는지 몰라도)

D:\download\test>p

Time : 611

Sum : 1647668640

D:\download\test>p

Time : 601

Sum : 1647668640

D:\download\test>p

Time : 601

Sum : 1647668640

D:\download\test>p

Time : 601

Sum : 1647668640

다음은 VC++ 6 의 컴파일러를 가지고 컴파일 했습니다.

D:\download\test>cl /GX /O2 c.cpp

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86

Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

c.cpp

Microsoft (R) Incremental Linker Version 6.00.8447

Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:c.exe

c.obj

D:\download\test>c

time 721 , 1647668640

D:\download\test>c

time 711 , 1647668640

D:\download\test>c

time 711 , 1647668640

D:\download\test>c

time 721 , 1647668640

헌주님의 결과와 같이 C++ 쪽이 느리더군요...

저의 개인적인 입장은 어짜피 코드 간단한것이니 성능은 비슷하다는 것인데 오히려 차이가 이렇게 난다는것이 놀랍더군요...

그래서 VC++7.1 로 컴파일러를 바꾸어 봤습니다.

그러나 약간의 속도 차이는 있었지만 별로 효과는 보지 못했습니다.

심지어는 /G7 (펜티엄 4 최적화 옵션) 옵션으로 해봤지만 640 ~ 650 까지는 성능을 내봤으나 그래도 델파이에는 미치치 못했습니다.

그래서 C++이 느리구나 라고 생각을 할무렵 혹시나 해서 bcc5.5 (borland free compiler) 으로 실행을 해보았습니다.

D:\download\test>bcc32 -O2 c.cpp

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland

c.cpp:

Warning W8004 c.cpp 8: 'i' is assigned a value that is never used in function ma

in()

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

D:\download\test>c

time 611 , 1647668640

D:\download\test>c

time 601 , 1647668640

D:\download\test>c

time 601 , 1647668640

D:\download\test>c

time 611 , 1647668640

아 근데 델파이와 비슷한 결과를 보여주었습니다.

그래서 이번엔 반대로 왜 볼랜드 C++ 컴파일러와 MS C++ 컴파일러가 틀릴까 생각을 하던중 혹시나 해서

MS VC 6.0 컴파일러 쪽에 O2(속도 최적화) 옵션이 아닌 O1(크기 최적화) 를 사용 해보았습니다.

D:\download\test>cl /GX /O1 c.cpp

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86

Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

c.cpp

Microsoft (R) Incremental Linker Version 6.00.8447

Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:c.exe

c.obj

D:\download\test>c

time 611 , 1647668640

D:\download\test>c

time 601 , 1647668640

D:\download\test>c

time 601 , 1647668640

D:\download\test>c

time 601 , 1647668640

그러니 이제야 델파이와 bcc32 5.5 같은 결과를 내었습니다.

개인적으로 생각하기엔 아마 작은 코드이다 보니 속도로 최적화보다는 크기로 최적화를해 코드의 적중률을 높여서 그런게 아닌가 생각이 듭니다.

델파이는 이작업을 자동으로 해줄 뿐이고 C++은 옵션을 조정 했다는 거 차이입니다.

결론

저렇게 작은 코드로 그리고 하나의 테스트로 컴파일러 혹은 언어의 성능을 측정 하는것은 무리라고 봅니다.

오히려 차이가 나는 것이 이상하겠지요...

델파이도 훌륭한 컴파일러이고 C++ 못지 않는 성능을 낸다는것은 의심할 필요가 없다고 봅니다.

다만 C++쪽이 파스칼 보다는 상대적으로 로우레벨의 접근이 용이하기 때문에 최적화가 유리할수 있다고 생각을 하면 될것 같습니다.

어떠한 언어도 위의 코드를 Win32 네이티브 최적화 코드로 생성해 놓은 것이 있다면 거의다 비슷할 거라고 생각이 듭니다.

느낌점

이 내용을 가지고 많이 논쟁이 있는데 우선 남을 비방해 가면서 까지 할 논쟁은 아니라고 봅니다.

오히려 상대의 말을 존중하고 객관적인 자료로 서로 설득하는것이 맞는것 같습니다.

저도 이 BMT을 하면서 배운것이 많았습니다.

특히 그냥 Release모드로 해놓으면 모든것이 다 잘되는 것이라 생각을 무심결에 한것 같습니다.

많은 그루들의 책을 보아도 최적화에 대해서는 함부로 하지 말라는 말을 합니다.

많은 테스트와 프로파일의 결과를 가지고 적용해야한다는 것을 몸으로 배우는 기회 인것 같습니다.

--

cdecl

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

죠커의 이미지

vacancy wrote:
제 개인적인 느낌으로는 MFC보다는 VCL이 솔직히 더 간결하고 편했고요.
UI쪽은 양쪽을 써보신 분이라면 두말할것 없이 Delphi 쪽의 손을 들것같네요.
또 컴파일 속도가 비교도 안되기때문에 생산성도 높다고 보고요.

왠지 UI해서 떠 오른 건데 델파이 프로그램들 쓸모없는 창 하나씩 더 뛰우지 않는가요? 그것 때문에 짜증났던적이 있었던것 같습니다. 오래되어서 기억이 가물하군요. 자세히 아시는 분이 정확한 내용을 알려주셨으면 좋겠습니다.

PS: 토론의 스피드가 매우 빠르군요 (...) 어느새 다 정리되는 분위기.

s9204의 이미지

포트란으로 똑같은걸 비교해 보시면 어떨까요?
컴 사양만 같으면 제가 해보고 싶지만 몰라서리...

mycluster의 이미지

Quote:
포트란으로 똑같은걸 비교해 보시면 어떨까요?

해봤읍니다.

환경은 Intel Xeon 2.8GHz/Dual, 4GB 머신에 FSB533MHz 입니다. Redhat 7.3이 깔려있읍니다.

컴파일러는 다음과 같읍니다.
1. gcc/g77 2.96, -O3 (옵션)
2. icc/ifc 8.0, -O3 -tpp7 -axW -xW (옵션)

소스는 다음과 같읍니다. c와 fortran의 정확도를 맞추기 위해서 c에서는 long int, 포트란에서는 integer*4를 사용했읍니다. 그외에는 int와 integer*2 가 되겠읍니다. 시간을 좀 걸리게 할려고 i 루프를 1000으로 했읍니다.

다음은 bmt.c 입니다.

Quote:

#include <stdio.h>

main () {
long int sum=0;
int i =0;
for(int j = 0; j<1000;j++) {
sum=0;
for(i=1 ; i<=5000000; i++)
sum+=i;
}
printf("%d\n",sum);
}

아래는 bmt.f

Quote:

program test

integer*4 sum

sum = 0.0
i = 0

do j = 0, 999
sum = 0
do i = 1, 5000000
sum = sum + i
enddo
enddo

print *, sum
end

수행결과는 아래와 같읍니다.

Quote:

[*****@node256 temp]$ time ./bmt_gcc
1647668640

real 0m3.589s
user 0m3.590s
sys 0m0.000s
[*****@node256 temp]$ time ./bmt_g77
1647668640

real 0m3.586s
user 0m3.590s
sys 0m0.000s
[*****@node256 temp]$ time ./bmt_icc
1647668640

real 0m1.798s
user 0m1.790s
sys 0m0.000s
[*****@node256 temp]$ time ./bmt_ifc
1647668640

real 0m1.803s
user 0m1.780s
sys 0m0.010s

원래는 수십번해서 평균을 내던지 해야하지만, 어쨌던 대충 해보면 1/1000초 대에서 c가 포트란보다 아주조금 빠릅니다. 하지만 GNU컴파일러에 비해서 역시 Intel Compiler가 엄청빠르군요.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

mastercho의 이미지

어셈으로 직접 비교를 해주신분이 있어서 ^^;

노영선 wrote:
쩝.. 주말에 할 일도 많은데

답답해서 자료 좀 만들어봤습니다.

거의 1시간 넘게 걸렸네요.

델파이 시험판 다운 받아서 테스트 프로그램 만들어서 VC 디버거에서 잡아서 디스어셈블을 했습니다.

아무튼.. 관련 자료는 모두 첨부 했으니 의심가는 분은 정확성을 검토해보십시오.

-------------- 파스칼 프로그램 및 컴파일 결과 ---------------------

미드미 님이 올려주신 소스입니다.

program StrTest;

{$APPTYPE CONSOLE}

uses SysUtils, Windows;

var

start: Cardinal;

i, j, sum: Integer;

begin

MessageBox(0, 'Test Begin !!', 'Test', 0); // VC 디버거에서 잡기 위해 삽입한 코드

Start := GetTickCount();

Start := GetTickCount();

//00408295 call 00404A64

//0040829A mov esi,eax

for j := 1 to 100 do

//0040829C mov edx,64h

begin

Sum := 0;

//004082A1 xor ebx,ebx

for i := 1 to 5000000 do

//004082A3 mov eax,1

begin

Inc(Sum,i);

//004082A8 add ebx,eax

//004082AA inc eax

end;

//004082AB cmp eax,4C4B41h

//004082B0 jne 004082A8

end;

//004082B2 dec edx

//004082B3 jne 004082A1

Writeln('Time : ' + IntToStr(GetTickCount() - Start));

//004082B5 call 00404A64

//004082BA sub eax,esi

Writeln('Sum : ' + IntToStr(Sum));

end.

-------------- 씨 프로그램 및 컴파일 결과 ----------------------

cl /O1 test.c /Fa /o test_c.exe

#define WIN32_LEAN_AND_MEAN

#include <windows.h>

#include <stdio.h>

int main()

{

DWORD startTime, i, j;

DWORD sum = 0;

char tmpStr[100];

startTime = GetTickCount();

/*

mov esi, DWORD PTR __imp__GetTickCount@0

push edi

call esi

push 100 ; 00000064H

mov ebx, eax

pop ecx

*/

for (j = 0; j<100; j++)

{

sum = 0;

for(i = 1; i<=5000000; i++)

/*

$L20083:

xor eax, eax

xor edi, edi

inc eax

*/

{

sum += i;

}

/*

$L20086:

add edi, eax

inc eax

cmp eax, 5000000 ; 004c4b40H

jbe SHORT $L20086

*/

}

/*

dec ecx

jne SHORT $L20083

*/

itoa(GetTickCount() - startTime, tmpStr, 10);

/*

push 10 ; 0000000aH

lea eax, DWORD PTR _tmpStr$[ebp]

push eax

call esi

sub eax, ebx

push eax

call _itoa

*/

printf("Time : %s", tmpStr);

printf("Sum : %d\n", sum);

return 0;

}

------------------- 어셈블리 소스 비교 ------------------

파스칼 씨

외부 루프 시작

xor ebx,ebx xor eax, eax

mov eax,1 xor edi, edi

inc eax

내부 루프 시작

add ebx,eax add edi, eax

inc eax inc eax

cmp eax,4C4B41h cmp eax, 5000000

내부 루프 끝

jne 004082A8 jbe SHORT $L20086

dec edx dec ecx

jne 004082A1 jne SHORT $L20083

외부 루프 끝

보시다 시피 거의 차이가 없습니다.

내부 루프는 동일하고

외부 루프는 조금 다른데 클럭 수를 비교해봐야 알겠지만 별 차이 없을 겁니다.

(차이 나봐야 inc 100개 실행되는 클럭수 차이 -_-)

-------------------------- 결론 -----------------------------

벤치마크 테스트도 참 어려운 일입니다.

정수 500만개 더하기, 알파벳 500만번 덧붙이기 같은 무식한 프로그램으로는 제대로 된 벤치마크가 안나오죠.

잘하는 짓은 아니지만... 어쨋든 저는 최소한 기술적 깊이나 난이도 면에서는 델파이를 무시해도 된다고 봅니다.

델파이 거의 처음 써봤는데 프로젝트 옵션 화면이 마치 VB의 화면을 보는 것 같아 질겁했습니다.

으..

괜히 쓸데 없는 로우레벨 퍼포먼스 같은 걸로 말도 안되는 광고 하지 마시고

각자 자기 장점을 살리는 게 좋다고 봅니다.

끝으로 VC 없는 분들을 위해 VC 옵션 화면 보여드립니다.

C/C++ COMPILER OPTIONS

-OPTIMIZATION-

/O1 minimize space /Op[-] improve floating-pt consistency

/O2 maximize speed /Os favor code space

/Oa assume no aliasing /Ot favor code speed

/Ob<n> inline expansion (default n=0) /Ow assume cross-function aliasing

/Od disable optimizations (default) /Ox maximum opts. (/Ogityb2 /Gs)

/Og enable global optimization /Oy[-] enable frame pointer omission

/Oi enable intrinsic functions

-CODE GENERATION-

/G3 optimize for 80386 /Gh enable _penter function call

/G4 optimize for 80486 /GH enable _pexit function call

/G5 optimize for Pentium /GR[-] enable C++ RTTI

/G6 optimize for PPro, P-II, P-III /GX[-] enable C++ EH (same as /EHsc)

/G7 optimize for Pentium 4 or Athlon /EHs enable C++ EH (no SEH exceptions)

/GB optimize for blended model (default) /EHa enable C++ EH (w/ SEH exceptions)

/Gd __cdecl calling convention /EHc extern "C" defaults to nothrow

/Gr __fastcall calling convention /GT generate fiber-safe TLS accesses

/Gz __stdcall calling convention /Gm[-] enable minimal rebuild

/GA optimize for Windows Application /GL[-] enable link-time code generation

/Gf enable string pooling /QIfdiv[-] enable Pentium FDIV fix

/GF enable read-only string pooling /QI0f[-] enable Pentium 0x0f fix

/Gy separate functions for linker /QIfist[-] use FIST instead of ftol()

/GZ Enable stack checks (/RTCs) /RTC1 Enable fast checks (/RTCsu)

/Ge force stack checking for all funcs /RTCc Convert to smaller type checks

/Gs[num] control stack checking calls /RTCs Stack Frame runtime checking

/GS enable security checks /RTCu Uninitialized local usage checks

/clr[:noAssembly] compile for the common language runtime

noAssembly - do not produce an assembly

/arch:<SSE|SSE2> minimum CPU architecture requirements, one of:

SSE - enable use of instructions available with SSE enabled CPUs

SSE2 - enable use of instructions available with SSE2 enabled CPUs

-OUTPUT FILES-

/Fa[file] name assembly listing file /Fo<file> name object file

/FA[sc] configure assembly listing /Fp<file> name precompiled header file

/Fd[file] name .PDB file /Fr[file] name source browser file

/Fe<file> name executable file /FR[file] name extended .SBR file

/Fm[file] name map file

-PREPROCESSOR-

/AI<dir> add to assembly search path /Fx merge injected code to file

/FU<file> forced using assembly/module /FI<file> name forced include file

/C don't strip comments /U<name> remove predefined macro

/D<name>{=|#}<text> define macro /u remove all predefined macros

/E preprocess to stdout /I<dir> add to include search path

/EP preprocess to stdout, no #line /X ignore "standard places"

/P preprocess to file

-LANGUAGE-

/Zi enable debugging information /Ze enable extensions (default)

/ZI enable Edit and Continue debug info /Zl omit default library name in .OBJ

/Z7 enable old-style debug info /Zg generate function prototypes

/Zd line number debugging info only /Zs syntax check only

/Zp[n] pack structs on n-byte boundary /vd{0|1} disable/enable vtordisp

/Za disable extensions (implies /Op) /vm<x> type of pointers to members

/Zc:arg1[,arg2] C++ language conformance, where arguments can be:

forScope - enforce Standard C++ for scoping rules

wchar_t - wchar_t is the native type, not a typedef

-MISCELLANEOUS-

@<file> options response file /wo<n> issue warning n once

/?, /help print this help message /w<l><n> set warning level 1-4 for n

/c compile only, no link /W<n> set warning level (default n=1)

/H<num> max external name length /Wall enable all warnings

/J default char type is unsigned /Wp64 enable 64 bit porting warnings

/nologo suppress copyright message /WX treat warnings as errors

/showIncludes show include file names /WL enable one line diagnostics

/Tc<source file> compile file as .c /Yc[file] create .PCH file

/Tp<source file> compile file as .cpp /Yd put debug info in every .OBJ

/TC compile all files as .c /Yl[sym] inject .PCH ref for debug lib

/TP compile all files as .cpp /Yu[file] use .PCH file

/V<string> set version string /YX[file] automatic .PCH

/w disable all warnings /Y- disable all PCH options

/wd<n> disable warning n /Zm<n> max memory alloc (% of default)

/we<n> treat warning n as an error

-LINKING-

/MD link with MSVCRT.LIB /MDd link with MSVCRTD.LIB debug lib

/ML link with LIBC.LIB /MLd link with LIBCD.LIB debug lib

/MT link with LIBCMT.LIB /MTd link with LIBCMTD.LIB debug lib

/LD Create .DLL /F<num> set stack size

/LDd Create .DLL debug library /link [linker options and libraries]

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

lollipop의 이미지

http://www.devpia.com/Forum/BoardView.aspx?no=35174&Tpage=1093&forumname=vc_free

델파이(오브젝트파스칼)가 싫은 C/C++ 추종자(패자).

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만
패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다. - 하비스

serialx의 이미지

이런벤치마킹 델마당 커뮤니티에서도 했었습니다.

Quote:
작성자 : 신동훈
http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?db=dmdgame&mode=read&num=374&page=44&backdepth=1
A라는 프로시져는 부동소숫점연산을하고 이것을 1억번을 루프로호출하고
A라는 프로시져는 STDCALL입니다.

1억번식 10번의 평균을 구한결과 (VC의최적화때문에 쫌 고생했은)

델파이 1322
VC 1202

로 VC가 약 0.12초가 빠르고

부수적으로 천만번씩 10번의 평균은

델파이 125
VC 120 으로
VC가 0.005 초빠릅니다 -_-

만약 저연산을 둘다 어셈으로 똑같이쓸경우에를 이제 실험해보겠습니다

Quote:
작성자 : 신동훈
http://www.delmadang.com/cwb-bin/CrazyWWWBoard.exe?db=dmdgame&mode=read&num=401&page=43&backdepth=1
-_- 자자.. 델파이 7.0을까록나서 rdtsc 아싸 되는군요
클럭측정해봅니다 r:=r*i*0.1;
흠 32클럭나오는군요

vc r=r*i*0.1f;
흠 32클럭이군요 역시

그럼 for문으로 100번돌릴때는? 속도가 헉....
델파이가 -_- 엄청느렷습니다 (---천클럭넘게차이) 그래서 역시..
루프의 문제로 인식하고 루프를 종류별로 바꿔봤지요 일단
while --(for문이랑 거의같음) repeat until 헉!!! 클럭수차이가
vc++이랑 300클럭 내외로 변했습니다.. goto문 repeat until 이랑 비슷했습니다
자.. 여기서 문제삼을것은 델파이의 루프방식 이겠습니다..... 라고 짚고넘어갈려다
전번에 한방식대로 stdcall 로 함수호출하기 1000번을 시켰습니다..
결과는? -_-32000 32000 -_- 같았습니다 .. 이건도데체 무슨 현상인지원..
vc가 os랑 붙어있어서 캐쉬히팅율을 조작하는지... 에휴 .. 하여간 부도소숫점연산
에서는 클럭수가 동일합니다.. 냐하하하하

결론은.. 저런 게임관련 (저 벤치마킹을 한곳이 게임제작 게시판임) 이나 수치연산 빼고는.. 그다지 저런 비교를 할필요가 있을까 궁금합니다.

dudungsil의 이미지

왠지 영양가 없는 테스트 같은 느낌이 드네요.

C가 꼭 파스칼을 무찔러야 하는 이유도 잘 모르겠고, C를 그렇게 옹호해야하는 이유 또한 모르겠네요.

닭잡는데 소잡는 칼을 쓸 필요가 없다는 말이 속담에도 있다는건 외곬수 일 필요는 없다는 조언 아닐까요.

반드시 C일 필요는 없습니다. 물론 다른걸 또 배운다는게 귀찮기는 하지만 배우고 나면 또 세상이 달라집니다. 10대 소녀 팬도 아닌데 편가르고 싸우기보다는, 상대방의 말에 귀 기울이고 그걸 자기것으로 만드는게 프로젝트를 성공으로 이끄는 방법이라고 생각합니다.

산넘어 산

죠커의 이미지

언어자체를 본다면 파스칼과 C는 닭잡는 칼, 소잡는 칼로 나눠질 수 없을 것 같은데 비베와 경쟁을 하는 듯한 이미지를 풍기는 델파이라는 툴은 정말 독특한 것 같습니다. (이것도 편견이라면 비판해주십시요.)

저는 테스트들이 보다 공정하고 더 넓은 범위에서 이루어졌으면 좋겠군요. 성능 뿐만 아니라 활용범위면에서도 테스트 해보았으면 좋겠습니다.

어떻게 파스칼과 C언어라는 언어차이보다 활용범위의 차이가 더 많이 나게 되었는지 아직은 이해되지 않네요.

vacancy의 이미지

CN wrote:
vacancy wrote:
제 개인적인 느낌으로는 MFC보다는 VCL이 솔직히 더 간결하고 편했고요.
UI쪽은 양쪽을 써보신 분이라면 두말할것 없이 Delphi 쪽의 손을 들것같네요.
또 컴파일 속도가 비교도 안되기때문에 생산성도 높다고 보고요.

왠지 UI해서 떠 오른 건데 델파이 프로그램들 쓸모없는 창 하나씩 더 뛰우지 않는가요? 그것 때문에 짜증났던적이 있었던것 같습니다. 오래되어서 기억이 가물하군요. 자세히 아시는 분이 정확한 내용을 알려주셨으면 좋겠습니다.

PS: 토론의 스피드가 매우 빠르군요 (...) 어느새 다 정리되는 분위기.

쓸모없는 창 하나씩 더 띄우는 게 어떤 것인지 정확히 모르겠습니다.
제가 쓰던 당시에는 별다른 문제가 없었거든요.
만일 그런 가시적으로 보이는 문제점이 있다면 저도 알아챘을것 같은데요.
필요한 창들만 떴었던 것 같습니다.

mastercho의 이미지

lollipop wrote:
http://www.devpia.com/Forum/BoardView.aspx?no=35174&Tpage=1093&forumname=vc_free

델파이(오브젝트파스칼)가 싫은 C/C++ 추종자(패자).

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만
패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다. - 하비스

글세요 , 억지 논리 아니신가요? 우월하지 않은데도 우월한척한거겠죠

그리고 파스칼이 싫다기보다 , 말이 안되는걸로 우기는게 싫었을뿐입니다

파스칼이 얼마든지 다른 부분에서도 C보다 좋을수 있습니다

그것을 부인한적은 없습니다

하지만 for문같이 몇줄 되지도 않은 코드에서 2배이상 파스칼이 빠르다고 우기는 모습에 짜증이 났을뿐이죠

오히려 C가 싫은 파스칼 추종자의 열등감이 부른 사건이라 불러야 정상이겠죠
[이번 테스트를 맨처음 시작하셨던분을 지칭한 것은 아닙니다]

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

tinywolf의 이미지

mastercho wrote:
오히려 C가 싫은 파스칼 추종자의 열등감이 부른 사건이라 불러야 정상이겠죠

음.. 그럴지도 모르겠군요...

여기 올라온 글을 보면서 '뭐 얼마나 차이난다고 그냥 편한거 쓰지'하는 생각을 쭉하고 있었으니..

뭐.. 모양은 비베로 만들고 비베로 안되는건 C++써서 만들어 붙이고 하는 편이라..

그렇게 몇백밀리초를 다투는 일이 중요하다면 차라리 어셈을 쓰던가... 하는 생각이..

ㅡ_ㅡ;

죠커의 이미지

vacancy wrote:
쓸모없는 창 하나씩 더 띄우는 게 어떤 것인지 정확히 모르겠습니다.
제가 쓰던 당시에는 별다른 문제가 없었거든요.
만일 그런 가시적으로 보이는 문제점이 있다면 저도 알아챘을것 같은데요.
필요한 창들만 떴었던 것 같습니다.

가시적으로 보이는 문제점은 아니었습니다. 제 기억엔 보이지 않는 창이 항상 하나 더 떠 있는 듯 했습니다.

mastercho의 이미지

이번일로 의문점이 드는건, 파스칼 프로그래머의 결과만 파스칼이 2배 빠르다는것입니다

디버깅 모드로 컴파일해야 2배이상 차이를 낼수 있을만한 상황인데 ,각각의 언어를 최적화를 다해서 테스트 했다는분들이... 파스칼(델파이)가 2배이상 빠르다는 결론을 내렸는지 의문입니다

결국 파스칼이 빠르다는 논리에 자극받은분들이 델파이까지 구해서, 컴파일한 결과들에서는 차이가 없는걸로 밝혀지긴 했지만요

궁금한것은
왜 파스칼 쓰는분들이 C/C++언어 쓰는분들을 자극했는지 모르겠습니다

단지 파스칼도 좋은 언어인데 소외되기 싫었던것인지....

좀더 긍정적인 토론을 할수 있지 않았을까? 하는 아쉬움도 남네요

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

chunsj의 이미지

[quote="mastercho하지만 for문같이 몇줄 되지도 않은 코드에서 2배이상 파스칼이 빠르다고 우기는 모습에 짜증이 났을뿐이죠

제 생각엔 몇줄 되지도 않는 코드도 컴파일러에 따라 2배가 아니라 10배,
100배도 빠르고 느리고 할 수 있습니다. 파스칼이 빠르다고 우기는 모습에
짜증을 낼 것이 아니라 컴파일러의 차이라는 것을 그 사람이 알아야 했겠죠.
그리고 당연히 어떤 정해진 조건에서는 파스칼이 2배 빠를 수도 있는 것이고...
뭐 그런 일에 까지 목숨을 거시나요? :-)

mastercho의 이미지

chunsj wrote:

제 생각엔 몇줄 되지도 않는 코드도 컴파일러에 따라 2배가 아니라 10배,
100배도 빠르고 느리고 할 수 있습니다. 파스칼이 빠르다고 우기는 모습에
짜증을 낼 것이 아니라 컴파일러의 차이라는 것을 그 사람이 알아야 했겠죠.
그리고 당연히 어떤 정해진 조건에서는 파스칼이 2배 빠를 수도 있는 것이고...
뭐 그런 일에 까지 목숨을 거시나요? :-)

그리고 현대 컴파일러에서는 저런 코드르 10배 100배 차이나게
해석하지 않습니다 , 특히 1+1=2 라는 식의 간단한 코드를
10-100배 차이나게 해석하다니요?

그리고 이런 일에 목숨을 걸다니요? 누가 목숨을 걸던가요? :?

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

kuma의 이미지

델파이는 소외 받는 언어 입니다. 소외 받는 이유가 언어가 나쁘거나 성능이 떨어져서가 아닙니다. 단지 Unix 계열이나 요즘 나오는 거의 모든류의 시스템이 C 를 기본 제공하고 ( 특히 초창기 Unix 시스템에는 C 가 기본 공짜로 인스톨 되어 있습니다. 어느 순간 Unix 또한 기본이 아닌 License 로 C 를 팔았습니다. ) 있습니다. 그런데 델파이는 윈도 환경 이외에는 전무한 상태이며, 파스칼 또한 초창기 이외에는 타 시스템에 포팅되어 활발하게 동작하는 경우가 거의 없습니다. 이러니 소외 받는 언어라 말하지 않을수 없지 않을까요? :(

그렇지만 VC 와 델파이를 기능적 측면에서 본다면 델파이에 손을 들어주고 싶네요. 그 경이로운 제작 시간의 단축, 뛰어난 성능 어디 흠잡을곳이 없습니다.

하지만, 언제까지나 윈도 프로그래머로 남아 있을수 없고, 언제든지 개발 시스템이 바뀔수 있는 것이 프로그래머의 현재 모습이다보니 어느곳에서나 사용가능한 연장으로 C 를 선택할 뿐인것 같습니다.

부가적인 연장으로 C++ 이나 파스칼 같은 언어를 사용은 하지만 아직도 기본 도구는 C 임은 어쩔수가 없는 현실이네요. ( 드라이브 프로그램에서 제공하는 API 와 예제는 기본 C 를 무조건 지원합니다. 하지만 C++ 만 해도 지원하지 않는 싸구려 제품이 수두룩한것이 현실입니다. )

feanor의 이미지

kuma wrote:
그런데 델파이는 윈도 환경 이외에는 전무한 상태이며, 파스칼 또한 초창기 이외에는 타 시스템에 포팅되어 활발하게 동작하는 경우가 거의 없습니다. 이러니 소외 받는 언어라 말하지 않을수 없지 않을까요? :(

Kylix라고 들어 보셨는지? 리눅스용 델파이입니다만.

--feanor

chunsj의 이미지

mastercho wrote:

그리고 현대 컴파일러에서는 저런 코드르 10배 100배 차이나게
해석하지 않습니다 , 특히 1+1=2 라는 식의 간단한 코드를
10-100배 차이나게 해석하다니요?

아마 제가 숙제로 만들었던 컴파일러로 돌리면 그정도 차이가 날지로 모릅니다 :-)

그리고 파스칼이 빠르다고 무슨 문제가 있겠습니까? 빠르면 빠른 거고, 느리면
느린거지. 제가 보기엔 그냥 지나쳐도 될만한 일 같습니다. 그걸 보고 파스칼이
무조건 C보다 빠르다 라고 생각하는 사람이라면 어차피 무슨 말인지 설명해
줘도 모를 사람입니다.

chunsj의 이미지

또는 제 생각엔 프로그램의 바이너리 크기가 달라서 생기는 차이 일 수도 있습
니다. 저런 프로그램에서 (멀쩡한 컴파일러라면) 언어별 차이가 난다는 것이
더 이상할 수도 있습니다.

MyCluster wrote:

원래는 수십번해서 평균을 내던지 해야하지만, 어쨌던 대충 해보면 1/1000초 대에서 c가 포트란보다 아주조금 빠릅니다.
lollipop의 이미지

애초에 KLDP에 포스팅한 글부터 문제가 있었다는걸 모르는지.

여기저기 돌아다니며 긁은 자료를 참고 자료랍시고 올렸는데

개인이 테스트한 자료를 그곳에 올려졌다고 해서 사이트 이름을 타이틀로 올리는가 하며

부풀리기 좋아하고 없는 이야기 만들어내는

괜히 상대해줬다가 피곤하게 쫓아다니면서 쫑알댈까봐 여기까지.

아! 마지막으로 나쁘지 않게 끝낼 수 있을 것 같던 스레드를 조모씨가 참견하는 바람에

쓰레기장이 돼버렸다는걸 조모씨가 모른다면 낭패.

mastercho의 이미지

lollipop wrote:
애초에 KLDP에 포스팅한 글부터 문제가 있었다는걸 모르는지.

여기저기 돌아다니며 긁은 자료를 참고 자료랍시고 올렸는데

개인이 테스트한 자료를 그곳에 올려졌다고 해서 사이트 이름을 타이틀로 올리는가 하며

부풀리기 좋아하고 없는 이야기 만들어내는

괜히 상대해줬다가 피곤하게 쫓아다니면서 쫑알댈까봐 여기까지.

아! 마지막으로 나쁘지 않게 끝낼 수 있을 것 같던 스레드를 조모씨가 참견하는 바람에

쓰레기장이 돼버렸다는걸 조모씨가 모른다면 낭패.

쯔즈 어쩐지..... 이분이 헌주님이셨군요

가끔 어린아이 같이 구는 사람을 인터넷에 자주 봅니다만은....
제가 그런 사람한테 딱걸린 느낌입니다

저번글을 볼때 알아봤습니다만은.... 비겁하게 굴지 마시죠

궁금하신분은 바로 위에 글을 올린분이 저번에 쓰신 글에 링크 걸어놓은 데브피아 VC++ 자유게시판에 가시면 됩니다

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

thedee의 이미지

때로는 우문이 현답을 이끌수도 있다는 생각이 드네요.
앞에서 MyCluster님이 좋으신 말씀을 많이 해주셨는데
논쟁이 길어지면서 좋은 얘기들이, 없어도 좋을(없었으면 더 좋았을)
얘기들에 묻혀버리는 것 같아 안타깝습니다.

Prentice의 이미지

트롤이 출현한 것 같은데요.. 스레드 잠금에 한표 던집니다.

hunju의 이미지

저기 위에 롤리팝님이 글을 쓰셨던데
그 분이 저라고 단정하는 이유가 뭡니까?
비슷한 내용을 얘기해서?
절 조해진님과 같은 수준으로 끌어내리지 마시죠?
분명히 말하건데
전 롤리팝님 모릅니다.
KLDP? 어제 처음 왔고
지금 막 글 남기려고 가입 했습니다.
확대 해석 과대 포장 그 끝이 도대체 어딥니까?

소타의 이미지

제 사견으로는 mastercho님께서 논점 제기를 잘못하셨다고 생각합니다.
처음에는 파스칼 개발자가 파스칼이 C보다 2배 빠르다고 주장하고 있는데 이것을 꺾어달라는 식으로 논점을 제기하셨고, 논쟁의 대상은 "저 몇줄의 코드로 언어의 모든걸 평가하다니요?" 였습니다.

이 성능의 차이가 컴파일러의 차이라는 게 드러나고 나서가 문제인데요.. 결국 이것은 언어의 문제가 아니라 컴파일러의 특성 차이라는 것입니다.
처음 파스칼이 2배가 빠르다고 주장했던 파스칼 개발자도 사실은 이 부분은 몰랐을 수도 있습니다. 그렇다고 파스칼이 성능이 떨어지는 언어라거나 델파이가 우둔한 컴파일러는 절대 아니라는 것입니다.

Quote:
글세요 , 억지 논리 아니신가요? 우월하지 않은데도 우월한척한거겠죠

그리고 파스칼이 싫다기보다 , 말이 안되는걸로 우기는게 싫었을뿐입니다

파스칼이 얼마든지 다른 부분에서도 C보다 좋을수 있습니다

그것을 부인한적은 없습니다

하지만 for문같이 몇줄 되지도 않은 코드에서 2배이상 파스칼이 빠르다고 우기는 모습에 짜증이 났을뿐이죠

오히려 C가 싫은 파스칼 추종자의 열등감이 부른 사건이라 불러야 정상이겠죠

절대 바람직한 토론 태도가 아닙니다. mastercho님의 포스팅 중간중간에 충분히 감정을 이입시킬수 있을만한 문장들이 있습니다. 다 끄집어내서 토 달 필요는 없을 것 같구요.
C나 파스칼이 충분히 좋은 언어고 각자 좋은 컴파일러를 가지고 있다면 어느 누구 한쪽이 흠집낼 필요는 없다고 생각합니다.
파스칼 개발자의 있지도 않은 열등의식을 부각시켜 C개발자들의 상대적 우월감을 이곳에서 이용할 필요는 없다고 생각합니다.

토론은 앞사람의 입을 막는 것이 아닙니다. 델파이라도 한번 깔아보시고 소외되었네, 열등감이 어떠네 라고 판단 하시기 바랍니다. 그 다음에 파스칼 개발자들에게 확실한 근거(그 짜증나는 사람의 코드처럼요)를 가지고 응답해야 할 것입니다. 제가 볼때는 mastercho님이야 말로 파스칼을 싫어하는 C/C++추종자로만 보입니다..

ps. 프로그램의 성능은 20%의 코드가 좌우한다. 라는 말 들어보셨는지.. 이곳에서 마저도 20:80의 법칙이 작용합니다. 몇 줄의 코드를 무시하시면 안되져 :D

mastercho의 이미지

nonun wrote:
제 사견으로는 mastercho님께서 논점 제기를 잘못하셨다고 생각합니다.
처음에는 파스칼 개발자가 파스칼이 C보다 2배 빠르다고 주장하고 있는데 이것을 꺾어달라는 식으로 논점을 제기하셨고, 논쟁의 대상은 "저 몇줄의 코드로 언어의 모든걸 평가하다니요?" 였습니다.

이 성능의 차이가 컴파일러의 차이라는 게 드러나고 나서가 문제인데요.. 결국 이것은 언어의 문제가 아니라 컴파일러의 특성 차이라는 것입니다.
처음 파스칼이 2배가 빠르다고 주장했던 파스칼 개발자도 사실은 이 부분은 몰랐을 수도 있습니다. 그렇다고 파스칼이 성능이 떨어지는 언어라거나 델파이가 우둔한 컴파일러는 절대 아니라는 것입니다.

Quote:
글세요 , 억지 논리 아니신가요? 우월하지 않은데도 우월한척한거겠죠

그리고 파스칼이 싫다기보다 , 말이 안되는걸로 우기는게 싫었을뿐입니다

파스칼이 얼마든지 다른 부분에서도 C보다 좋을수 있습니다

그것을 부인한적은 없습니다

하지만 for문같이 몇줄 되지도 않은 코드에서 2배이상 파스칼이 빠르다고 우기는 모습에 짜증이 났을뿐이죠

오히려 C가 싫은 파스칼 추종자의 열등감이 부른 사건이라 불러야 정상이겠죠

절대 바람직한 토론 태도가 아닙니다. mastercho님의 포스팅 중간중간에 충분히 감정을 이입시킬수 있을만한 문장들이 있습니다. 다 끄집어내서 토 달 필요는 없을 것 같구요.
C나 파스칼이 충분히 좋은 언어고 각자 좋은 컴파일러를 가지고 있다면 어느 누구 한쪽이 흠집낼 필요는 없다고 생각합니다.
파스칼 개발자의 있지도 않은 열등의식을 부각시켜 C개발자들의 상대적 우월감을 이곳에서 이용할 필요는 없다고 생각합니다.

토론은 앞사람의 입을 막는 것이 아닙니다. 델파이라도 한번 깔아보시고 소외되었네, 열등감이 어떠네 라고 판단 하시기 바랍니다. 그 다음에 파스칼 개발자들에게 확실한 근거(그 짜증나는 사람의 코드처럼요)를 가지고 응답해야 할 것입니다. 제가 볼때는 mastercho님이야 말로 파스칼을 싫어하는 C/C++추종자로만 보입니다..

ps. 프로그램의 성능은 20%의 코드가 좌우한다. 라는 말 들어보셨는지.. 이곳에서 마저도 20:80의 법칙이 작용합니다. 몇 줄의 코드를 무시하시면 안되져 :D

잠시만...... 저는 분명 데브피아에서 제시한 for 코드에 대해
언어간 차이가 아니라 컴파일러 차이라 주장했습니다

근데도 저분은 델파이보다 C++ '언어'가 느리더라 라고 주장을 계속해온것입니다

게다가 지금은 VC++과 델파이의 툴 비교 였는데 언어 비교를 했다고
말 돌리기를 하고 있습니다

일단 테스트 했던 사람도 컴파일러 관점이 아닌 C++ '언어'에 대한 관점으로 계속 접근했고 테스트에 참여 한분도 VC++뿐 아니라 볼랜드 C++도 사용하였습니다... , 근데도 VC++과 델파이툴의 비교 였다고 지금에 와서 말을 바꾸는것은 어떻게 생각하는지요?

저분에 관한 내용은 차라리 직접 데브피아 VC++ 게시판에서 읽어보시는게
좋을듯 싶습니다

참 그리고 이 쓰레드에서 도 역시 MyCluster님과의 대화를 하기전의 제 글에서도
언어의 차이라기보단 컴파일러차이라고 분명 주장했습니다

그리고

위에

헌주님 그리고 조사하면 다 나올텐데요? 유치하게 하지 않았으면 좋겠습니다
새로 또 가입하고 글 쓰시는군요

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

mastercho의 이미지

이걸 보시면 제가 컴파일러 차이라고 주장한 내용이 있습니다

mastercho wrote:
그러게요 저도 저런 코드를 해석하는 컴파일러의 차이로 인한 성능차이라고 생각하거든요

예를 들면 VC++ 과 gcc 에서도 저 코드를 컴파일해보면
다른 결과가 나오는거와 같다고 생각하거든요

특히 파스칼 자체도 어차피 C언어 컴파일러처럼 네이티브코드를 낸다고 알고 있는데

저 내용을 주장하는분은
마치 비주얼 베이직이 C언어보다 느리다는 관점을
적용시키는 오류를 범하고 있는데.... 도무지 -_-; 말이 안통해서요

뭔가 다른 방법으로 설득을 시켜야 할거 같은데,
방법이 떠오르지 않아서 여기까지 오게되었습니다 ^^;

이 주장을 하던분도 원래는 원래 C언어 쓰는분인데 ,
이거 C/C++이 파스칼보다 빠르다는걸 증명 못하면
아무래도 프로젝트를 파스칼[델파이]로 하게 될거라는데

어째튼 주장하는 내용이 , 좀 뷁 스럽네요 --;

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

소타의 이미지

Quote:
잠시만...... 저는 분명 데브피아에서 제시한 for 코드에 대해
언어간 차이가 아니라 컴파일러 차이라 주장했습니다

그건 제대로 집고 넘어갈야 할거 같습니다

이것이 mastercho님의 과실에 큰 영향을 끼치지는 못합니다.. 바로 다음 답글에서 컴파일러에 대한 언급이 있었으니까요.. 그리고 첫글의 제시가 제가 말한 대로가 맞지 않나요..?
데브피아에서의 글을 보고 나서 저도 말씀 드린 것입니다..
언어의 우월성이라는 진부한 주제에 대해 지나치게 감정적으로 끌고 나가지 마셨으면 합니다.

Quote:
헌주님 그리고 조사하면 다 나올텐데요? 유치하게 하지 않았으면 좋겠습니다
새로 또 가입하고 글 쓰시는군요

이거 근거 있는 얘기인가요..? 추측이라면 추측이라고 밝혀주시길.. 저도 C추종자지만 이런식의 토론은 누워서 침밷기 같습니다.

수정함
토론을 데브피아의 연장선에 두지 마시고 이 게시판에서 정식으로 논점을 제시하세요..

mastercho의 이미지

알겠습니다, 저도 실수를 한 것은 맞으니

이쯤에서 저도 그만하겠습니다

그리고 같은 사람인것에 대한 추측은 증거도 없는 내용이 이때문에

그부분에 있어서는 헌주님에게 사과 드립니다

nonoun wrote:
토론을 데브피아의 연장선에 두지 마시고 이 게시판에서 정식으로 논점을 제시하세요

그리고 nonun님에게 말씀 드리자면
논점이랄것이 없습니다 , 실제로 제가 궁금한것은 컴파일러 성능에 관한 의문이 아니라 언어간의 for문 해석 능력의 차이였습니다

이미 다른분들이 잘못된 테스트를 다 밝혀 주셨고 실지로 어셈블리까지
확인해 준분들이 계셨기때문에 더이상의 의문은 없습니다

그럼

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

serialx의 이미지

C 가 무조건 파스칼보다 아니, 타언어 보다 빠르다는 편견 같은걸 가지시는 분들이 많은걸로 압니다.

그래서 그런 테스트를 애초부터 해서 사람들의 의식을 바꾸려는게 목적이 어니었을까 생각됩니다.

물론 그 생각이야 어찌됐건, 이상한 근거로 그 주장을 폈다는게 문제인건 사실..

소타의 이미지

어느 정도 정리된 듯 합니다..
편하게 제 생각을 말하자면 말장난같다는 것입니다.
파스칼 개발자는 파스칼을 옹호하고 싶은?거고 C개발자는 C를 옹호하고 싶은?것 뿐 이구요.
두 언어가 비슷한 성능을 보여준다면 이때야 말로 정말 제대로 싸움이 나기 마련이죠 -_-;;;;;;; 차라리 성능차이가 확 나버린다거나 하면 쌈도 안나는데 쫍 -.-

그 mastercho님이 말씀하시는 "짜증나는 사람"이 제시한 파스칼 코드는 확실히 델파이로 컴파일했을 때 다른 언어보다 빠른 속도를 보였습니다. 이 부분은 상당히 정확하게 테스트가 된 것 같으니까 "인정"을 해줘야 할 것입니다..

문제는 이것을 "인정"하는 과정입니다.

파스칼 옹호자는 이러이러한 결과(심하게 2배 이상)가 있으므로 파스칼이 더 좋다, 라고 하는 것이죠.
가장 좋은 "인정"은 파스칼과 C 모두 좋은데 이런 상황에서는 델파이에서 컴파일한 것이 가장 빠르다. 라고 말하고 모두 인정해야 좋은 모양이겠지요.
그리고 이걸 받아들이는 사람도 "그래.. 그건 그렇다." 라고 말하고 다음 단계로 넘어가야 좋은 모습이 아닐까 생각합니다.
그런데 말하는 사람이나 받아들이는 사람이나 모두 "내가 옹호하는 언어가 최고야!" 라는 과충성심 때문에 이 부분에서 에러(?) 난 듯 합니다 -_-;

난 파스칼도 좋고 C도 좋은데 어쩌죠 -.-

kall의 이미지

스레드 잠금에 한표 던집니다.

mastercho님은 C++에 관해 조금이라도 부정적인 얘기만 나오면
감정적으로 대응하시는것 같더군요.

조금 자제해주셨으면 하는 생각이... :oops:

----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ

bugiii의 이미지

몇번이나 글을 썼다 지웠다 했습니다. 괜히 끼어들어서 온도를 높히지나 않을지...

mastercho님, MyCluster님 그리고 많은 다른 분들의 글을 아주 중요하고 재미있게 읽고 배우고 있습니다. kldp의 훌륭한 논객(?)분들의 좋은 글이 이런 일들 때문에 줄거나 하는 일이 없었으면 좋겠습니다.

p.s. 그 델파이의 필요없는 창... 필요없는 창이 아니라 구조상 꼭 필요한 크기 0x0인 창이 하나 뜨긴 합니다. 하지만, 그것때문에 진짜 문제가 되는 경우는 거의 없었습니다. 트레이에 가게 하거나 최소화, 이전 상태로 왔다 갈 때정도에서 원래의 Win32 API하고는 조금 다른 경우가 있긴 했습니다만... 충분히 극복할 수 있었습니다.

죠커의 이미지

bugiii wrote:
p.s. 그 델파이의 필요없는 창... 필요없는 창이 아니라 구조상 꼭 필요한 크기 0x0인 창이 하나 뜨긴 합니다. 하지만, 그것때문에 진짜 문제가 되는 경우는 거의 없었습니다. 트레이에 가게 하거나 최소화, 이전 상태로 왔다 갈 때정도에서 원래의 Win32 API하고는 조금 다른 경우가 있긴 했습니다만... 충분히 극복할 수 있었습니다.

그렇군요. 그때 신경이 쓰였었는데 그게 문제가 되는 경우가 없는 거였군요. :-)

그런데 어떤 이유에서 0x0인 창이 뜨는가요?

vacancy의 이미지

CN wrote:
언어자체를 본다면 파스칼과 C는 닭잡는 칼, 소잡는 칼로 나눠질 수 없을 것 같은데 비베와 경쟁을 하는 듯한 이미지를 풍기는 델파이라는 툴은 정말 독특한 것 같습니다. (이것도 편견이라면 비판해주십시요.)

저는 테스트들이 보다 공정하고 더 넓은 범위에서 이루어졌으면 좋겠군요. 성능 뿐만 아니라 활용범위면에서도 테스트 해보았으면 좋겠습니다.

어떻게 파스칼과 C언어라는 언어차이보다 활용범위의 차이가 더 많이 나게 되었는지 아직은 이해되지 않네요.

사실 언어라는 면에서는,
Pascal과 C는 처음 만들어진 목적이 달랐죠.
Pascal은 교육용으로 만들어진 엄격한 언어고, ( 지금은 좀 다르지만요. )
C는 시스템 프로그래밍을 위한 엄격하다고 보기는 어려운 언어였으니까요.
C++는 목적이 있다기보다 그냥 범용 언어로 태어난것 같고요.

델파이와 비베의 관계는 사실 예전엔 경쟁 관계였다고 볼수 있겠지만,
사실 여러 면에서 비베가 역부족이었던것으로 알고 있습니다.
현재의 VB.NET은 써보지 못해서 잘 모르겠지만요.
그 이전까지는 확실히 그랬던 것 같네요.
( 사실 Basic이라는 언어 자체의 한계였던 것도 같고요. )
( 그래서 VB.NET에서는 바뀐 요소가 상당히 많다고 들었습니다만. )

Pascal과 C++가 언어 차이보다 활용차이가 나게 된 것은요.
현재 주로 Pascal을 쓰는 사람들은 Delphi/Kylix 유저들일텐데요.
Delphi/Kylix는 RAD 툴이라서 프로그래밍하는 스타일에 차이가 좀 있습니다.
( 이점은 C++를 기반으로 한 Borland C++ Builder도 마찬가지죠. )
사실 이점은 Delphi를 써보셔야 이해하기 더 좋으실 것 같고요.
그래서 UI 위주의 프로그래밍이나 Database관련된 쪽에서는 Delphi가,
( Database등 몇몇 파트로는 좋은 Component를 많이 제공해주니까요. )
그 외의 분야에서는 유저층 두껍고 자료 구하기 쉬운 VC++가,
아무래도 쓰기에 좋다는 생각이 듭니다.
( 특히 DirectX같은건 아예 M$에서 VC++에서 더 쓰기좋은 SDK를 제공하니. )
솔직히 Delphi쓰다가 VC++를 쓰게 되면서,
"이게 왜 'Visual' C++라는 거지 ?" 했었습니다. -_-
그래도 대세가 C++이다보니 쓰고는 있지만요.

Object Pascal과 C++의 언어적인 차이는 대략,
C#/Java와 C++의 차이와 비슷하다고 보시면 될것 같습니다.
( 단, Object Pascal은 Native Code를 생성해 주죠. )
특히 OO면에서는 C#/Java는 C++를 닮았다기보단 Object Pascal과 닮았죠.
솔직히 Object Pascal이 더 깔끔하다는 생각이 듭니다만.
( 그래서 파싱도 빠른 것일 것이고요. 아마 10배 이상. ;; )

그나저나 밑의 미리보기 창을 새로고침해서 보니,
또 우려했던 토론 진행이 이어지는 것 같네요. -_-
mastercho님께선 확실히 C/C++에 대한 부정적인 얘기가 나오면
너무 민감해지시는 것 같습니다.
솔직히 C#/Java/Delphi 중 어느 하나를 잡아서
직접 많이 써보셨으면 하는 바램이 있네요.
C++의 장점도 많이 있지만, 다른 언어들도 장점이 많이 있답니다.
특히 productivity면에서는 C++보다 위 언어들이 훨씬 높을것 같네요.
( 웬만해선 오류 없는 완벽한 프로그래머라면 얘기가 다르겠지만요. )

bugiii의 이미지

그 0x0 창이 일을 좀 합니다... TApplication에서 사용하는 것이고, 어플리케이션에 하나 존재하는 창이 있어야 처리할 수 있는 일이 있는 것으로 알고 있습니다. 이래저래 일반 win32 api 하고 좀 다른데, 바깥에서 보기에는 차이가 별로 없죠. 아. 그 MainForm의 Caption을 바꾸면 타이틀 제목은 바껴도 태스크바의 제목이 바뀌지 않는 것도 이거 때문이기도 하구요 (맞나요? 하도 오래전 일이라... 프로젝트 옵션에 따로 있기도 하고 Application에서 설정해야 하기도 할겁니다.)

또... 아마 델파이에서 다이얼로그라는 것이 win32의 다이얼로그를 직접 사용하지 않고 좀 다르게 구현하는 방식이라 그 일도 좀 담당하는 것으로 알고 있습니다.

자세히 모르는 넘이 괜히 나서는 거 아닌가 모르겠습니다. 부끄...

1.0부터 계속 써오긴 했지만 7.0인 현재 내부가 어떻게 변했는지는 더이상 깊이 파보지 않아서 잘 모릅니다. Forms.pas를 보시면 더 자세하게 아실 수 있을 것입니다. (정말 무책임합니다...)

midmee의 이미지

흠냐.. 오늘 처음 와서 글들을 봤지만, 그래도 이쪽은 토론의 분위기가 제데로 이어지는 듯 합니다. ^^;

일단 아래의 글은 이 논쟁이 감정적으로 가는데 한 몫을 단단히 한 글이었습니다.

Quote:
좀 믿기 어려운 얘기라고 봅니다.
어쩌다 소 뒷걸음질 치다 쥐 잡듯 그런 경우가 생길지도 모르겠지만 종합적으로는 안 그렇겠죠.
"우리 이번에 게임 서버 만드는데, 성능을 중시해서 코어 부분은 델파이로 만들기로 했어"
길가던 강아지도 웃을 일 아닙니까?
위 댓글들을 보면 어셈블러 핸드 옵티마이징 다음으로 빠른 게 델파이 컴파일러 출력이라는 듯 얘기가 나오는 것 같은데
델파이 컴파일러를 C로 만들지 않았을까 감히 추측해 봅니다.
정수 500만 더하기 가 2배 빠르다느니 같은 얘기가 나오든데
그런건 좀 느려도 됩니다.
정상적인 C/C++ 프로그래머중에 더하기 500만 하지 루프 돌려서 500만 더하는 사람은 없으니까요.
다음은 위에 황헌주님이 보여주신 소스를 컴파일 한 결과입니다.

--------- 컴파일 옵션: cl -O2 /Fa x1.cpp

--------- 출력 내용: x1.asm
...
...
; Line 8
mov ebx, 100 ; 00000064H
npad 8
$L613:
; Line 10
xor esi, esi
xor edi, edi
; Line 11
mov ecx, 1
npad 7
$L616:
; Line 12
mov eax, ecx
cdq
add esi, eax
adc edi, edx
inc ecx
cmp ecx, 5000000 ; 004c4b40H
jle SHORT $L616
; Line 8
dec ebx
jne SHORT $L613
; Line 14
...
...

이 소스를 어떻게 2배를 빠르게 해요???
불가능해 보이지 않으세요?
혹, 디버그 DLL 버전의 런타임 라이브러리랑 링크하게 빌드해놓고 벤치마크를 해서
DLL 로딩 타임이 포함됐을 수도 있구요.
이런 말 하면 좀 죄송스럽습니다만,
델파이 프로그래머가 수행한 벤치마크 결과는 사실 좀 신뢰가 안가죠.
안 그렇습니까?

상황을 자세히 이야기 하긴 좀 그렇고,(그냥 데브피아에서 처음부터 보시면 이해가 가실 듯..) 제가 마지막으로 길게 올렸던 글입니다. 위의 글이 좀 지나친 느낌을 받을 수 밖에 없었죠..

Quote:
음.. 글들을 보니 상당히.. 많은 분들께서 많이 앞서가고 계신듯 합니다.
앞에서 이미 밝혔듯...
델파이가 C++보다 좋다. 멋지다. 우세하다... 이게 아닙니다.
델파이나 C++이나 각각의 프로젝트 성격에 맞게 써야 한다.. 그것이 요지였습니다.
헌주씨에게도 늘 이 이야기는 했었구요...
델파이가 무조건 우세하다면, 모든 프로젝트를 델파이로 진행해야 겠죠.
또한 헌주씨는 C++프로그래머이지 델파이 개발자는 아니십니다... 아직까지는..
근데 많은 분들께서 델파이가 C++보다 낫다.. 라고 잘못 이해하시는 것 같습니다.
적어도 String 처리부분에 있어서는 델파이가 C++보다 낫다.. 라는 뜻이었습니다.
만약 우리가 하는 프로젝트에서 String을 많이 다루어야 하는 프로젝트라면, 델파이가 낫다란 뜻이었습니다.
덱스트 업로드 처럼 프로그램의 크기가 상관이 없는 서버사이드 프로그래밍이면서, 많은 량의 String을 분석하고 다루어야 하는 프로젝트라면 델파이를 쓰는 것이 낫다는 뜻이었고,
XFileUpload처럼 클라이언트 사이드에 다운로드되어 사용되는 프로그램이라면, 컴팩트한 실행파일을 가진 C++로 하는 것이 낫다.. 라고 말씀 드렸습니다.
그리고 DEXTUpload.NET에서는 C#을 이용해서 개발하자.. 라고 했구요.
그런데 아직 많은 프로그래머 분들은 무조건 C++이 최고다.. 란 인식으로 밀어 붙이시는 경향이 있습니다.
진정한 프로그래머는 언어를 가지고 이것이 최고다.. 라고 하지 않습니다. 각 프로젝트에 맞는 언어를 선택하여 프로그래밍 하면 그 뿐입니다.
하지만 무조건 C++로만 하는 프로그래머 라면 프로그래머 라기 보단 그냥 C++ 코더 라고밖에는 볼 수 없겠네요... 코더 수준을 벗어나신 많은 프로그래머 분들은 모든 언어에 대한 장단점을 파악하고 계십니다...
제 글은 누구에게 상처입히는 그런글이 아닙니다. 모두에게 의견을 말하는 것인데, 어떤 분들은 감정적으로 대처를 하시는 군요...
진짜로 실력있으신 분들은 논란의 글을 읽으면서 그냥 웃고만 계실 듯 하네요... 저 역시 20년 넘게 프로그래밍을 했지만.. 아직 초보 개발자라 이런글을 남깁니다.. 쩝..
아직도 C++만 최고라고 생각하시는 분들은 조금만 양보해서 다른 도구들도 한번 살펴보세요.
한국에서 미국은 가보지도 않고 미국에 갔다온 사람에게 미국에 대해 자신이 더 많이 안다고, 더 많이 들었다고 하는것은.. 어불성설 아니겠습니까..?
경험을 하십시오. 프로그래머에게 있어서 많은 언어의 경험과 프로그래밍의 경험은 피가 되고 살이 된다고 생각합니다...
아마도 제 글에도 많은 분들의 리플이 달릴지도 모르겠지만.. 저는 토론은 좋습니다. 하지만 감정섞인 싸움은 사양합니다. ^^;

흠.. 생각보단 고정관념이란것이 상당히 무섭다는 것을 알게되었답니다. 문자열 처리 부분에 대한 논의를 저와 황헌주씨와 하던것이었는데.. 이것이 왜 C++과 델파이의 전체적인 성능을 논하는 것으로 잘못 생각하시는 분들이 생겼는지는.... 쩝..
참고로.. 전 C 와 델파이를 혼용해서 쓰구요.. 무조건 델파이가 좋다.. 무조건 C가 좋다.. 그런뜻이 아니었습니다. 위에 보시면 아시겠지만, 라디오용 뺀치(롱노즈 라고 하던가요?)와 그냥 큰 뺀치 중에 뭐가 더 좋다고 하면.. 뭐라고 답하시겠습니까? ^^

bugiii의 이미지

주제하고는 상관없지만 전에 어디선가 델파이는 델파이로 만들었다고 들은 기억이 있어서 한번 더 글을 올려봅니다. 정말 아니면 말고 식인데... 늙어가니 기억에 자신이 없어지네요... -_-;

midmee의 이미지

bugiii wrote:
주제하고는 상관없지만 전에 어디선가 델파이는 델파이로 만들었다고 들은 기억이 있어서 한번 더 글을 올려봅니다. 정말 아니면 말고 식인데... 늙어가니 기억에 자신이 없어지네요... -_-;

델파이는 델파이로 만들어졌습니다. ^^

사실 저분의 글에 제가 답변한게 있긴 한데...
http://www.devpia.com/Forum/BoardView.aspx?no=35217&page=1&Tpage=1094&forumname=vc_free&stype=&ctType=&answer=

에 보시면 제가 답변한 글입니다. ^^

Testors의 이미지

midmee wrote:
근데 많은 분들께서 델파이가 C++보다 낫다.. 라고 잘못 이해하시는 것 같습니다.
적어도 String 처리부분에 있어서는 델파이가 C++보다 낫다.. 라는 뜻이었습니다.
만약 우리가 하는 프로젝트에서 String을 많이 다루어야 하는 프로젝트라면, 델파이가 낫다란 뜻이었습니다.
덱스트 업로드 처럼 프로그램의 크기가 상관이 없는 서버사이드 프로그래밍이면서, 많은 량의 String을 분석하고 다루어야 하는 프로젝트라면 델파이를 쓰는 것이 낫다는 뜻이었고,
XFileUpload처럼 클라이언트 사이드에 다운로드되어 사용되는 프로그램이라면, 컴팩트한 실행파일을 가진 C++로 하는 것이 낫다.. 라고 말씀 드렸습니다.

어떤 테스트이길래 C++ 보다 델파이가 차이가 날정도로 빠른 결과가 나오나요? 궁금하군요.

참고로 C++ 로 스트링을 처리하는 일반적인 방법은 STL 의 std::string 을 사용하는것과 char[] 을 사용하는것, 그리고 스스로 만들어 쓰는것 3가지 방법이 있고,
STL 은 HP, SGI, Dinkumware, STLPort 등 다양한 버젼들이 있습니다.

어떤 테스트를 하셨는지는 모르겠지만 그중 한가지 결과로 "스트링 처리는 C++ 보다 델파이가 낫다" 라는 결론을 내리신다면 그것은 넌센스입니다.

덧. 클라이언트 사이드에 다운로드되어 사용되는 프로그램이라서 사이즈를 줄이고 싶으시다면 C++ 을 쓰지말고 C 를 사용하십시오.

midmee wrote:
위에 보시면 아시겠지만, 라디오용 뺀치(롱노즈 라고 하던가요?)와 그냥 큰 뺀치 중에 뭐가 더 좋다고 하면.. 뭐라고 답하시겠습니까? ^^

뭐가 더 좋냐고 물으면 용도에 맞는걸 쓰라고 대답해 주겠지만,
누군가 회색 라디오용 뺀치와 빨간색 그냥 큰 뺀치를 보고난 다음
"라디오용 뺀치는 회색이라서 그냥 큰 뺀치가 더 이쁘다" 라고 얘기한다면
-넌센스- 라고 대답해 주겠습니다.

Testors의 이미지

그 스트링 비교 테스트란것을 devpia 에서 보고 왔습니다.

아래와 같은 비유가 적당할런지요..?

.
.

수동 자동차와 오토 자동차가 있었습니다.

어떤 드라이버가 둘다 시동을 걸어본 뒤에 엑셀을 밟아 전력질주를 해보았습니다.

아니 그런데 이게 왠일입니까?

오토는 밟는대로 쭈욱 잘 나가주었는데 반해

일반적으로 효율이 더 좋다고 알려져 있고, 프로 드라이버들이 애용한다는 수동 자동차는 우우웅~~!

굉음만 내고 속도가 형편 없는 것이었습니다.

그 드라이버는 "빨리 달릴때는 오토 자동차가 더 낫다" 라는 결론을 내렸습니다.

옆에서 고참 드라이버가 "기어를 바꾸어 주어야지" 라고 충고해 주었습니다.

그러자 그 드라이버는 "똑같은 조건에서 똑같은 형식으로 테스트를 해야 한다" 라고 대답하였습니다.

그는 모든것을 이미 알고있다는듯 이렇게 말합니다.

"수동 자동차나 오토 자동차나 각각 알맞는 용도가 있다. 용도에 맞게 잘 골라 쓰면 그만이다. 이를테면 빨리 달리고 싶을때는 오토 자동차를 선택하면 되는것이다. 나는 이번에 고속도로를 달려야 하기에 오토 자동차를 사용하기로 결정했다."

mycluster의 이미지

Quote:
수동 자동차나 오토 자동차나 각각 알맞는 용도가 있다. 용도에 맞게 잘 골라 쓰면 그만이다. 이를테면 빨리 달리고 싶을때는 오토 자동차를 선택하면 되는것이다. 나는 이번에 고속도로를 달려야 하기에 오토 자동차를 사용하기로 결정했다."

이렇게 말씀드리고 싶군요. 무슨 자동차를 선택하고, 고속도로를 타던 국도를 타던 관심없읍니다. 단지 관심있는 것은, 님이 몇월 몇일 몇시까지 어디에 도착할 수 있는지만 관심이 있군요.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

소타의 이미지

C/C++이 빨랐던 케이스, 파스칼이 빨랐던 케이스를 모두 나열하기 전에는 이 논쟁은 끝이 없을 듯 합니다.
뻰치나 자동차에 비유 하는 것 자체가 부적절한 듯 싶습니다.
어떤 건 어떤 언어가 낫다 라고 아무도 말 할 수 없습니다...
같은 동작을 하는 더 빠른걸 다른 언어로 구현해버리면 그날부터 그 언어가 낫게 되는 건가요..?
차라리 쓰레드가 잠궈지는 편이.. 애초에 논점제시가 불분명하고 감정이입이 많이 되었고 앞으로도 그럴것 같군요..

Testors의 이미지

한쪽은 int64 로, 다른 한쪽은 int32 로 테스트를 하고서 "정수연산에 있어서 XX 언어가 빠르다" 라던가,
할당전략이 다른 두 string 타입테스트를 해보고 "스트링 처리는 XX 언어가 빠르다" 라고 얘기하는것의 오류를 지적하는것은 의미가 있는 일이라고 생각합니다만.. 이견을 가지거나 관심이 없으신분들이 의외로 많군요. ^^;;

MyCLuster wrote:
이렇게 말씀드리고 싶군요. 무슨 자동차를 선택하고, 고속도로를 타던 국도를 타던 관심없읍니다. 단지 관심있는 것은, 님이 몇월 몇일 몇시까지 어디에 도착할 수 있는지만 관심이 있군요.

저같은 경우는 남이 몇월 몇일 몇시까지 어디까지 도착할 수 있는지 아무 관심이 없습니다. 뭐 제가 그거 구현해야 할것도 아니고.. 개인적으로는 어떤 차를 타든지 도로상황이 있는지라 별 차이 안날거라고 생각합니다. 다만 저런 테스트로 수동이 오토보다 느리다고 결론 내리는건 잘못된 것이라고 지적했을뿐 :)

nonun wrote:
C/C++이 빨랐던 케이스, 파스칼이 빨랐던 케이스를 모두 나열하기 전에는 이 논쟁은 끝이 없을 듯 합니다. 뻰치나 자동차에 비유 하는 것 자체가 부적절한 듯 싶습니다.
어떤 건 어떤 언어가 낫다 라고 아무도 말 할 수 없습니다...
같은 동작을 하는 더 빠른걸 다른 언어로 구현해버리면 그날부터 그 언어가 낫게 되는 건가요..?
차라리 쓰레드가 잠궈지는 편이.. 애초에 논점제시가 불분명하고 감정이입이 많이 되었고 앞으로도 그럴것 같군요..

기본적으로 이 논쟁에서 소프트웨어 요구사항이나 테스트 결과(그것이 정확하다고 해도)는 별로 의미가 없습니다. - 이미 counter-example 은 충분히 나왔더군요 -

논쟁이 계속되는 이유는 애초부터 그 시작이 "잘못 수립된 테스트 계획" 과 그로 인해 내려진 "잘못된 결론 - 성급한 일반화 -" 에 있기 때문입니다. (최소한 -저를 포함한- 논쟁의 한 축을 이루고 있는 분들은 그렇게 생각하는듯 합니다.)

저같은 경우는 어떤 언어가 성능이 나은지, 아무 관심이 없습니다.
native code 를 뱉어내는 두 언어중 실제로 무엇이 한쪽보다 나을거라고도 생각하지 않구요.
그저 테스트의 오류를 지적했을 뿐입니다.
그래서 테스트하신분에게 뺀치나 자동차의 비유는 여전히 유효하다고 생각합니다.

한 주제를 놓고 이리도 보는 시각이 다른데다가 이미 필요한 정보는 모두 나온데도 이정도이니... 이 시각차이때문에 논쟁을 계속해 보았자 얻는게 없을것 같긴 합니다. :wink:

체스맨의 이미지

스레드 잠금 요구가 5회 이상 나왔는지 모르겠지만, 저도 잠금에 동의합니다.

애초에 64비트 정수를 사용한

long long sum=0;

이 코드 만으로, 테스트에 근본적인 문제가 있었음을 곧바로 감잡을 수
있는 문제였습니다. C 나 파스칼 모두 그 언어 자체에 국한해서 속도 문제를
논할 수 없을만큼 잘 발달된 언어라고 생각합니다. 볼랜드 컴파일러가
MS 컴파일러보다 더 빠른 바이너리를 만들어내더라, 이런 논의라면
테스트해볼 가치가 있겠지만, '언어' 차원에서 속도를 논하는 것은
별로 의미가 없습니다. 포트란이 C 보다 빠르다는 설로부터 각 언어별
성능에 대한 많은 얘기들이 있어왔지만, 그런 건 실제로는 사실이 아니잖아요.

Orion Project : http://orionids.org

midmee의 이미지

둘다 32비트 정수로 계산했습니다.
처음에 둘다 64비트로 했다가, 결과가 다르게 나와서 그냥 편하게 둘다 32비트로 테스트 했던것입니다.
음.. 글을 자세히 봐주시기 바랍니다...ㅡㅡ;

체스맨 wrote:
스레드 잠금 요구가 5회 이상 나왔는지 모르겠지만, 저도 잠금에 동의합니다.

애초에 64비트 정수를 사용한

long long sum=0;

이 코드 만으로, 테스트에 근본적인 문제가 있었음을 곧바로 감잡을 수
있는 문제였습니다. C 나 파스칼 모두 그 언어 자체에 국한해서 속도 문제를
논할 수 없을만큼 잘 발달된 언어라고 생각합니다. 볼랜드 컴파일러가
MS 컴파일러보다 더 빠른 바이너리를 만들어내더라, 이런 논의라면
테스트해볼 가치가 있겠지만, '언어' 차원에서 속도를 논하는 것은
별로 의미가 없습니다. 포트란이 C 보다 빠르다는 설로부터 각 언어별
성능에 대한 많은 얘기들이 있어왔지만, 그런 건 실제로는 사실이 아니잖아요.

체스맨의 이미지

읽지 못한 부분에 그런 내용이 있겠죠... 하지만, 더 이상 자세히 볼 생각은 없습니다. 왜냐면, C 와 파스칼의 속도 차라는 것은 너무 무의미한 논쟁이기 때문입니다.

'볼랜드 델파이가 비쥬얼 C++ 보다 빨랐다'

이 논지라면 좀 더 읽어보겠습니다.

midmee wrote:
둘다 32비트 정수로 계산했습니다.
처음에 둘다 64비트로 했다가, 결과가 다르게 나와서 그냥 편하게 둘다 32비트로 테스트 했던것입니다.
음.. 글을 자세히 봐주시기 바랍니다...ㅡㅡ;

체스맨 wrote:
스레드 잠금 요구가 5회 이상 나왔는지 모르겠지만, 저도 잠금에 동의합니다.

애초에 64비트 정수를 사용한

long long sum=0;

이 코드 만으로, 테스트에 근본적인 문제가 있었음을 곧바로 감잡을 수
있는 문제였습니다. C 나 파스칼 모두 그 언어 자체에 국한해서 속도 문제를
논할 수 없을만큼 잘 발달된 언어라고 생각합니다. 볼랜드 컴파일러가
MS 컴파일러보다 더 빠른 바이너리를 만들어내더라, 이런 논의라면
테스트해볼 가치가 있겠지만, '언어' 차원에서 속도를 논하는 것은
별로 의미가 없습니다. 포트란이 C 보다 빠르다는 설로부터 각 언어별
성능에 대한 많은 얘기들이 있어왔지만, 그런 건 실제로는 사실이 아니잖아요.

Orion Project : http://orionids.org

pynoos의 이미지

중간중간 잠금 요청이 있는데 제가 확인한 바로는 지금까지 세 명의 요청이 계셨습니다.

mastercho의 이미지

midmee wrote:
둘다 32비트 정수로 계산했습니다.
처음에 둘다 64비트로 했다가, 결과가 다르게 나와서 그냥 편하게 둘다 32비트로 테스트 했던것입니다.
음.. 글을 자세히 봐주시기 바랍니다...ㅡㅡ;

원래 그만 쓸려고 했는데
제가 잘못된 테스트 비교를 말한것처럼 말씀을 하신거 한마디 더 남기게 되네요

정확한 정보를 제공해 주고 비교를 해주셨으면 더 좋았을것이라 생각합니다

분명 테스트 코드를 요청했을시

제공하신 코드로 C++ 코드와 파스칼 코드에서 32,64비트 형이 다른 계산코드를 보여주셨습니다
굳이 그 증거자료를 퍼오지는 않겠습니다
[대부분 그 토론에 참여한분도 아실테니까요]

그리고 그 코드(32,64비트 다른)에서 long long과 int 형이 틀린데서 오는 속도 차임을 어셈블리까지 사용해 밝혀졌는데도

long long을 long으로 바꾸고 컴파일 했는데도 , 분명 50%가 빠르다고 끝까지 주장한것입니다 , 그러면서 "실망시켜서 어쩌냐"라는식의 말씀을 하더군요.

이건 미드미님이 주장하신게 아니라 같은 동료분이 헌주님이 그렇게 주장하셨죠
[뭐 그것도 비꼬는 말투까지는 참겠습니다만.....]

그래서 제가 컴파일 옵션어떻게 설정했는지 , 옵션 상황을 제공해 달라고 요청했지만 거절당했습니다

여기서 부터 더 이상 테스트에 대한 신뢰는 있을수가 없는것이 된것입니다

결과에서 보면 알겠지만 미드님하고 헌주님만 속도가 2배 ,50%이상 차이가 나고 있습니다.

물론 트릭을 사용하지 않았다고 주장하시지만 의심이 나는건 어쩔수 없지 않았나 싶습니다

이런 상황에서
"C가 빠르다면 , 테스트를 보여달라~, 델파이 컴파일러를 스스로 구해서" 이런식으로 자극적인 말투를 사용하니, 각자 일하기 바쁜 사람에게 잘못된 테스트를 증명하라 강요하는 모습이 되었습니다

솔직히 잘못된 테스트를 델파일 컴파일러까지 구하라는 강요까지 받으면서
C/C++이 델파이보다 느리지 않을것을 증명하라니 , 짜증이 날수 밖에요

게다가 안그러면 자기는 C/C++ 프로그래머지만 , 델파이(파스칼)이 더 빠른것을 인정하고 자기도 속도 때문에 C/C++ 안쓰고 델파이 쓰겠다라고 이상한 위협까지 해버린것입니다.

적어도 C++게시판에서 정확한 테스트인지에 대한 검증없이 C/C++이 델파이(파스칼)보다 2배 느리다 라는 일반적인 결론을 내린글을 쓰면 C/C++ 유저의 기분이 상하는것이 인지 상정이라 생각합니다

KLDP에서 윈도우가 정확한 테스트 없이 성능이 리눅스보다 2배 정도 빠르다고 주장한다면
여기또한 마찬가지 결과가 왔을거라 생각합니다

다음에는 좀더 유익한 토론으로 뵈었으면 좋겠습니다

그럼

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

snaiper의 이미지

KLDP 까지 오셔서, 이 쓰레드를 만드신 이유를 잘 모르겠습니다.

누가 맞든 틀리든 간에,여기까지 그 논쟁을 끌어오신게 가히
보기 좋질 않습니다. 그렇게 흥분해야 될 문제인지도 잘 모르겠습니다만
그 상황에서 발끈하셔서 , 데브피아 논쟁을 KLDP 까지 끌어와서 논쟁하는게
과연 보기 좋았는지 생각해보셨으면 좋겠습니다.

꽤 오랜 시간동안 mastercho 님을 보아왔습니다만, 자기 논리가
단번에 먹여들어가지 않으면 흥분하고, 공격적이 되는게 그리 좋은 태도가 아닌것으로 생각합니다.

이번 주제가 맞든 틀리든 간에, 자기 수양은 조금 하시는게 어떨까 싶습니다.

nulluser의 이미지

다 읽어봤습니다. C++ 이 빠른지 델파이가 빠른지 처음에 글을 올렸던 분이 C++ 유저인지 델파이인지 관심없습니다.

제가 읽기로는 어느분이 델파이와 C++ 로 테스트 해봤는데, 의외로 델파이가 빨랐다. 그래서 이번에 델파이로 하기로 결정했다... 정도의 글이 아니었습니까?
그런데 못믿겠다. 증명하라...를 지속적으로 요구한 것은 mastercho 님이었고,
그분이 더빠른 코드를 보여달라고 요구했을때, mastercho 님은 스스로 증명해볼생각은 않고, 그글을 KLDP 로 퍼오면 “즉빵”이라며 이곳까지 퍼오신것 아닌가요?
급기야 내 컴퓨터로 와서 내 앞에서 확인해주기전엔 못믿겠으니 와서 증명하라... 고 하는 글을 읽고 웃음이 나오더군요.

제가 보기엔 별 문제없는 글을 대단히 확대해석하신 것 같습니다.
먼저 MyCluster님이 옳은 말 해주셨잖습니까? 더 빠른 코드를 보여주면 된다고..
저도 그렇게 생각합니다. 그게 귀찮아서 싫거나 그럴만한 처지가 못되면 그냥 지나치는게 대부분의 사람들의 선택이지요.

mastercho의 이미지

snaiper wrote:
KLDP 까지 오셔서, 이 쓰레드를 만드신 이유를 잘 모르겠습니다.

누가 맞든 틀리든 간에,여기까지 그 논쟁을 끌어오신게 가히
보기 좋질 않습니다. 그렇게 흥분해야 될 문제인지도 잘 모르겠습니다만
그 상황에서 발끈하셔서 , 데브피아 논쟁을 KLDP 까지 끌어와서 논쟁하는게
과연 보기 좋았는지 생각해보셨으면 좋겠습니다.

꽤 오랜 시간동안 mastercho 님을 보아왔습니다만, 자기 논리가
단번에 먹여들어가지 않으면 흥분하고, 공격적이 되는게 그리 좋은 태도가 아닌것으로 생각합니다.

이번 주제가 맞든 틀리든 간에, 자기 수양은 조금 하시는게 어떨까 싶습니다.

이미 논쟁이 한참 벌어질때 만든 쓰레드입니다

데브피아에서 논쟁이 끝나 뒷풀이 할려고 벌여놓은 쓰레드가 아닙니다

제 생각에도 이미 다 정리된 마당에 감정 싸움이나 더 할것이 아니면 쓰레드를 닫는것이 좋겟네요

자꾸 서로 변명꺼리나 더 하게 되는거 같네요

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

vacancy의 이미지

mastercho님의 토론은 늘 이런식으로 흘러가네요.
주위 분들께서 많이 지켜보시고,
이제 이만큼 자제했으면 하시는 글이 올라오면
한번쯤은 돌아보셔야 되는 것 아닌가 하는 생각이 듭니다.

대부분의 토론이 이렇게 흘러가는 것은 아니거든요.

mastercho의 이미지

nulluser wrote:
다 읽어봤습니다. C++ 이 빠른지 델파이가 빠른지 처음에 글을 올렸던 분이 C++ 유저인지 델파이인지 관심없습니다.

제가 읽기로는 어느분이 델파이와 C++ 로 테스트 해봤는데, 의외로 델파이가 빨랐다. 그래서 이번에 델파이로 하기로 결정했다... 정도의 글이 아니었습니까?
그런데 못믿겠다. 증명하라...를 지속적으로 요구한 것은 mastercho 님이었고,
그분이 더빠른 코드를 보여달라고 요구했을때, mastercho 님은 스스로 증명해볼생각은 않고, 그글을 KLDP 로 퍼오면 “즉빵”이라며 이곳까지 퍼오신것 아닌가요?
급기야 내 컴퓨터로 와서 내 앞에서 확인해주기전엔 못믿겠으니 와서 증명하라... 고 하는 글을 읽고 웃음이 나오더군요.

제가 보기엔 별 문제없는 글을 대단히 확대해석하신 것 같습니다.
먼저 MyCluster님이 옳은 말 해주셨잖습니까? 더 빠른 코드를 보여주면 된다고..
저도 그렇게 생각합니다. 그게 귀찮아서 싫거나 그럴만한 처지가 못되면 그냥 지나치는게 대부분의 사람들의 선택이지요.

mastercho wrote:
델파이 컴파이러좀 올려주실수 있는지요

제가 한번
for문으로 + 연산을 하는 델파이보다 빠른 결과를 내는 테스트 코드를 만들어 보도록 해보겠습니다 --;
참 그리고 간단한 파스칼 문법도요

위 글은 테스트 논쟁이 있을때 제가 했던 말입니다 .

제가 테스트를 하려고 하지 않았다는 말은 하지 말아주시기 바랍니다
할일도 많은데 , 당나귀 같은데서 1-5 k씩 다운 받고 기다릴수 없어서 , 컴파일러를 다른 방법으로 구할까 하다가 다른분들이 테스트를 끝냈기때문에 , 그만둔것입니다

그리고 저도 이일로 대단히 피곤한걸보니 , 그냥 지나치지 못한게 후회스럽기도 하네요

어차피 시작한거 마무리가 될때까지는 제글에 책임을 져야 하는거니까 이렇게 답글을 다는겁니다

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

singlet의 이미지

잠금, 추가 한표입니다. (잠금까지 -1)

lsj0713의 이미지

잠금에 한표. 다만 이 토론 주제 자체가 무의미한 것은 아니었으며, 서로간에 토론 진행 방법이 미숙하여 마지막에 다소 혼탁해졌다고 생각합니다. 벤치마크 결과에서 끝나지 말고 각 컴파일러의 최적화 특성까지 얘기가 발전했으면 좋았을뻔 했는데 말이죠.

notexist의 이미지

잠금 1표~!

There is more than one way to do it...

익명 사용자의 이미지

dlfjs qudtlsemf. vmfhrmfoa djsdjfh TKdnrh dlTsp zzzz