Giter VIP home page Giter VIP logo

Comments (15)

atukallo avatar atukallo commented on June 17, 2024

А что подразумевается под деревом вызовов методов? Есть ли разница между стеком вызовов и деревом вызовов?

from selective-profiling-test.

niktrop avatar niktrop commented on June 17, 2024

Под деревом вызовов некоторого подмножества методов я имею в виду следующее:

  • дерево строится отдельно для каждого потока
  • узлами дерева являются вызовы методов из данного подмножества
  • вызов X является потомком вызова Y iff выполнение Y начинается раньше, а заканчивается позже выполнения X
  • непосредственные потомки вызова упорядочены по времени начала исполнения

Каждому узлу дерева вызовов соответствует стек вызовов в некоторый момент времени, а дерево, таким образом, является историей стеков вызовов (интересующих нас методов).

from selective-profiling-test.

kornilova203 avatar kornilova203 commented on June 17, 2024

Код можно вставлять только в места, где есть // your code here ?

from selective-profiling-test.

niktrop avatar niktrop commented on June 17, 2024

Не обязательно. Главное - не менять порядок вызовов и возвращаемые значения существующих методов.

from selective-profiling-test.

Glost avatar Glost commented on June 17, 2024

Как я заметил, каждый метод вызывает лишь один из двух других методов, либо не вызывает ни одного.

  1. Правильно ли я понимаю, что, исходя из этого, у каждого узла дерева может быть не более одного потомка?
  2. Если мы, например, в определённом потоке вызываем метод abc, из него def, из него снова abc, из него xyz, то дерево вызовов данного потока будет выглядеть как abc->def->abc->xyz, верно?
  3. После выполнения main надо вывести деревья вызовов для всех потоков?

from selective-profiling-test.

niktrop avatar niktrop commented on June 17, 2024
  1. Да, пример получился не очень реалистичный. Решение должно работать и в общем случае. Вы можете изменить реализацию методов, чтобы это было более наглядно.
  2. Верно, при условии что никакие другие методы не вызываются.
  3. Да, для всех потоков.

from selective-profiling-test.

vladimirshefer avatar vladimirshefer commented on June 17, 2024

Насколько сильно надо "вылизать" код? Я уже написал целую документацию к 3 маленьким классам и не могу остановиться.

from selective-profiling-test.

vladimirshefer avatar vladimirshefer commented on June 17, 2024

Что подразумевается под "чтением из другого файла"? Просто прочитать или прочитать и построить аналогичное дерево?
"непосредственные потомки вызова упорядочены по времени начала исполнения" можно пояснить?
если у меня в методе a() случайно вызывается либо метод ab() либо метод ac(), то у них будет равнозначное начало времени исполнения, потому что вызовется только один из них. И понять какой метод будет вызван при самом первом обращении к a() невозможно. Как в таком случае сортировать?
a{
ab{...}
ac{...}
}

from selective-profiling-test.

niktrop avatar niktrop commented on June 17, 2024

Лучше, чтобы код был понятен без документации, но какие-то нетривиальные места можно пояснять в комментариях. Я буду больше смотреть на логику кода, но чистота будет вам в плюс.

Да, под чтением подразумевается чтение и вывод содержимого файла в каком-то виде, например, в консоль, как в предыдущей части задания.

Исполнение программы в каждом потоке линейно, так что вызовы методов упорядочены по времени. В процессе выполнения при обращении к a() будет вызван только один метод. Информацию об этом вызове и нужно сохранить. Если метод не был вызван ни разу, он не должен присутствовать в дереве вызовов.

from selective-profiling-test.

aozertsov avatar aozertsov commented on June 17, 2024

Что подразумевается под выводом дерева в файл? Обычный механизм сериализации или некоторый pretty printing с парсером?

from selective-profiling-test.

SkyForce avatar SkyForce commented on June 17, 2024

Типы аргументов не нужно сохранять, только сами значения?
Нужно ли хранить данные в файле очень структурировано или допускается сохранять информацию очень близкую к строчкам вывода, и почти не заниматься парсингом?

from selective-profiling-test.

niktrop avatar niktrop commented on June 17, 2024

Формат файла остается на ваше усмотрение, но нужно объяснить, почему он был выбран.

Типы аргументов можно не сохранять.

from selective-profiling-test.

SkyForce avatar SkyForce commented on June 17, 2024

Т.е нужно сохранить значения метода .toString() аргументов?
Получение аргументов методов и имени метода должно быть реализовано программно, или можно самому явно написать, что сохранять?
Наверное, нужно вывести деревья для каждой задачи, а не потока?

from selective-profiling-test.

Glost avatar Glost commented on June 17, 2024

Тот же вопрос.
Как я понимаю, выводить деревья всё-таки для задачи, а не для потока надо, разве нет? Иначе деревья будут очень странными для деревьев вызовов.

from selective-profiling-test.

niktrop avatar niktrop commented on June 17, 2024

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

Да, достаточно сохранять toString от аргументов. В данном задании можно указать имена методов и значения аргументов прямо в коде.

Вывести нужно для потока, но в данном случае это действительно может быть несколько деревьев. Тем не менее, они упорядочены по времени, и эту информацию не нужно терять. Можно добавить, например, фиктивный корень с именем потока, или просто выводить их подряд.

from selective-profiling-test.

Related Issues (1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.