비전공자라 c# 쓰고 있음 좀 더 빠르게 쓰고 싶어서 matlab으로 짠거 c#으로 바꾸는 작업중.
유동해석하는 부분 끝나면 속도 데이터를 얻는데, 각 점의 속도 데이터를 컬러맵으로 표현해서
2D 평면에 뿌리고 싶음
컬러맵은 JET 타입으로 0 부터 1 까지 파란색 - 초록색 - 빨간색 순으로 변하는 걸로 하려고 함.
프로그램 순서는
1. 유동장을 계산함
2. 1의 결과로 무차원화 된 속도(0에서 1사이의 값)를 얻음
3. 1의 결과를 0부터 1000까지의 정수로 변환
4. JET 타입 컬러맵이 되도록 미리 계산해둔 빨간색, 파란색, 초록색 값 배열에 3의 결과를 넣어서 색상 값을 얻음
5. 4의 결과로 얻은 색상값을 C#의 color 구조체에 넣은 다음 brush 구조체로 변경
6. Form1 어딘가에 순서대로 FillRectangle 함수를 이용하여 뿌림
이 순서로 코딩을 했는데 나름 반복되는 구간도 많이 줄이고, 테이블로 만들 수 있는건 미리 만들어놔서
알고리즘?? 뭐 그런걸론 개선할만큼 했다고 생각하고 있음.
그런데도 만족스러운 속도가 나오지 않아서(컬러맵이 왼쪽에서 오른쪽으로 뿌려지는게 다 보일정도로 느림)
FillRectangle 함수가 느린 것인지 GDI+가 노답인지 ... 컴터 문외한이라 잘 판단이 안됨...
할줄아는게 C# 밖에 없어서 언어 바꾸라는 말은 너무 비현실적이니 최대한 도움이 되는 방향으로 조언좀 부탁드립니다 ㅠ.ㅠ
더블 버퍼링이 로딩한 그림이 깜빡이는 문제 해결하는데 쓴다는 얘긴 들었는데 최적화에도 도움이 되나보근여?
더블버퍼링 오랫만에 듣는다 ㅎㅎㅎ
일단 벤치마킹해서 1,2,3,4.... 무슨 구간에서 시간이 젤 많이 걸리는지 알아보셈 문제는 그 다음임
dart/ ㄹㅇ 컴퓨터 문외한이라 그런데 벤치마킹 하는 방법에 대한 기초적인 포스팅이 있을까여?
너무 어렵게 생각하지말고 비쥬얼 스튜디오에 프로파일링 기능도 있긴한데 찾아보시고 간단하게는 작업을 시작할떄 시간 끝날때 시간 재서 빼면됨요
맞음 코드프로파일링, 코드프로파일러가 비쥬얼스튜디오 프로페셔널인가 버젼별로 포함되있기도해서 잘 찾아봐야함 요번에 비쥬얼 스튜디오 커뮤니티 버젼(무료로 풀리는거 익스프레스말고)가 프로페샤날인걸로아는데 프로파일러가 프로페셔널부터 제공되던가? 차자보셈
섹시말이 맞는듯 뿌려지면서 보이면느린건데 버퍼에 저장해놓고 확뿌리는게 GDI에서 안되나? 메모리 맵 만들고 어케하면될꺼가틍데 저도 잘모름니다..
아 ... 이런; 시작부터 무언가 잘못됬다는 기분이 들기 시작하네요..
으 ... 컴퓨터를 조금이라도 배워두는건데 너무 기초가 없으니 뭐가 문제인지도 모르겠슴미다 ㅠㅠ
그게 위에서 말했던 더블버퍼링 얘기였군요...