Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCaml 언어의 컴파일 커맨드와 메모리/시간 제한을 변경해주세요 #186

Closed
sangwoo-joh opened this issue Sep 24, 2020 · 6 comments

Comments

@sangwoo-joh
Copy link

sangwoo-joh commented Sep 24, 2020

안녕하세요. 취미로 OCaml 문제풀이를 하고 있는 사람입니다.

지금 백준의 OCaml 언어 설정은 아래와 같은데요:

  • 컴파일: ocamlc -o Main Main.ml
  • 실행: ./Main
  • 버전: OCaml version 4.07.0
  • 메모리 제한: +32MB

이를 아래와 같이 변경해주시면 감사하겠습니다:

  • 컴파일: ocamlopt -o Main Main.ml -O2
  • 실행: ./Main
  • 버전: OCaml version 4.07.0
  • 시간 제한: x2 + 1초
  • 메모리 제한: x2 + 16MB

컴파일 커맨드

ocaml 패키지를 설치하면 바이트코드 컴파일러인 ocamlc와 네이티브코드 컴파일러인 ocamlopt가 모두 설치됩니다. 실제 프로덕션에서는 대부분 최적화되어 빠른 성능을 내는 ocamlopt를 사용하며, -O2의 최적화 플래그를 적용합니다. C++의 -O2 최적화와 유사한 느낌으로 적용해주시면 좋겠습니다.

메모리/시간 제한

OCaml 언어는 기본적으로 GC 언어라서 많은 특성이 자바와 유사합니다. 그래서 자바와 비교한 벤치마크를 보시면 시간이나 메모리 사용량이 자바와 유사한 것을 확인할 수 있습니다. 그러므로 메모리/시간 제한을 자바와 동일하게 적용해주시면 좋겠습니다.

감사합니다.

@Baekjoon
Copy link
Member

이번 업데이트에 포함되었습니다.

@sangwoo-joh
Copy link
Author

@Baekjoon 감사합니다..!!!!

@sangwoo-joh
Copy link
Author

@Baekjoon
시간 제한이랑 메모리 제한은 아직 미반영인건가요..?

@Baekjoon
Copy link
Member

ocamlopt로 변경하니 반영하지 않아도 될 정도로 충분히 빠르다고 테스트했습니다.

제가 Ocaml을 잘 몰라서 그럴 수도 있으니 여러가지 레퍼런스 제출을 보여주시면 보고 다시 결정하겠습니다.

@sangwoo-joh
Copy link
Author

@Baekjoon 바쁘신데 이렇게 답변 남겨주셔서 감사합니다!
제가 본문에 건 링크는 같은 문제를 푸는 알고리즘을 각각 Java와 OCaml로 구현했을 때 시간과 메모리 사용량을 비교한 벤치마크인데요, 살펴보시면 대부분의 벤치마크에서 Java와 유사함을 확인하실 수 있습니다.
ocamlopt 로 컴파일하면 메모리 사용량에 있어서는 대부분 Java보다 월등하지만, 시간은 거의 대부분 뒤쳐집니다.
혹시 이 벤치마크 내용을 확인해주실 수 있을까요?

@sangwoo-joh
Copy link
Author

sangwoo-joh commented Oct 27, 2020

@Baekjoon
음, 그런데 제가 이전에 OCaml로 풀었을 때 시간 초과 나는 문제들을 다시 제출해보니 잘 통과하네요 (e.g. 2751번). 아주 큰 테스트케이스가 아닌 경우 대부분 잘 동작하는 것 같습니다.
벤치마크의 경우에도 제가 시간만 확인해서 나머지는 놓쳤었는데, 메모리 사용량 같은 경우 자바보다 월등히 좋네요. 시간도 지금 세팅으로 크게 무리 없어 보입니다.
말씀하신대로 ocamlopt로 충분해보입니다. 감사합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants