이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요
사실 이 문제는 이 바로
위의 문제와 연관 있다
재귀로 해결했다
- 댕청한
오픈나무 개발자가 최적화는 고려 안하면서 하는 말
현재 오픈나무 렌더러는
정규식으로 해결하고 있다
근데 예를 들어서 {{{#!wiki 내용}}}을 오픈나무에서는 먼저 렌더링하도록 시킨다. 그 과정은 이렇게 이루어진다
- 1. #!wiki 문법을 만난다
- 2. 안에 렌더링 완료된 부분을 롤백한다
- 3. 재귀로 다시 렌더링 시키고 저장한다
이게 대부분의 경우에는 그럭저럭 동작하지만
틀:발로란트/요원 같이 떡칠되어 있는 문서라면?
이렇게 동작한다
- 1. #!wiki 문법을 만난다
- 2. 안에 렌더링 완료된 부분을 롤백한다
- 3. 재귀로 다시 렌더링 시키고 저장한다
- 4. 문제는 렌더링 완료하고나니 그 바로 밖에 #!wiki 문법이 또 있다
- 5. 그럼 안에 렌더링 완료된 부분을 전부 다시 롤백한다
- 6. 재귀로 렌더링 시키려고 보니 #!wiki 문법이 재귀로 들어온 부분에 또 있다
- 7. 또 재귀 밑으로 한단계 더 들어간다
- 8. 이것만 봐도 얼마나 최적화가 구린 지 설명이 필요 없을 것 같다...
당장 2단계만 봐도 이 지경인데 만약 5단계 6단계로 계속 깊은 재귀에다 그런 부분이 수십개 있다면? 거의 재귀만 300번 넘게 들어간다...
그럼 뭐... 끔찍하게 느려지는거다
3. 그래서 어떻게 해결할까 ✎ ⊖
일단 렌더링을 보류해놓은 다음 재귀적인 구조가 있는 지 먼저 전부 검토한 뒤에 재귀 구조를 해소한 다음 렌더링을 시행하도록 변경했다
틀:발로란트/요원이제 그럭저럭 봐줄만큼의 속도가 나온다