【问题标题】:How do online judge sites isolate program performance?在线评判网站如何隔离程序性能?
【发布时间】:2010-12-31 17:31:12
【问题描述】:

有许多在线评判网站可以通过将其输出与正确答案进行比较来验证您的程序。更重要的是,他们还会检查运行时间,以确保您的程序运行时间不超过最大限制。

所以这里是我的问题,由于一些在线评判网站同时运行多个测试程序,它们如何实现性能隔离,即如何确保在重负载环境中运行的用户程序能够完成在同一时间内,就像它在空闲环境中运行时一样?

【问题讨论】:

  • 他们可能使用不止一台服务器来运行测试。
  • 有哪些网站可以做到这一点?

标签: performance isolation


【解决方案1】:

操作系统将 CPU 时间与现实世界的“挂钟”时间分开跟踪。在进行基准测试时,只看一种或另一种时间是很常见的。 CPU 或文件 I/O 密集型任务可以仅用 CPU 时间来衡量。需要外部资源的任务(例如查询远程数据库)最好用挂钟时间来衡量,因为您无权访问远程资源上的 CPU 时间。

如果一个评审站点只是比较不同测试的 CPU 时间,该站点可以同时运行多个测试。另一方面,如果挂钟时间很重要,那么站点必须使用独立的硬件或作业队列,以确保一个测试在下一个开始之前完成。

【讨论】:

  • 对于比较CPU时间,同时运行多个测试仍然是不公平的。由于在多测试环境下,程序可用的 CPU 缓存和 TLB 等资源会变得更少,这可能会对程序性能产生很大影响。
  • 好点。现代机器架构可能很难预测性能。这种影响可以通过始终运行成对的程序作为支架比赛来减轻。这样一来,绝对性能就不那么重要了,您最终仍然会获得良好的相对排名。
【解决方案2】:

作为The Computer Language Benchmarks Game measures both CPU time and Elapsed time,这些测量在空闲环境中按顺序进行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多