powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
7 сообщений из 7, страница 1 из 1
"Амперметр"
    #1275544
Droog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раньше я немного пользовался AQTime для Delphi, в частности для оптимизации кода. AQTime в теории должен показывать участки кода, которые надо оптимизировать. Но я не очень верю в этот подход, потому что для измерения скорости нужно ставить в коде счётчики, а счётчики сами отнимают ресурсы. Мне интуитивно кажется что такие вещи, как работа счётчиков, необходимо контролировать самому. Ещё, к примеру, код от AQTime может что-то поменять в кэше (насколько я знаю), а для оптимизации это важно.

Поэтому я написал такой объект на Delphi:
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
type
  TSpeedManager=record
    FSession:record
      CurTagsCount:integer;
      AllTagsCount:integer;
      Tags:array[0..maxsessiontagscount-1] of record
        RunsCount:int64;
        RunsSumTimeMs:int64;
        LastTime:longword;
      end;
      SessionActivationTime:longword;
      SessionFinalizationTime:longword;
    end;
    FSessionFinalized:boolean;
    FReport:tstringlist;

    procedure WriteSessionReport;
    procedure SaveReportToFile;
    procedure StartSession(alltagscount:integer);
    procedure FinalizeSession;
    procedure PlaceTag(tagnum:integer);
    procedure Initialize;
    procedure Finalize;
  end;

var
  ProjectSpeedManager:TSpeedManager;
В моём коде этот объект используется, например, вот так:
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function TLinearTrianlesPlaneUnpackedModel.CalculateQPart(pointx,pointy:integer):double;
  begin
    projectspeedmanager.StartSession(4);
    projectspeedmanager.PlaceTag(1);
    result:=CalculateQPartR(pointx,pointy)*(1-FKDeriv2);
    projectspeedmanager.PlaceTag(2);
    result:=result+CalculateQPartDN(pointx,pointy)*FKDeriv2;
    projectspeedmanager.PlaceTag(3);
    projectspeedmanager.FinalizeSession;
  end;
Это код для МНК-минимизации некоего функционала; функционал состоит из двух слагаемых, соответственно считается двумя разными функциями. В данном участке считается не сам функционал, а его градиент по конкретному параметру, и градиент также состоит из двух слагаемых.
Когда программа отработала, projectspeedmanager сохранил текстовой файл отчёт, из которого я узнал, что код между тагами 1 и 2 занял 68% всего времени, а код между тэгами 2 и 3 – 31% времени. Соответственно теперь я знаю, что для оптимизации нужно прежде всего ускорить функцию CalculateQPartR, и в ней я также могу разместить тэги в разных её участках, чтобы узнать какие участки самые проблемные, потом разместить тэги и в них и т.д. Также projectspeedmanager сообщил мне, что выполнение всего кода между StartSession и FinalizeSession заняло 82% всего времени работы программы, точнее кода, который вызывал эту функцию CalculateQPartR (я и сам знал что функция CalculateQPartR лимитирующая, но на всякий случай полезно такие вещи проверять).
Это пока работает скорее в самых простых случаях, а мне придётся ещё приспосабливать мой амперметр для более сложных вариантов, например когда часть счётчиков находится внутри цикла, а часть за его пределами. Возможно тут будут нужны какие-то вложенные сессии, каждая со своим набором счётчиков.
В дальнейшем мне, возможно, потребуется сделать ещё вот что: “прокалибровать” мой амперметр, чтобы знать, сколько времени отнимает вызов счётчиков, и учесть это в пересчёте процентов, отданных каждому участку кода.
Можете подсказать, как аналогичный объект будет выглядеть на C/C++? А вы не пробовали сами написать такой объект?
...
Рейтинг: 0 / 0
"Амперметр"
    #1275551
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
начал ты хорошо, с великого Дельфи
но в конце скатился к мерзким Сям
Поэтому осиновй кол тебе в жопу, и хуй на вороток
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 1 / 0
Нравится: eNose
"Амперметр"
    #1279771
Droog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator  06.06.2019, 21:39
начал ты хорошо, с великого Дельфи
но в конце скатился к мерзким Сям
Поэтому осиновй кол тебе в жопу, и хуй на вороток
Мне надо было пересесть на духовно-скрепный C#, чтобы избежать таких обвинений?
...
Изменено: 08.06.2019, 20:03 - Droog
Рейтинг: 0 / 0
"Амперметр"
    #1279798
Stable
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Droog  06.06.2019, 21:36
А вы не пробовали сами написать такой объект?
На хуя?
...
Рейтинг: 0 / 0
"Амперметр"
    #1279916
Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
[не активирован]
sql server
Flash
Windows
1C
Unity3D
Droog  08.06.2019, 20:02
defecator  06.06.2019, 21:39
начал ты хорошо, с великого Дельфи
но в конце скатился к мерзким Сям
Поэтому осиновй кол тебе в жопу, и хуй на вороток
Мне надо было пересесть на духовно-скрепный C#, чтобы избежать таких обвинений?
Шли дефекатора нахуй и делай свою программу как тебе нравится.
...
Рейтинг: 0 / 0
"Амперметр"
    #1280991
Фотография Владайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется быть немножко сумасшедшей, а получается множко.
Droog  08.06.2019, 20:02
defecator  06.06.2019, 21:39
начал ты хорошо, с великого Дельфи
но в конце скатился к мерзким Сям
Поэтому осиновй кол тебе в жопу, и хуй на вороток
Мне надо было пересесть на духовно-скрепный C#, чтобы избежать таких обвинений?
Не сходить с Делфи
...
Зачем платить психотерапевту, если его можно придумать, и разговаривать с ним совершенно бесплатно?
Рейтинг: 0 / 0
"Амперметр"
    #1280993
cnidopod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Green2  08.06.2019, 21:17
Droog  08.06.2019, 20:02
defecator  06.06.2019, 21:39
...
Мне надо было пересесть на духовно-скрепный C#, чтобы избежать таких обвинений?
Шли дефекатора нахуй и делай свою программу как тебе нравится.
Ебать тебя в ротальник, саентолух обоссанный.
Ты ныл, что тебе нельзя говорить слушать что оскверняет твою ссаную секту и остальных сектантов.
captcha (2).jpeg
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]