Как получить космическую сложность программы на С? - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь сделать Online C Compiler, чтобы несколько пользователей могли скомпилировать свой код на центральном сервере. И я могу судить их код.

Я хочу вычислить сложность времени ~ Использование ЦП и сложность пространства ~ Использование памяти программы на C. Я использую Windows XP и cygwin gcc 4.5 compiler.

В качестве блога я пытаюсь взять использование памяти процесса pview

c:\cygwin\bin\gcc-3.exe -Wall source.c  -o a.exe 2>&1 | pv -o"%i\t%e\t%c2%%\t%m(K)\t%n" gcc-3.exe

Возвращается использование памяти gcc-3 равно 3520 КБ , в каждом случае либо пытайтесь использовать размер 1000 КБ, либо не использовать размер, т. Е. Простой оператор printf .

Можете ли вы помочь мне с помощью автоматизированного способа подсчета использования памяти или сложности пространства программы. Нет необходимости использовать приведенный выше код. Это только я пытаюсь.

Предложения и ответы приветствуются

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Под Cygwin, я думаю, вы можете использовать getrusage . Он содержит много информации об использовании памяти. Этот вопрос дает больше информации о том, как это работает, и практический пример.

Для программы только для Windows у вас есть GetProcessMemoryInfo . См. этот вопрос для получения дополнительной информации о том, как это работает.

1 голос
/ 05 марта 2012

Пожалуйста, посмотрите на эту тему (на самом деле, комментарий):

Практически это все, что у вас есть --- Использование ulimit (в Unix) или Job Object (в Windows) для ограничения потребления памяти вашим компилятором. Как и писал @Yavar, прогнозирование потребления памяти вашим компилятором заранее для данного источника ввода выходит за рамки нашей технологии.

Кстати, почему вы выбрали Cygwin на Win XP? Эта комбинация настолько печально известна тем, что с ней трудно справиться. Люди обычно используют его в крайнем случае для переноса программного обеспечения с происхождением Unix на Windows. Я надеюсь, что вы не сделаете дыру в безопасности вашей системы "онлайн-компилятор" ...

...