Информация о времени и памяти

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
coder
Posts:2
Joined:29 July 2012, 02:57
Информация о времени и памяти

Post by coder » 29 July 2012, 03:21

Здравствуйте. Спасибо за систему.
Использование системы очень удобно через консоль. Когда, например, хочется получить таблицу сабмитов и т.д(dump_...).

Вопрос: можно ли сделать так, чтобы среднее время выполнения программы на тестах (и/или максимальное) и макс. память тоже можно было получить через команду dump_filtered_runs или через dump-report. Было бы удобно если эти значения тоже хранились в базе данных (напр. в табл. runs как поля aver_run_time, max_run_time, max_run_memory или чтото подобное). Или не подскажите где это можно добавить в коде :)

Заранее спасибо за ответ.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Информация о времени и памяти

Post by cher » 30 July 2012, 10:28

Сейчас информация о времени работы на тесте хранится только в XML-файле протокола тестирования. Добавить это время в базу можно, но потребуется модификация кода в нескольких местах.

Среднее время выполнения на тесте, как мне кажется, бессмысленная величина. Объем использованной памяти - ненадежная величина.

coder
Posts:2
Joined:29 July 2012, 02:57

Re: Информация о времени и памяти

Post by coder » 30 July 2012, 12:21

Спасибо, понял. Но все таки спрошу... :)
Среднее время выполнения на тесте, как мне кажется, бессмысленная величина.
Может и среднее время бессмысленная, но все таки пользователю будет интересно, мне кажется, узнать эту информацию при получении например TL или при сравнении эффективности своих решений.
Добавить это время в базу можно, но потребуется модификация кода в нескольких местах.
Я сам покапался в коде и хотел добавить эти поля в некоторых местах, как Вы сказали.
Как я понял, вся информация о run 'е хранится в структуре runlog_state и в ней есть struct run_entry *runs. Я и добавил в эту структуру две поля run_time и run_memory. Еще добавления в нескольких местах (rldb_mysql.c при добавлении в базу и т.п).

Но я не знаю как передать эти значения (run_time, run_memory) в то место, где в базу добавляется новая запись о сабмите (run_add_record в runlog.c как я понял). В run_common.c, где производится сама проверка решений и вычисления этих данных, в функцию run_tests() передается serve_state_t state в котором хранится runlog_state. А можно ли здесь (в run_tests()) как-то в runlog_state сохранить эти значения, а потом прочитать из функции run_add_record()? Или дело намного серьезнее чем это? Извините за такие глупые вопросы...
Last edited by coder on 31 July 2012, 15:58, edited 1 time in total.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Информация о времени и памяти

Post by cher » 31 July 2012, 10:19

Решения на тестирование запускаются в отдельном процессе: ej-super-run. Результаты проверки передаются в основной процесс ej-contests в бинарном файле, структура которого описана в run_packet.h, run_packet_priv.h.

Post Reply