이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김태훈
가입: 2010년 9월 6일 올린 글: 91
|
올려짐: 2010년10월19일 1:17 주제: (4-1 극단적 테스트셋 2개 포함) 4-1 효율성에 대해 질문드립니다. |
|
|
제가 짠 알고리즘의 경우 다른 code들은 상관 없는데...star가 효율성이 좀 떨어지는 알고리즘입니다.
스트링이 꽤 길면서 code가 star가 쭉 이어진 경우에 속도가 꽤 느려지죠.
예를 들어
(time (smatch '(1 2 3 4 5 6 7 8 9 0 1 2 3) (star (star (star (star (star (star (star (star (star (star (atom 3)))))))))))))
를 입력하면 #f가 뜨기 까지 cpu time: 4321 real time: 4446 gc time: 63 이 걸렸다고 뜹니다.
여기서 스트링 한자리 더 늘리고 코드에 star를 하나 더 추가해서
(time (smatch '(1 2 3 4 5 6 7 8 9 0 1 2 3 4) (star (star (star (star (star (star (star (star (star (star (star (atom 3))))))))))))))
라고 하면 역시 #f를 출력하긴 하는데 cpu time: 16754 real time: 17175 gc time: 249 이 걸립니다...거의 4배 늘어난 셈이죠..
조교님께서 채점 시에 스트링 크기를 얼마나 크게 넣으실지, 코드는 얼마나 극단적일런지 잘 모르겠어서 이 알고리즘을 좀 고쳐야 하나 고민 중입니다. 그래도 저 정도까진 버틸만 한데 저거보다 스트링이 한두자리만 더 커져도 기다리기 힘든 수준이 되는 것 같아서요.. 조교님께서 조언해주시면 감사하겠습니다.. |
|
위로 |
|
|
김진영_
가입: 2009년 12월 9일 올린 글: 337
|
올려짐: 2010년10월19일 1:47 주제: |
|
|
어떤 환경에서 돌리셨는지 알지 못해 정확한 대답은 드리기 어렵습니다만 그 정도라면 문제될 것이 없어 보입니다.
숙제 목적에 맞게 "올바른 답을 내는 프로그램"을 짜는 데 주력해 주세요 물론 과도하게 불필요한 일을 반복하는 비효율적인 코드를 작성하시면 곤란하시겠지만요. 상식적인 수준이면 됩니다. 좀더 extreme한 case들을 오늘 중으로 추가해 드릴 테니 참고하시기 바랍니다. |
|
위로 |
|
|
|