Задать вопрос

Как замерить производительность кода прямо в коде?

Stopwatch не подойдет.

Нужно мерить именно процессорные такты (CPU-sampling или что-то вроде того). In code.

Зачем?Я пишу генетический алгоритм, подбирающий оптимальные параметры для некого сложного метода. Скорость работы этого сложного метода сильно зависит от комбинаций параметров. По этому скорость — один из критериев, по которому фитнесс-функция отбирает лучших кандидатов.


Но алгоритм будет работать около недели на рабочей машине, в фоне, в различных условиях. Процессор то свободен, то занят, с диском тоже самое, по этому замеры времени (via Stopwatch) в разных условиях будут просто несопоставимы.


Необходима какая-то метрика эффективного времени, потраченного приложением. Или что-нибудь типа CPU-sampling из VS Perfomance Profiler'а. Но только прямо в коде. Как Stopwatch.


Или так не бывает?
  • Вопрос задан
  • 3039 просмотров
Подписаться 9 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
LightSUN
@LightSUN
Похоже вот это подойдёт:

[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool QueryProcessCycleTime(IntPtr ProcessHandle, out ulong CycleTime);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы