온갖 언어로 만든 웹프레임워크 성능을 벤치마크한 결과
Round 21 results - TechEmpower Framework Benchmarks
사이트에 결과가 나와 있다.
관심있어하는 srping의 성능을 잠시 살피 보자면
1위는 C++ 웹프레임워크인 drogo-core란 건데... 초당 응답 수가 616,607번 수준
극상위권은 C++, rust, C#이 주로 먹고 있는 것 같다.
(어 근데 5위에 무려java script!! 와 싶어서 찾아 봤더니 c++로 만든 거더라... 아마 js로 스크립팅만 하는 것 같은데 정확히는 모름.)
하여튼 뭐... C++이라고 java spring과 성능 차이 나봐야 2배 나겠어?
자 그럼 대망의 srping의 성능은 얼마나 될까!!!!!!
네... spring framework중에 제일 성능 좋은 것이 351위!
성능은 초당 22,478번의 response 처리 성능! 우와~~~~ 1위인 c++ 프레임워크에 비해 무려 3.6%의 성능이네...
크흑... 30배 정도 성능 차이면 선방한 거다.
MSA까지 들어가면 100배 성능차 우수운데 말이지....
또 범용 프레임워크가 아니라 C++로 전용 서비스로 서비스 개발하면 성능차 훨씬 많이 날 거다.
뭐 그래도 388위를 차지한 django나 430위를 차지한 최하위권 flask.... 보다는 좋으니 spring은 성능이 좋은 편이라고 해야 하나? 크흑~
더 놀라운 ㅎㅌㅊ는... 앗사리 벤치마크도 완료하지 못한 ㅈㄴ 성능 구린 것들도 많았으니....
그중 spring-webflux-rxjdbc를 쓴 게 나온다. 역쉬 srping이다.
북~끄러운줄 알아야지.
근데 대한민국에서는 C++ 전용 서버도 고도화란 명목으로 돈 들여서 JAVA Spring으로 교체하는 일명 자바포밍이 ㅈㄴ 일어나고 있다. ㅋㅋㅋ
그래도 뭐 응답 속도만 어떻게든 비슷하게 맞추고 초당 처리량 차이야 서버를 30배 100배 늘리면 어떻게 된 되기야 하겠지 근데 운용비는????
세계 유수의 인터넷 서비스 회사들이 아직도 C++을 많이 쓰는 건 이유가 있다.
하지만 대한민국은 닥치고 java spring으로 도배질을 하고 있다.
CPU의 성능 향상이 지지부진한 상황에서 소비자 요구와 처리 데이터는 기하급수적으로 증가하는 상황에서
이런 비효율을 계속 떠안고 가는 것이 대한민국 it 경쟁력을 점진적으로 잠식할 거라고 본다.
그 병목은 대부분 디비라서....
세계 유수의 IT 대기업들은 자바나 씨샵을 메인 프레임워크로 하고 C++, 러스트 같은 로우레벨 언어들을 필요한곳에 쓰는거야 스프링을 그대로 가져다쓰지는 않고 자체 프레임워크를 쓰긴 하겠지
c++웹프레임 서버는 db 안 쓰냐?
내 말은 디비가 병목이라 저런 성능차가 크게 의미가 없다고
인스타그램은 더 느린 파이썬을 쓰면서 파이썬이 너무 느리다고 마개조를 했는데 그 내용들을 살펴보면 런타임에서의 속도보다는 초기 실행시간같은 런타임 속도 이외의 부분들이야
참고로 c++과 자바의 속도차랑은 비교도 안될정도로 파이썬은 어마어마어마하게 느림
뭐 물론 db를 근단적으로 많이 쓰면 의미가 니 말이 맞을 수 있겠지. 근데 저 벤치마크는 일단 db까지 넣어서 테스트 한건데? 심저어 mongo-db와 spring을 테스트 한 프레임워크도 성능 역시 354위다. 그냥 spring 자체가 ㅈㄴ 느려.
그 대부분의 웹서비스는 디비빼면 시체인데 그리고 그 세계 유수의 인터넷 서비스 회사들도 다 자바나 씨샵 쓴다니까?? 특히나 실리콘밸리 테크대기업들은 자바 정말 많이써
ㅋㅋㅋㅋ 나도 글보는 내내 이생각했는데
자바는 속도보다는 메모리 많이 먹는게 더 단점 아님?
거기에 플러스 콜드스타트 닷넷은 콜드스타트까지 잡았고, 저 벤치에서도 성능이 아주 준수하네 속도때문에 대안을 찾는다면 차라리 닷넷이지 c++은 진짜 아님
자바 현대엔 좀 안 맞는 거 같아 콜드 스타트도 그렇고 컨테이너 이미지가 너무 커
보통 스프링 + 리액트가 일반적인 웹사이트 조합중에서 제일 느린경우에 속함
파이썬 장고가 젤느리지
ㅋㅋ본문의 글쓴이 의견 제외하고 해석은 개인이 해야할 영역이겠지만 재밌는 주제 던져줘서 고맙다 이기
ㅋㅋ 어림도없지 쏟아져나오는 땔감들 99퍼센트가 스프링
대신 자바는 c++보다 더 빨리 개발할 수 있잖아
c++과 java 모두로 개발한 개발자가 별로 없어서 대부분은 개발자는 그렇다 그러면 그런 줄 아는데 사실 그런 것도 아니야.
아니라기엔 c++로 메모리 관리하면 개빡칠것 같은데
요즈음은 아주 특별한 경우에만 날포인터를 쓰지 C++도 대부분 스마트 포인터 쓰기 때문에 직접 매모리 관리하는 짓 따위는 안 한지 오래됐다. modern C++이 되면서 스마트 포인트가 표준으로 채택되면서 gc 안써서 빠르면서도 직접 메모리 관리할 필요는 없는 상황인 것이지.
아니 스마트 포인터 나도 써봤는데 포인터 자체가 스트레스임
그리고 널포인터 안쓴다곤 하지만 어쩔 수 없이 써야하는 상황도 많음
널포인터가 아니라 raw포인터
그럼 프로그래밍은 어떻게 짬? 포인터는 단점보다 장점이 커... 코테에서 c++이 ㅈㄴ 많이 쓰이고 유리한 이유도 stl도 있긴하지만 포인터를
아니 안쓴다는게 아니라 써야할 상황에서는 쓰는게 맞지. 근데 굳이 안쓸 수 있는데 지옥불로 들어가야할 이유가 있는가 싶은거지
쓸수 있다는 거거든. 문제는 기존에는 포인터를 잘못사용하면 치명적 문제가 발생할 수 있다는 것이었는데 그게 해결된 셈이니까 오히려 장점이지.
나도 c++ 좋아하는데 개발할때 대안이 있으면 굳이 쓰고싶지 않음
포인터 쓰는게 왜 지옥불인데?? c++도 날포인터 안쓰면 mordern c++에서는 이제 ㅈ뭐 지옥불이랄 만한 게 없는데? 과거 risky 한 것들도 대부분 bound 정보를 포함되도록 해서 요즈음은 그런거 없다. 대표적으로 옛날에 그냥 배열 포인터 쓰면 bound를 초과해서 문제 될수 있었지만 이제는 std::array같은게 도입되서 그런일 없지> 문자열도 null-teminate 였다가 이제는 std::string과 std::string_view로 대체되었지... std::span 같은 것도 이제 널리 쓰이니까 포인터로 스트레스 받을 일 거의 없지
문제가 된다면 여전히 많은 개발자들이 과거 modern c++이 아니라 lagacy문법들을 선호하고 있는 것인데.. 앞으로 점진적으로 modern c++이 다 대체하리라고 봐.
아니 진짜 가슴에 손 얹고 c++ 쓰면서 raw 포인터 안쓸 수 있음? 스마트포인터가 만능이 아닌데
응~ 요즈음 그래. 지금도 난 날포인터 전혀 안쓰고 프로그래밍 짜는데??
이미 만들어진 수많은 레거시 코드는 raw 포인터 쓰고있고 unique_ptr같은것만 써봐도 개빡치는 상황 마주칠텐데
님이 모던 c++쓰고 있다고 해도 대부분 업계에선 c++11이나 14에 머물러있는것도 맞지 않음?
unique_ptr을 언제 어떻게 썻는데 개빶친다는 거냐? 한번 말해봐.
unique_ptr을 언제 어떻게 썻는데 무슨 이유로 개빡쳤는데??
지금은 c++ 안써서 기억은 잘 안나는데 순환참조 관련해서 빡쳤던거 같음
unique_ptr이 무슨 순환 참조야????
그니까 그때 상황이 뭐였냐면 부모가 자식을 가리킬때 unique_ptr을 썼는데 자식이 부모를 가리키려면 raw 포인터 써야했음
순환참조는 shared_ptr 이슈임
shared_ptr도 있는거 아는데 그 당시엔 unique_ptr 써야해서 썼음.
부모가 자식 가리킬때 unique_ptr을 써?? unique_ptr은 참조가능한 경우는 쓰지 않아. 옛날에 auto_ptr의 대용으로 임시생성용으로 주로 쓰고 저장할 때는 shared_ptr와 weak_ptr을 사용하고 순환 참조가 문제가 되면 weak_ptr를 써야겠지. modern c++ 전혀 안써봤다는게 티가 다난다.
근데 걍 자바썼으면 이딴 고민도 안했겠지
그만큼 java에서 포기해야 하는 것이 더 많지. iterator 같은 개념을 못쓰지. 그것만으로 프로그래밍이 ㅈㄴ 복잡해비고 비효율적일 수가 있지. 더군다나 요즈음은 static_analysis가 일반화되서 니가 고민 안해도 컴파일러가 순환참조나 nullptr 참조 같은 문제가 생길 것 같으면 다~~ 알려줘. 구조적인 분석까지 싹다해주기 때문에 그걸로 스트레스 받을 일은 없다. 만약 그 정도가 스트레스 받으면 for문은 어떻게 쓰냐??? for 잘못쓰면 무한루프 빠질 수 있는데? 포인터보다 100배는 위험한 문법인데?
근데 님 같이 포인터 쓰면서 희열 느끼는 프로그래머가 몇이나 있겠어요. 대부분은 대충 뚝딱하고 만들고 싶지
현실은 코테에서 JAVA보다 C++을 압도적으로 많이 쓰고 있는 상황이고 하이랭커 대부분이 C++인 것이 현실이야. 그만큼 알고리즘 구현에 유리하다는 것이고 많이 선호한다는 거지. 물론 프로그래밍이 아니라 스크립팅만 하는 수준이라면 구지 필요없을 수도 있긴 하지. 그러니까 웹개발자는 프로그래머라고 불리지 않고 그냥 스크립터로 불려왔었지. 불과 10년전까지만 해도 웹개발자는 프로그래거뫄 다른 카테고리로 취급되어 왔었으니까.
코테가 아니라 cp에서 c++을 많이 쓰는거지. cp는 성능이 극도로 중요하니까 쓰는거고. 그리고 웹개발 얘기하는데 cp 얘기할 이유도 없고
코테에서 파이선과 c++가 양대 산맥이고 성능이 아니라 구현 속도 자체가 c++이 java에 비해 압도적으로 짧다. 포인터 덕에 iterator와 같은 개념을 사용할 수 있어 코드 자체가 훨씬 짧아질수 있는 데다가 stl이 표준 자료형과 알고리즘들이 이미 다 구현되어 있어서 최적이거든. 해외 코테에서는 아주 앋도적이라서 하이랭커의 95%가 사용하는 언어가 c++이라고 해.
java가 개발 속도가 빠르다는 둥 gc 때문에 편하다는 둥 하는건 솔찍히 c++을 제대로 써보지 않고 오직 java에만 목을 매야 하는 사람들의 정신승리일 뿐이라고 봐. 이들이 생각하는 c++은 요즈음 쓰는 modern c++이 아니라 아주 옛날 c 수준을 생각하는 것 같은데
우리 게이는 코테볼때 스마트포인터 쓰노?
구글은 모든서버 다 c++ 기반이래자나
쓸데없노 ㅋㅋ 불필요할 정도로 좋게 개발 할 이유가 없지~ 어떤 회사에서 웹을 구축하는데 그 회사가 구글이 될 확율은? 그냥 스프링으로 만들어도 충분함. 진짜 희박한 확률로 구글이 된다면 그 때 C++로 돈 주고 교체하면 됨 미리부터 쓸데없이 어렵게 개발할 필요가 없지
일반 사용자한테 슈퍼컴퓨터 왜 안쓰냐고 하는 꼴이지 뭐
코테만 봐도 처리속도 최상위 순위권은 다 c++ 긴해
구글이 카본만든다고 지랄하는것도 C++ 브라우저 메모리 터지는거 보수하는거 힘들어서 그런건데 ㅋㅋㅋ
저거 c++이 물론 좋은데, 운영하는 입장에서는 개발자 수급, 출시 사이클 등 계산서 두드려봐야함.
In this test, the framework's ORM is used to fetch all rows from a database table containing an unknown number of Unix fortune cookie messages (the table has 12 rows, but the code cannot have foreknowledge of the table's size).
12 rows ㅋㅋㅋㅋㅋ
진심 정신병 있노 ㅋㅋㅋㅋㅋㅋㅋㅋ c++ 알고리즘 푸는게 속도가 아니라 구현이 쉬워서 그렇대 ㅋㅋㅋㅋㅋ 어디 갸좆소에서 임베디드 하는놈인듯 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
c++ 알기나 아냐? 코테 준비하는 신입에게 가장 많이 권장하는 게 c++이란건 알어? java가 짱먹고 있는 대한민국에 말이다. 이유는 앞에서 말했듯이 알고리즘 구현 난이도가 java에 비해 ㅈ나게 쉽다. 해보면 안다.
그리고 임베디드는 c를 쓰고 아직도 날포인터를 선호하는 곳이지 c++을 잘 쓰지 않아. c++에 대해서 ㅈ도 모르는 그냥 java라는 우물안 개구리랑 걸 증명해주네.
개좆소 임베디드 단어에 긁혔노 ㅋㅋㅋㅋㅋㅋㅋ
반박 안하는 거 보니가 처발린거 인정하는 가보지? ㅋ
임베디드에서 c++ 안쓴다는거 부터가 이새끼는 그냥 개좆소 다니는새끼 맞네 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
알고리즘 구현은 압도적으로 python이 최곤데...
근데 string이나 big integer 다루는 문제 아니면 c++로 하든 파이썬으로 하든 별 차이없음 - dc App
그리고 자바는 코테나 ps에서 쓰기엔 존나 불편한 언어도 맞음 - dc App
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 존나 웃겨 ㅋㅋㅋㅋㅋㅋ c++ 로 코테보는게 구현이 쉬워서 그렇대 ㅋㅋㅋㅋㅋ 구종만한테 귀싸대기 맞을소리하놐ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
이거보고 C++버리고 C#으로 갈아탔다
성능은 그렇다쳐도 생산성은 어떡할건데 ㅋㅋ 스프링으로 빠르게 구현하고 병목 생기는 부분만 jni로 붙이면 됨
그래서 jni 써본적있음?
ㅋㅋ 어디서 일하냐 ㅈ밥련아?
정신병자
해당 댓글은 삭제되었습니다.
자바도 저기 20위쯤 ver.tx가 스프링보다 수십배 빠르다 이건 스프링쓰는 특딱 자바충 잘못이 맞다\
국내 기업들 자프링쓰는 이유가 뭐임?
공부 다시하고 와라 성능충 쉑
근데 애플리케이션 서버는 이렇게 빠를 필요가 없음 ㅋㅋㅋ 자체 성능으로 0.1ms 줄여봤자 db에서 10~20ms 씩 왔다갔다 하는데 뭔 소용임? ㅋㅋㅋ 단순 계산 서버같은 특수한 경우에 쓸만할거 같은데 웹서비스에서는 쓸모없음
약간 그거랑 비슷하네 여자남자 똑같이 일하는데 왜 남자는 돈을 더받냐!! 가부장적이다!! / 원숭이가 똑같이 일할 수 있는데 돈을 더 적게줄수있다면 원숭이를 채용하는 곳이 기업이다...
디비 병목 해결 못하면 이미없는 벤치 딸딸이야