私はオンラインプログラミングコンテストの審査員を設計しようとしています。確認する必要があることの1つは、同じコードをコンパイルすると(要件を前提として)、同じ入力が与えられた場合、まったく同じ時間がかかることです。これが実行されるたびに実行するプログラム。
現在、2つのスレッドを持つ単純なPythonスクリプトを使用しています。一方は、テストコードの実行を開始するブロッキングシステムコールを呼び出し、もう一方は時間を追跡し、時間後に子プロセスに強制終了シグナルを送信します。制限が切れます。ちなみに、私はセキュリティと利便性のために仮想マシン内でこれを行っています(適切なchrootの設定は非常に複雑で、リスクが高くなります)。
ただし、同じ条件(つまり、スナップショットを復元する場合)を指定すると、実行にかかる時間は、どちらの側でも約50ミリ秒の範囲で変動します。これにより、厳密な時間制限を設定できなくなりますが、この変動を排除する方法はありますか?