О быстродействии Python на олимпиадных проверялках

Revision ru1, by IlyaCk, 2019-09-28 17:27:52

Заранее прошу прощения, если вопрос быстродействия Python на олимпиадных проверялках где-то уже обсуждался достаточно подробно и относительно недавно; в таком случае, прошу указать места таких обсуждений.

Сразу уточню, что вопрос меня интересует не столько в применении к CF, сколько в разрезах "как правильно настраивать ту копию ejudge, которую я со-админю" и "что делать мне как тренеру, когда есть ученики, которые лучше всего знают Python (и непонятно, стОит ли заставлять/убеждать их выучить C++), которых надо хоть как-то подготовить к вряд ли победному, но хоть не слишком провальному выступлению на некоем (скажем, областном) туре, проводимом на централизованном (не моём) сервере".

По моим наблюдениям, В_СРЕДНЕМ Python оказывается медленнее C++ в 1,2--3 раза, и это относительно терпимо, если ставить time limit в 3--5 раз выше времени авторского решения.

Однако, ИНОГДА (в частности, в задачах, где очень-очень много используется операция %, называемая также mod) Python оказывается медленнее C++ в добрых 10--20 раз. Увеличивать TL аж настолько я не_хочу, даже когда имею такую административную (техническую) возможность. (Или, может, дело не в mod... Если кто-то (значительно более, чем я, шарящий) захочет помочь, начиная с выяснения первопричины -- дам права на своей копии ejudge; judge set -- вообще без проблем, более глубокие -- смотря по обстоятельствам.)

Настолько резкие проседания на конкретных задачах -- они вообще лечатся на стороне сервера? Если да, то как? (вроде есть какой-то специальный Python? Кажется, pypy? А он нормально взаимодействует с ejudge? есть какие-то особенности, которые надо изучить перед тем, как его ставить?) И принято ли их лечить на именно тех серверах, которые используются на украинских областных (в централизованном варианте) и финальных этапах? (Не_окажутся ли усилия по нивелированию этой проблемы на нашем сервере жесточайшей медвежьей услугой тем участникам, которые потом будут писать на другом сервере?)

Tags python, производительность, ejudge

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru1 Russian IlyaCk 2019-09-28 17:27:52 2029 Первая редакция (опубликовано)