Лабораторная работа 1
Задание
Написать собственный Tracer. На выходе должно быть два проекта.
Первый проект - класс Tracer, который позволяет замерять время выполнения любых методов. Методы, которые необходимо реализовать в классе:
class Tracer
{
// метод должен быть вызван перед вызовом замеряемого метода
public void StartTrace();
// метод должен быть вызван после вызова замеряемого метода
public void StopTrace();
// построение xml-файла с результатами замеров
public void BuildXml();
// вывод дерева результатов на консоль
public void PrintToConsole();
}
Tracer генерирует xml-файл следующего содержания:
<root>
<thread id="1" time="105ms">
<method name="external" time="100ms" package="core">
<method name="internal"
time="200ms"
package="MyClass"
paramsCount="3"></method>
</method>
</thread>
</root>
— а также выводит дерево на консоль. Вложенные вызовы StartTrace()
и StopTrace()
должны влиять на вложенность элементов в xml-дереве. У каждого элемента (метода) должны быть вычислены следующие атрибуты:
- имя метода;
- имя класса, которому метод принадлежит;
- время выполнения метода;
- количество параметров метода.
Второй проект - проект с задержками, циклами и многопоточностью. В коде второго проекта должны содержаться вызовы методов класса Tracer.
Контрольные вопросы
- StackTrace - назначение класса.
- Метод GetFrame(n) - объяснить значение параметра n.
- Работа с XML-данными.