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 2 times, most recently from 2dca26e to 2e05a6b Compare December 7, 2025 19: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 2e05a6b to eeb53d6 Compare December 7, 2025 20:09
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