그냥남자사람
추천 177
조회 264208
날짜 2021.09.24
|
그을음
추천 59
조회 75571
날짜 2021.09.24
|
허무주의
추천 224
조회 191682
날짜 2021.09.24
|
되팔렘꼴통절단기
추천 20
조회 52259
날짜 2021.09.24
|
S.A.T.8
추천 8
조회 13001
날짜 2021.09.24
|
핵인싸
추천 920
조회 415991
날짜 2021.09.24
|
별빛 단풍잎
추천 5
조회 16830
날짜 2021.09.24
|
찐쿠아
추천 19
조회 28352
날짜 2021.09.24
|
Jade_2
추천 41
조회 181587
날짜 2021.09.24
|
닭도리탕 비싸
추천 26
조회 59263
날짜 2021.09.24
|
유우타군
추천 22
조회 63794
날짜 2021.09.24
|
가챠하느라밥이없어
추천 3
조회 5950
날짜 2021.09.24
|
니미핸드릭스
추천 28
조회 38202
날짜 2021.09.24
|
길가에e름없는꽃
추천 2
조회 8717
날짜 2021.09.24
|
루리웹-2122312666
추천 145
조회 70157
날짜 2021.09.24
|
긴박락
추천 3
조회 9180
날짜 2021.09.24
|
타카가키 카에데
추천 13
조회 17910
날짜 2021.09.24
|
꼬르륵꾸르륵
추천 3
조회 14354
날짜 2021.09.24
|
등대지기 공대생
추천 0
조회 9553
날짜 2021.09.24
|
no.777
추천 6
조회 14135
날짜 2021.09.24
|
루리웹-7309663092
추천 68
조회 61904
날짜 2021.09.24
|
이사령
추천 15
조회 20285
날짜 2021.09.24
|
달걀조아
추천 4
조회 7640
날짜 2021.09.24
|
얼
추천 3
조회 6022
날짜 2021.09.24
|
MK.II
추천 7
조회 12586
날짜 2021.09.24
|
고수달.
추천 3
조회 12096
날짜 2021.09.24
|
『EDEN』
추천 3
조회 5207
날짜 2021.09.24
|
Julia Chang
추천 78
조회 36077
날짜 2021.09.24
|
본문
BEST
감히 인간주제에 메모리관리 따위를 위대하신 컴퓨터가 알아서 하게끔 한단말이냐 불경한 인간놈들
딱히? 수동 메모리 관리가 가져올수 있는 수많은 버그 생각하면 GC는 구현과 추상적인 레벨에만 집중하면 되서 편함.
차라리 c++이 낫지않나
스마트 포인터를 쓰세요
임베디드 시스템처럼 극한의 메모리 효율이 요구되는 곳은 C++이 좋긴 함
운전자가 겁나 효율 좋게 기어변속 딱딱 잘 할줄 알면 수동변속기가 연비가 좋겠지만 안그러면 그냥 자동변속기가 나은거랑 비슷한 맥락임
GC가 있어도 ㅂㅅ같이 짜면 메모리 누수나고 ㅈㄹ 나지만, 그따위로 만드는 인간이 C로 짜면 더 빨리 터진다
자바의 가비지 콜렉터가 잘 동작한다고????????
뭐.. GC 성능이 좋아지기 보단 하드웨어적으로 풍족해진거 아닐까? 하드랑 메모리 용량이 흘러 넘치니까
요즘 기기들 리소스가 커져서 문제가 부각되지 않는거지 기기 제조사들은 메모리 릭, 퍼포먼스 개선을 위해 네이티브 앱, 프레임워크 최적화 하느라 개발자들 피똥쌈
차라리 c++이 낫지않나
츠쿠요미 시라베
딱히? 수동 메모리 관리가 가져올수 있는 수많은 버그 생각하면 GC는 구현과 추상적인 레벨에만 집중하면 되서 편함.
요즘은 가비지 컬렉션 성능도 좋아져서 극한의 효율을 추구하지 않는 이상 대부분 자바가 낫지 않음?
그런가? 내가 필요할때 반환 안되서 불편하다 들었는데 아닌가보네 하긴 요즘 램크기 크니까 크게 상관 없으려나
ㅇㅇ 러스트 같이 수동적인 메모리 관리 추구하는 경우도 있지만(대신 메모리 접근 규칙이 빡셈) 요즘은 기본적으로 GC 달고 나오는 언어가 많지. 옛날처럼 컴 성능이 구린것도 아니니
하긴 그렇겠네 램크기도 많이 커져서 크게 신경 안써줘도 되겠네
킹룡
뭐.. GC 성능이 좋아지기 보단 하드웨어적으로 풍족해진거 아닐까? 하드랑 메모리 용량이 흘러 넘치니까
그래서ㅠ얫날겜들이라유요즘겜들 최적화수준이 달라졌나... 안쓰는 더미데이터도 오지게많고...
츠쿠요미 시라베
운전자가 겁나 효율 좋게 기어변속 딱딱 잘 할줄 알면 수동변속기가 연비가 좋겠지만 안그러면 그냥 자동변속기가 나은거랑 비슷한 맥락임
최적화 할 시간에 더 많은 컨텐츠, 더 많은 그래픽을 넣는게 더 이득이라
츠쿠요미 시라베
요즘 기기들 리소스가 커져서 문제가 부각되지 않는거지 기기 제조사들은 메모리 릭, 퍼포먼스 개선을 위해 네이티브 앱, 프레임워크 최적화 하느라 개발자들 피똥쌈
메가톤.맨
그건 너가 뭘 잘못쓰고 있던거 아닐까
난 차라리 C++이 나음 편한건 자바가 편하겠지만 속도는 C++이 훨씬 빠른걸
제대로 관리만 된다면 아무래도 C보다 빠를수는 없지 걍 일장일단이 있는거같음 아무래도 요새는 메모리 사정이 좋다보니 관리가 편한 자바가 더 인기있지만 극한의 성능을 추구하는 분야는 C가 선호되는거지 뭐
게임 프로그래밍같은건 1프레임 1프레임이 소중하니까 아무래도 C++에 손이 가더라 C#기반인 유니티는 그래서 좀 졷같음
니가 c#특성을 잘 몰라서 그러는건 아니고? GC를 한번에 털어버리면 프레임저하 생기고 하지만, 프레임 나눠서 적당히 털게하면 프레임 저하는 거의 안일어난다. 게다가 이번에 버전 올라가면서 GC를 쪼개서 터는기능도 넣었다. 물론 극상의 최적화를 이룬 C++코드에 비할 순 없지만. 유니티가 줫 같을 정도로 구진 엔진은 아니라는거지.
그런 생각으로 나온 국산 게임 대부분이 c++이고 램누수 못잡고 빌빌거림 애초에 언어의 차이에서 오는 속도 차이는 pc나 모바일 게임 수준애선 진짜 하나도 의미 없음
cpp은 프로그램이 작거나 천재거나 아니면 진짜 장인 정신으로 한땀한땀 코딩할 거 아니면 안 쓰는 게 좋지... 솔직히 설계라는 거 자체가 너무 정신적 노가다야. 생산성 챙기자
감히 인간주제에 메모리관리 따위를 위대하신 컴퓨터가 알아서 하게끔 한단말이냐 불경한 인간놈들
*물론 c++에도 자동 메모리 관리 라이브러리가 있음
하지만 메모리 누수가 등장하면 어떨까...
??? 먼 소리여 메모리 누수는 수동으로 관리 할 때 더 나기 쉽지
좀 다름 자바는 gc에 어느정도 쌓이면 프로그램 일시 중지하고 쭉 정리 C++은 소멸시 할당된 메모리 해제도 있고, 아예 메모리 관리자를 수동으로 구현해서 메모리 재사용도 가능
현실복귀불가
스마트 포인터를 쓰세요
그거는 소멸시 자동 해제밖에 기능이 없음 파편화 대응을 못함
메모리 관리자는 메모리 해제를 프로그램 종료시 함
그딴것도없는 c는 뭘해야하죠?
xxx:c는 팝콘이나 가져와라
그 gc 방식도 이제 먼 옛날 얘기에요. 최신 gc는 중지가 없습니다.
아~ 이런거 좋아 ㅋㅋㅋ
임베디드 시스템처럼 극한의 메모리 효율이 요구되는 곳은 C++이 좋긴 함
Rust 쓰실래오?
임베디드 시스템이면 C++보다는 C지...
스마트포인터:닝겐아 이젠 내가 할게.
GC가 있어도 ㅂㅅ같이 짜면 메모리 누수나고 ㅈㄹ 나지만, 그따위로 만드는 인간이 C로 짜면 더 빨리 터진다
ㅇㅇ. 이게 진리. 루프도 제대로 못 짜는 것들이 성능 올리겠다고 더 난리를 치죠. 이미 안드로이드 폰 게임들 자체가 자바인데 개소리임.
자바의 가비지 콜렉터가 잘 동작한다고????????
https://github.com/microsoft/mimalloc C++ 성능 쥐어짜고 싶으면 요런거 써야 함
메모리 하니 생각 나는게 하나 있네.. 1안) String sTmp = ""; For (int i=0; i <= 10; i++) { sTemp = Convert.toString(i); } 2안) For (int i=0; i <= 10; i++) { String sTemp = Convert.toString(i); } 뭐가 더 좋은 방법일까?...
자바면 뭘 쓰던 그닥...
두번째껀 의미가 없는데..?
1번은 sTemp가 선언되있지 않으므로 2번! (장난)
똥싸러 가기 전에 적었더니 오타가 있네 ㅋㅋ. 부끄..
보통은 1안을 가겠지. 2안은 저게 스트링이 아닌 다른 주소형 타입을 썼다면야 생각해 볼 문제지만
자바에 익숙한 사람들은 객체든 뭐든 모든 변수(객체)를 루프 안에서 선언 하는 경우가 있지.. 안드로이드 앱 만들때는,. 아래 방식이 효율이 좋지 않더라고.. 단말기의 한정적인 자원 내에서 루프 카운트에 따라 메모리가 확 치고 올라가더라고.
나도 1안을 선호함. 하지만 의외로 많은 사람들이 2번 방식을 사용해.. 특히 웹 개발자들..
나도 웹이지만 저렇게 해야 맞지. 정말 기한 급하지 않은 이상 저렇게 하면 안됨. 딱 보기에도 낭비스러운데.
확장 for를 쓰면 해결되는 문제일 듯.
협업하고 남이한거 유지보수해야하니 차라리 이해하기 쉬운 2안이 좋을 수 있음 엄청 막 반복문을 몇만 몇십만 돌릴게 아닌 이상 미비한 성능하락 (뭐 요즘 하드웨어 좋아져서 엄청 굴리지 않으면 차이도 없지만)은 감수하고 전역변수로 생길 문제점 컷트하고 지역변수로 유지보수할때 이해하기 쉽게 해주는게 낫단거지... 뭐 유의미할 정도로 퍼포먼스 차이나면 하드웨어를 늘리던가 최적화 들어가는건 당연한거구
그렇게 생각하면 좋지,. 아래 방법으로 코딩하는 사람이 의외로 많더라고..
Convert.toString(i)가 하는 작업이 새로운 String 객체를 만드는것이긴 하지만 2안의 경우에는 sTemp라는 변수를 루프마다 재생성해야 한다. 10번 도는거야 밀리초단위에서는 이따위 성능차이는 없겠지만 천만번 정도만 돌려도 생각보다 유의미하게 차이남
전역변수는 아니지.. 전역이라면 접근한정자 혹은, 해당 프로젝트 프로그래밍 가이드에 나온 방법으로 전역 변수 명명 규칙으로 코딩하는게 기본이지.. 만약 저 String sTemp가 함수 내에 선언된 지역 변수라도,. 루프 안에 넣는건 좋지 않은 방법이라고 개인적으로 생각함. 그게 단순한 스트링 변수가 아닌, Class 객체를 생성한다면,. 한정적인 자원을 가진 스마트폰 같은데서는 문제가 되더라고..
그래서 결론은 Java GC 안 믿음.. 물론 이전보다 훨 좋아진건 알고 있음..
1안이지. c# 자바랑 비슷하니 2번 처럼 하면 매번 메모리를 할당해야 하는데 그 GC발생을 우짤라고.
C++ 기준으로 씀. 루프 내 변수를 만들면 스택포인터 깔짝대서 느리다는건 for (int i ...)하면 느리니까 int i 밖으로 빼야한다는거랑 동급의 소리임. 컴파일러가 그정도는 알아서 해줌. 2안은 오히려 명시적인 RVO의 기회를 제공해서 쓸데없는 메모리 카피 비용을 아낄수 있음. 그리고 변수의 스코프는 최대한 짧게 가져가야 코드의 locality와 portability가 증가하고 버그를 줄일 수 있음. 무조건 2안.
자바 컴파일러가 어떻게 동작하고, 또 얼마만큼의 성능차이가 나는지는 모르겠음. 하지만 1안과의 성능차가 2안의 유지보수성과 맞바꿀 가치가 있을 만큼은 아닌것같음.
이분 말씀이 맞아요. for문 안팎 정도의 변수 선언은 아무런 성능의 영향을 미치지 않습니다. 코드 상으로 유리해 보여도 컴파일러가 바꾸게 되는 코드는 최적화를 거치게 되어 있어서 같은 코드를 생성해 냅니다. 위 캡쳐는 Jetbrain IDEA 에서 Java 11로 간단한 코드를 컴파일한 파일을 다시 디컴파일해 열은 결과입니다. 밖으로 빠져 있어도 이 정도는 알아서 다시 집어넣어 줍니다.
Rust: ㅎㅇ
나는 오늘도 아침밥을 먹기 위해 숟가락의 인터페이스를 선언하고 숟가락Impl을 구현하고 먹다와 씹다와 목으로 넘긴 뒤 위액을 분비하는 코드를 짠 뒤 해당 코드를 엄마 아빠 동생의 형태로 다형성을 고려해 상속해줘야 했습니다. 아 생각해보니 부모 인스턴스를 자식 클래스로부터 상속받는 건 살짝 패륜 같아 보이니까 상속 관계를 바꾸도록 할께요 ㅎ
오리지날 C : 하하 인간놈 메모리 관리하는 실력 좀 볼까?
뭐만드냐에 따라 다른데 패키지 게임이라면 cpp 로 쥐어짤 필요가 있지
아무리 gc가 거둬준다고 해도 낭비는 줄여가야지. 괜히 이런저런 디자인 패턴이 나오는 게 아닌데
모바일 앱 만들다가도 갑사가 성능요구하면, 결국 네이티브로 갈아탈수밖에 없음. 결국은 용도에 따라..
정확하게 C++은 개발자가 안보는곳에 하나씩 쓰레기를 던져놓음.
성능으로 따지면야 당연히 C++이 빠르긴 하겠지만, 새로 나오는 언어들이나 요즘 뜨는 언어들 치고 GC 없는 언어가 없는 게 세태를 반영하고 있는 듯. 심지어 그런 언어들 중에 적지 않은 비율이 인터프리터 언어들이고.
내 방을 남이 치워준다 생각해봐. 내가 치우는게 낫지 않을까.
사람사는거랑 비슷하게 케바케에 정답은 없음.. 효율을 추구할때야 세세하게 따져가며 하지만, 반대로 그런거 하나하나 따지고 앉아있는게 비효율일때도 많음
그래서 c#부터는 메모리 관리르 할 방법이 제한적이네 gc가 돌아갈 건덕지를 최대한 안주는 방향으로 코드를 짜기 시작함
프로그래머가 유능해도 사람이라 실수가 없진 않을 텐데..
둘다 할 수 있는 Go를 쓰세욧!!