Лабораторная работа 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.

Контрольные вопросы

  1. StackTrace - назначение класса.
  2. Метод GetFrame(n) - объяснить значение параметра n.
  3. Работа с XML-данными.

results matching ""

    No results matching ""