我正在尝试设计一个在线编程竞赛评委,我需要确保的一件事是,当编译相同的代码时(假设要求),给定相同的输入,它应该花费完全相同的时间要执行的程序,每次完成。
目前,我正在使用一个简单的python脚本,它有2个线程,其中一个调用一个阻塞系统调用,开始执行测试代码,另一个跟踪时间并在时间后向子进程发送终止信号限制到期。顺便说一句,出于安全和方便的原因,我在虚拟机中执行此操作(设置适当的 chroot 太复杂,而且风险更大)。
但是,给定相同的条件(即,当我恢复快照时),我仍然会在任一侧大约 50 毫秒的范围内得到执行时间的变化。由于这阻止了设置严格的时间限制,是否有办法消除这种变化?