이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요


목차

1. 개요
2. 내용
3. 그래서 어떻게 해결할까

1. 개요

사실 이 문제는 이 바로 위의 문제와 연관 있다

2. 내용

재귀로 해결했다
- 댕청한 오픈나무 개발자가 최적화는 고려 안하면서 하는 말

현재 오픈나무 렌더러는 정규식으로 해결하고 있다

근데 예를 들어서 {{{#!wiki 내용}}}을 오픈나무에서는 먼저 렌더링하도록 시킨다. 그 과정은 이렇게 이루어진다
  • 1. #!wiki 문법을 만난다
  • 2. 안에 렌더링 완료된 부분을 롤백한다
  • 3. 재귀로 다시 렌더링 시키고 저장한다
이게 대부분의 경우에는 그럭저럭 동작하지만 틀:발로란트/요원 같이 떡칠되어 있는 문서라면?

이렇게 동작한다
  • 1. #!wiki 문법을 만난다
  • 2. 안에 렌더링 완료된 부분을 롤백한다
  • 3. 재귀로 다시 렌더링 시키고 저장한다
  • 4. 문제는 렌더링 완료하고나니 그 바로 밖에 #!wiki 문법이 또 있다
  • 5. 그럼 안에 렌더링 완료된 부분을 전부 다시 롤백한다
  • 6. 재귀로 렌더링 시키려고 보니 #!wiki 문법이 재귀로 들어온 부분에 또 있다
  • 7. 또 재귀 밑으로 한단계 더 들어간다
  • 8. 이것만 봐도 얼마나 최적화가 구린 지 설명이 필요 없을 것 같다...
당장 2단계만 봐도 이 지경인데 만약 5단계 6단계로 계속 깊은 재귀에다 그런 부분이 수십개 있다면? 거의 재귀만 300번 넘게 들어간다...

그럼 뭐... 끔찍하게 느려지는거다

3. 그래서 어떻게 해결할까

일단 렌더링을 보류해놓은 다음 재귀적인 구조가 있는 지 먼저 전부 검토한 뒤에 재귀 구조를 해소한 다음 렌더링을 시행하도록 변경했다

틀:발로란트/요원

이제 그럭저럭 봐줄만큼의 속도가 나온다