突破传统 OJ 瓶颈,“判题姬”接入云函数
Online Judge 系统(简称 OJ)是一个在线的判题系统。用户可以在线提交多种程序(如C、C++、Pascal)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 随着时代的发展,OJ 已经真正地成为了测评工具,其作用不再局限为 ACM 备战,还有老师检测学生能力、学生入学考试、能力评测(例如 ZJU 的 PAT)、找工作刷题和面试(例如牛客)等,而目前 OJ 的开源框架也越来越多,但是很多 OJ 都是基于 HUSTOJ 进行定制或者二次开发。 无论是什么方法,在关于 OJ 的众多问题中,有一个就是:性能问题。 说实话,一些 OJ 群里,总会有人问:1 核 1G 的机器,可以同时判多少题目?可以有多少人同时用?如果比赛,大约有多少人需要多高性能的机器?那么『判题姬』是否只能存在传统的宿主机中,能否通过其他方式焕发新的生命力? 其中一种方法,就是和现有的云函数进行结合。 ▎简单思路 通过云函数实现在线编程的思路基本有两个: 每个用户的代码建立一个函数,用后删除; 每个语言建立一个函数,用户传递代码,每次执行; 这两种方法,第一种相对简单的,但是目前对于很多云函数服务商来说,函数数量有一定限制,而且每次执行这个操作相对比较繁琐。 所以,本文采用第二种策略,建立一个函数,每次执行,用户传入代码,系统执行,返回结果。 代码写入系统: def