startlink   6년 전

첫 번째로 채점 프로그램의 속도를 업데이트 했습니다.

제출이 많은 문제, 제출이 많은 유저의 경우에는 채점이 매우 오래 걸리는 문제가 있었습니다.

채점을 간단하게 나타내면 채점 준비, 채점, 채점 마무리로 정리할 수 있습니다.

채점 준비는 소스 코드, 언어 정보, 데이터 준비, 프로그램을 실행하기 위한 환경 세팅 정도가 있습니다.

채점은 실제로 프로그램을 실행시키는 과정입니다.

채점 마무리는 채점이 완료된 후에 유저, 문제의 통계를 계산하는 것, 여러가지 DB에 값을 삽입하는것과 같은 과정이 있습니다.

DB 구조를 조금 바꾸고, 쿼리를 수정해 엄청난 속도의 향상이 있었습니다.

제출 수가 27000번인 계정으로 1000번 A+B 문제 (제출: 10만)을 제출했을 때, 채점을 마무리하는데 걸리는 시간이 42초 정도였습니다. 새로운 채점 프로그램으로 채점했을 때는 채점을 마무리하는데 걸리는 시간이 6초 정도가 걸렸습니다.

대부분의 문제와 유저는 제출 수가 저렇게 많지 않기 때문에, 채점을 마무리하는데 0.1초 정도의 시간이 걸리는 것을 확인했습니다.

채점이 매우 빨라질 것으로 예상됩니다.

또한, 채점 서버를 여러 개 (경험상 8개 이상) 띄우면, 채점을 마무리 하는데 걸리는 시간이 더욱 오래 걸려서 채점이 계속해서 밀리는 현상이 있었습니다.

위의 업데이트를 적용하고 채점 서버를 37개 띄웠을 때, 채점 마무리 시간이 거의 변동이 없는 것을 확인했습니다. 이제 제출이 매우 많이 몰렸을 때, 채점 서버를 많이 띄워서 밀림 없이 채점을 할 수 있게 되었습니다.

두 번째로 위의 DB 구조를 바꾸면서 일부 조건이 적용된 채점 현황 페이지 (검색을 사용했을 때)와 맞은 사람 탭의 속도를 매우 빠르게 만들었습니다.

https://www.acmicpc.net/status... 이 페이지는 평상시에 로딩하는데 약 5~6초 정도의 시간이 걸리는 페이지였으나, 이제 매우 빠르게 로딩이 됩니다.

https://www.acmicpc.net/proble... 문제의 맞은 사람 탭은 로딩하는데 보통 1~2초가 걸렸으나, 이제 여기도 매우 빠르게 로딩이 됩니다.

감사합니다.

startlink   6년 전

추가적으로, 위의 과정을 진행하면서 모든 문제의 맞은 사람, 제출 수를 정확하게 다시 계산했습니다.

앞으로는 정확한 값을 계속해서 가질 것 같습니다.

댓글을 작성하려면 로그인해야 합니다.