Skip to content

Conversation

@meisterT
Copy link
Member

@meisterT meisterT commented Dec 7, 2025

The primary motivation is to significantly reduce the per-testcase overhead of judging a submission.

Historically, with fewer test cases, the separation was carrying its weight. However, with modern problems using many test cases or multiple passes, the overhead from dozens of forked simple programs (cp, mv, chmod, grep etc.) within the shell script has become a major performance bottleneck. Moving them into PHP effectively replaces them with simple system calls.

This change results in a substantial performance improvement:

  • Roughly a 50% speed-up in total judging overhead per submission
  • Example: A simple C++ solution to a multi-pass problem (NWERC 2025 practice) was reduced from ~70s to ~33s end-to-end.

@meisterT
Copy link
Member Author

meisterT commented Dec 7, 2025

No need to review yet, I am still testing and there are some follow-up changes required.

@meisterT meisterT force-pushed the judgedaemon_go_brrrrrrrrrrrr branch 4 times, most recently from eeb53d6 to 9870b64 Compare December 14, 2025 11:31
The primary motivation is to significantly reduce the per-testcase
overhead of judging a submission.

Historically, with fewer test cases, the separation was carrying its
weight. However, with modern problems requiring many test cases or
passes, the overhead from dozens of forked simple programs (`cp`, `mv`,
`chmod`, `grep` etc.) within the shell script has become a major
performance bottleneck. Moving them into PHP effectively replaces them
with simple system calls.

This change results in a substantial performance improvement:
* Roughly a 50% speed-up in total judging overhead per submission
* Example: A simple C++ solution to a multi-pass problem (NWERC 2025
  practice) was reduced from ~70s to ~33s end-to-end.
@meisterT meisterT force-pushed the judgedaemon_go_brrrrrrrrrrrr branch from 9870b64 to d56ace2 Compare December 14, 2025 12:40
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

Successfully merging this pull request may close these issues.

1 participant