powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Катострофическое отличие по скорости генерации графиков
20 сообщений из 20, страница 1 из 1
Катострофическое отличие по скорости генерации графиков
    #39020731
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снова о выводах отчета в формате pdf.
Имею вывод графиков в стандартной форме через ZEN .
График генерируются около 3 секунд. При этом выводится одновременно 9-10 графиков каждый по 520 точек.
Смотрю через Google Chrome (одна из последних офиц версий).

Те же графики запускаю на вывод, как для генерации отчета. Те же графики генерируются уже 40-45 секунд. ТЕ ЖЕ ГРАФИКИ!!!.

Код прилагается. Загрузите в систему, откомпилируйте (вирусов и вреда нет). В архиве два типа вывода графиков. Первый "kakEXPRESS" - тот что рисует графики в Chrome за 3 секунды и второй график называется "kakPDF" он рисует за 45 секунд. Запускать графики через Cache-Studio.

Проблема в том, что данные графики генерируются автоматически при проверке торговой стратегии. Сам анализ точек входа и выхода работает максимум 10 секунд на каждый анализируемый день. При этом его реально еще ускорить. Вывод графика 45 секунд, с увеличением до 60 секунд при потоковом анализе данных (чем больше обработано данных, тем дольше рисуется график).

10-20 графиков не беда. Но если требуется проанализировать 200 дней, то время набегает существенное (отчётов по графикам может быть два или три на каждый день).
В идеале, генерация графиков (точек входа и выхода на рынке акций) должны быть меньше по времени, чем сам анализ поведения робота (точек входа и выхода). То есть расчёт 10 сек, построение графика 3-8 сек (параллельно расчёту нового дня).

ВОПРОС:
Неужто нет способов ускориться. Если разница в 12 раз, то потенциал явно есть.
Пробовал всякое и вывод в xml а затем в pdf и через класс в pdf и вариантов 15. Все что касалось pdf в инструкции по Cache с оф сайта - все попробовал. В итоге - ничего так и не улучшилось.

Графики можете смело использовать в дальнейшей работе. Выкладываю в свободный доступ. Кому надо - пользуйтесь.
.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39020893
vassil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сначала думал, что FOP долго обрабатывает графики, то по результатам ^PERFMON большая нагрузка на %Stream.TmpCharacter.1
Думаю, вам лучше написать по этому вопросу в WRC


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Routine Name				RtnLines	% Lines	RtnLoads	RtnFetch	Line/Load	Directory
%Stream.TmpCharacter.1			301778,1	61,1	0	0	0	c:\intersystems\cache2015w\mgr\cachelib\
%ZEN.Report.Display.COSChart.cchart.1	165853,7	33,6	10737,8	0	15,4	c:\intersystems\cache2015w\mgr\cachelib\
%Dictionary.CompiledXData.1		13136,2		2,7	10127	0	1,3	c:\intersystems\cache2015w\mgr\cachelib\
%ZEN.Report.Display.COSChart.node.1	3030,4		0,6	559,1	0	5,4	c:\intersystems\cache2015w\mgr\cachelib\
%Library.GlobalCharacterStream.1	2908,2		0,6	0,1	0	24041,4	c:\intersystems\cache2015w\mgr\cachelib\
%Dictionary.CompiledClass.1		2453,5		0,5	85,3	0	28,8	c:\intersystems\cache2015w\mgr\cachelib\
%Library.Persistent.1			1067,4		0,2	85,5	0	12,5	c:\intersystems\cache2015w\mgr\cachelib\
%occZENReports				1066,9		0,2	21,3	0	50	c:\intersystems\cache2015w\mgr\cachelib\
%Library.RelationshipObject.1		767,8		0,2	128	0	6	c:\intersystems\cache2015w\mgr\cachelib\
%SYS.SECURITY				597,9		0,1	0	0	0	c:\intersystems\cache2015w\mgr\
%occLock				512,3		0,1	85,3	0	6	c:\intersystems\cache2015w\mgr\cachelib\
%Library.SerialObject.1			277,4		0,1	64	0	4,3	c:\intersystems\cache2015w\mgr\cachelib\
%Collection.ListOfObj.1			213,7		0	0	0	0	c:\intersystems\cache2015w\mgr\cachelib\
%ZEN.Report.Display.COSChart.ccomboChart.1105,6		0	12,7	0	8,3	c:\intersystems\cache2015w\mgr\cachelib\
%Collection.Super.1			64,8		0	0	0	0	c:\intersystems\cache2015w\mgr\cachelib\
%Stream.Object.1			64,5		0	21,5	0	3	c:\intersystems\cache2015w\mgr\cachelib\
SYS.Monitor.SystemSensors.1		44,8		0	2,9	0	15,4	c:\intersystems\cache2015w\mgr\

...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39020894
Petr0vi4444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разница в том, что во втором случае над отчётом делается xsl преобразование по шаблону, на генерацию которого уходит большинство времени.
Может стоит посмотреть в сторону использования заранее подготовленного шаблона, а не генерировать его каждый раз? Не знаю есть ли такая возможность в ZEN отчётах.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39020909
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вчера еще раз всё протестировал.
Можно вывести отчёты в формате html 2213 kb 33,7 sec
Можно вывести в формате xml 2487 kb 33,8 sec
Можно вывести в формате pdf 540 kb 35,1 sec
Получается, что *.pdf выводится, генерируется всего на 2 секунды дольше, а размер при этом имеет в 5 раз меньше. Тут как говорится, без вариантов.


Ускорится можно, разбив график на несколько (три) части. Тогда мы получим три pdf файла вместо одного. Время уменьшится до 11-15 сек.
Генерируется все быстрее, но потом, на его склейку в один файл уходит примерно те же 30 секунд, что в итоге получается еще дольше (15+30сек).

Я просмотрел что на выходе получается - генерируется здоровенный файл, в котором каждой точке графика прописывается своя точка в виде координат (здоровенные таблицы с данными в текстовом формате).
Можно конечно попытаться вывести отчёты в формате TIFF, но он также будет весить около 6 Мб без возможности увеличить картинку. Файл pdf можно увеличить в 5 раз и все точки будут отчетливо видны (не будет размытия и потери резкости).

В общем, надежда на Cache 15.2 или на непротокольные возможности C'ache.

.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39020922
vassil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тестировал ваш пример на 2015.1. думаю в версии 2015.2 врятли генерация графиков ускорится.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39020928
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Залез в системные настройки Cache.
Увеличил размер памяти под процесс, буфер, и кучу прочих параметров, которые связаны с памятью и быстродействием (в 12-14 местах).
Запустил генерацию отчёта. Те же 35 секунд.

Я помню, что под Streem данные, выделяется всего размер в 32 кб. В новой версии Каше 64 кб. С учетом того, что файл xml весит 2500 кб, то даже 64 кб будет явно недостаточно. При этом процессор вообще не нагружен. Установлен SSD Samsung 840Pro 256Mb, так что он явно так не влияет на производительность. Памяти 16Гб и её ещё полно свободной. Так что проблема не в железе. Проблема в том как Каше это делает, а делает он как то странно, раз ресурсы ПК вообще не задействованы, то есть делает через какое то бутылочное горлышко.
.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39020933
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-Оалез в системные настройки Cache.
Sorry! Не вытерпел.
Cache не виноват.
Для решения данной задачи xml не подходит.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021058
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир2012,

Вопрос и состоит в том, как можно вывести графики автоматически (сохранить их) при работе в Cache. В инструкции к Каше это делается через генерацию отчётов.

Если Вы знаете как можно сохранить файл (сгенерировать графики и сохранить их во внешнем файле) минуя работу через генерацию отчёта - поделитесь. Буду весьма благодарен.

Сгенерировать просто файл через вариант "kakEXPRESS" и сохранить его в html файле - не годится. При открытии сохранённого файла с графиками, окно с фрэймом (там где сами графики) получается пустое, то есть графики не сохраняются.

Сгенерировать файл через вариант "kakEXPRESS" и запустить его на печать в pdf файл (через тот же Chrome) можно, но как это сделать автоматически. Кроме того, печать файла вручную из html в pdf через Chrome длится около 10 секунд. В итоге получается 3+10=13секунд. Проблема в том, что это наверняка делается через java скрипт, в котором я полный ноль. Мне легче ждать 40-60 секунд, чем городить огород на изучение Java в пределах 10-15 дней. Оно того не стоит.

В то же время ОЧЕНЬ хочется ускорить вывод графиков (отчётов) в формате pdf. Если нельзя ускорить, будет очень жалко, очень, но не критично. Терпимо.

В то же время, сама суть вопроса, почему отличия по скорости построения (выводу) графиков отличаются в 13 раз (3 сек и 40 сек) так и остаётся нерешённой. Явно дело не в железе компьютера. А если дело только в софте (в C'ache), то ВСЕГДА существует несколько способов оптимизировать код, что я и пытаюсь сделать (во всяком случае найти решение, как это можно сделать).

.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021059
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть, насколько я понял:

НЕЛЬЗЯ УСКОРИТЬ ВЫВОД ГРАФИКОВ (ОТЧЁТОВ) В ФОРМАТЕ PDF (в моём конкретном случае). То есть сохранение *.pdf отчёта (файла) быстрее чем за 35-40 секунд у меня даже в теории не выйдет.

Я всё правильно понял?
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021067
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-ОЯ всё правильно понял?
Скорее всего нет.
xml и html терпимо работают до определенного их размера.
Затем просто тупят. Попробуйте без Cache поработать с xml или html размером от 100 до 10000 строк и увидите существенную разницу в скорости получения результата.
Да оно и понятно откуда тормоза идут.
Скорее всего в вашем случае если Cache поддерживает работу с сторонними dll или OLE ... ... ...
/или например имеется поддержка plugins или иного подобного механизма/ нужно их использовать для связки с какой-либо libraries умеющей строить графики /их море готовых и с исходниками/.

PS: Мой совет был дан вам исходя из практики использования xml и html в некоторых своих проектах.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021090
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,

Попробуйте использовать XPath charts
http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=GRPT_charts_in_reports

Пример
Код: sql
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Class RobotGrafiki4.kakPDF1 Extends %ZEN.Report.reportPage
{

/// This XML defines the logical contents of this report.
XData ReportDefinition [ XMLNamespace = "http://www.intersystems.com/zen/report/definition" ]
{
<report xmlns="http://www.intersystems.com/zen/report/definition" name="test" runonce="true">
 <call method="GetSub"/> 
</report>
}

/// This XML defines the display for this report.
/// This is used to generate the XSLT stylesheets for both HTML and XSL-FO.
XData ReportDisplay [ XMLNamespace = "http://www.intersystems.com/zen/report/display" ]
{
<report xmlns="http://www.intersystems.com/zen/report/display" name="test">
<document width="355mm" height="269mm" marginLeft="5" marginRight="5" marginTop="0" marginBottom="0" headerHeight="0"/>
<body>
	<lineChart
    title="demo line graph"
    dataGroup ="object"
    dataFields="!@line1,!@line2,!@line3"
    seriesNames ="line1, line2, line3"
    seriesColors="blue,red,green,yellow,orange,plum,purple"
    width ="900px"
    height="900px"
    marginTop="20"
    marginBottom="45"
    marginLeft="15"
    marginRight="10"
    legendVisible="true"
  >
<xaxis id="xAxis" minorGridLines="true" />
<yaxis id="yAxis" minValue="0" maxValue="5000"/>
</lineChart>

</body>
</report>
}

Method GetSub() As %GlobalCharacterStream
{
 set stream=##class(%GlobalBinaryStream).%New()
 for i=1:1:532 {
	 do stream.WriteLine("<object line1="""_ (1000 + i) _ """ line2=""2000"" line3=""3000""/>")
 }
 quit stream
}

}



А чтобы ещё быстрее генерировать отчёты – Render Server
http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=GRPT_report_running#GRPT_renderserver
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021156
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Коблов,

Спасибо, то что нужно. Ваш метод сработал. Не идеально, но сработал (поплыли все цвета, толщина графиков, подписи по оси Y, и Titl, короче пришлось заново делать все графические/визуальные настройки).

Вот что получилось в итоге
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021157
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Коблов,

То есть сократили время генерации отчета с 40 до 3 секунд.

Вот что получили на выходе (Файл *.pdf).


Вот что получили в виде скриншота графиков.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021161
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Коблов,

Вот итоговый файл в формате *.pdf

Часть 1 из 2.
Одним файлом не удаётся загрузить.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021162
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот итоговый файл в формате *.pdf

Часть 2 из 2-х.
Одним файлом не удаётся загрузить.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021165
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо.

Особенно Александру Коблову из Краснодара, Москвы.

Благодаря вашей помощи удалось сократить время генерации отчёта с 35 секунд до 3,5 секунд.

Что и требовалось. При этом файл генерируется в формате pdf, который можно увеличивать до 500%, без потери в качестве.
Честно говоря я особо и не надеялся на такой явный успех. Думал, что в лучшем случае сократив раза в 2, а тут в 10!

Еще раз БОЛЬШОЕ спасибо Александру Коблову.

.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021167
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр КобловО-О-О,


А чтобы ещё быстрее генерировать отчёты – Render Server
http://docs.intersystems.com/cache20152/csp/docbook/DocBook.UI.Page.cls?KEY=GRPT_report_running#GRPT_renderserver


Там я был уже давно, но застопорился на Ping, Так и не понял что от меня хотят.
.
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021169
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выкладываю код для Cahce заново, т.к. сохранился некорректно.

Модератор: у тебя видимо файлы больше 150kb, такое ограничение на форуме по размеру файлов
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39021449
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О ,

Если всё ещё актуально, то также можно ускорить и самый первый Ваш пример RobotGrafiki4.kakPDF из 17961483 .
Достаточно выставить markersVisible="false" и markerScale="0", остальные атрибуты относящиеся к маркерам [marker*] удалить как лишние.
markersVisible="false" тоже можно удалить, т.к. они и так по умолчанию выключены.
Обновлённый класс RobotGrafiki4.kakPDFClass RobotGrafiki4.kakPDF Extends %ZEN.Report.reportPage
{

/// This is the default display mode for this report.
Parameter DEFAULTMODE = "pdf";

/// This XML defines the logical contents of this report.
XData ReportDefinition [ XMLNamespace = " http://www.intersystems.com/zen/report/definition"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/definition"  name="test" runonce="true">
  <!-- dummy ReportDefinition, all data is gotten from callback methods ongetXXX -->
</report>
}

/// This XML defines the display for this report.
/// This is used to generate the XSLT stylesheets for both HTML and XSL-FO.
XData ReportDisplay [ XMLNamespace = " http://www.intersystems.com/zen/report/display"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/display"  name="test">
  <document width="355mm" height="269mm" marginLeft="5" marginRight="5" marginTop="0" marginBottom="0" headerHeight="0"/>
  <body>

    <ccomboChart
      id="d1"
      title=" " 
      titleX="46" titleY="5" 
      titleStyle="font-size: 9px; fill:#929292;"
      width="1000" height="245"
      legendVisible="false"
      backgroundStyle="fill:#DCDCDC;"
      plotAreaStyle="fill:#F9FAFB;"
      seriesColors="#FF0000,#22B14C,#262728,#D2D2D2"
      seriesCount="4"
      seriesSize="521"
      seriesTypes="line,line,line,area"
      lineStyle="stroke-width:1px;"
      ongetData="getChartData"
      plotStyle="stroke-width: 0.25; fill-opacity: 1;"
      markerScale="0"
      marginRight="3" marginBottom="1" marginLeft="1" marginTop="2" >
    <xAxis id="xAxis"
      labelStyle="font-size: 8px; "
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:#EEEEEE; opacity: 0.2;" majorUnits="60"
      minorGridLines="true" minorGridStyle="stroke-width:0.1; color:#EEEEEE;" minorUnits="15"
      minValue="0"  baseValue="0" maxValue="530"
    />
    <yAxis id="yAxis"
      labelAngle="45" labelStyle="font-size: 10px; font-family: Arial Narrow; fill:#222222;"
      labelPosition="right" majorUnits="50"
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;"
      minorGridLines="false"
      minValue="7060" baseValue="0" maxValue="7330"
    />
    </ccomboChart>

    <clineChart 
      id="d2" 
      title=" "
      titleX="40" titleY="5"
      titleStyle="font-size: 10px; fill:#929292;"
      width="1000" height="255"
      legendVisible="false"
      backgroundStyle="fill:#DCDCDC;"
      plotAreaStyle="fill:#F3F3F3;"
      seriesColors="#5CAADE,#2424E0,#DD8282,#E00000,#A3A3A3,#515151"
      seriesCount="4" 
      seriesSize="521"
      ongetData="getChartData2"
      ongetLabelY="dd"
      lineStyle="stroke-width:1px;"
      plotStyle="stroke-width: 0.3; fill-opacity: 1;"
      markerScale="0"
      marginRight="3" marginBottom="1" marginLeft="1" marginTop="2" >
    <xAxis
      labelStyle="font-size: 8px; "
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;" majorUnits="60"
      minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #EEEEEE;" minorUnits="15"
      minValue="0"  baseValue="0" maxValue="530"
    />
    <yAxis
      labelAngle="45" labelStyle="font-size: 10px; font-family: Arial Narrow; fill:#555555;"
      labelPosition="right" majorUnits="0.100"
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;"
      minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #E0FFFF;" minorUnits="0.050"
      minValue=""  baseValue="0" maxValue=""
    />
    </clineChart>

    <clineChart 
      id="d3" 
      title=" "
      titleX="40" titleY="6"
      titleStyle="font-size: 10px; fill:#929292;"
      width="1000" height="245"
      legendVisible="false"
      backgroundStyle="fill:#DCDCDC;"
      plotAreaStyle="fill:#F3F3F3;"
      seriesColors="#DD8282,#E00000,#A3A3A3,#515151,#FFC90E,#5CAADE,#2424E0,#FFC90E"
      seriesCount="4" 
      seriesSize="521"
      ongetData="getChartData3"
      ongetLabelY="dd"
      valueLabelFormat="#.##"
      lineStyle="stroke-width:1px;"
      plotStyle="stroke-width: 0.3; fill-opacity: 1;"
      markerScale="0"
      marginRight="3" marginBottom="1" marginLeft="1" marginTop="2" >
    <xAxis
      labelStyle="font-size: 8px; "
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;" majorUnits="60"
      minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #EEEEEE;" minorUnits="15"
      minValue="0"  baseValue="0" maxValue="521"
    />
    <yAxis
      labelAngle="45" labelStyle="font-size: 10px; font-family: Arial Narrow; fill:#444444;"
      majorGridLines="true" majorGridStyle="stroke-width: 1px; color:rgb(255,0,255); opacity: 0.2;" labelUnits="0.400" majorUnits="0.400"
      labelPosition="right" minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #E0FFFF;" minorUnits="0.200"
      minValue=""  baseValue="0" maxValue=""
    />
    </clineChart>

  </body>
</report>
}

/// Get chart data
Method getChartData(
  ByRef data,
  chartObject)
{

  Set data(0,0)=""
  Set data(1,0)=""
  Set data(2,0)=""
  Set data(3,0)=""

  For i=1:1:520 {
    Set data(0,i)=""
    Set data(1,i)=7070+$Random(20)
    Set data(2,i)=7195+$Random(70)
    Set data(3,i)=7280+$Random(40)
  }
}

Method getChartData2(
  ByRef data,
  chartObject)
{
  Set data(0,0)=""
  Set data(1,0)="" 
  Set data(2,0)=""
  Set data(3,0)="" 

  For i=1:1:520 {
    Set data(0,i)=0.100
    Set data(1,i)=0.180
    Set data(2,i)=0.120
    Set data(3,i)=0.150     
  }
}

Method getChartData3(
  ByRef data,
  chartObject)
{
  Set data(0,0)=""
  Set data(1,0)=""
  Set data(2,0)=""
  Set data(3,0)=""

  For i=1:1:520 {
    Set data(0,i)=($Random(3))/12+0.350
    Set data(1,i)=($Random(4))/16+0.420
    Set data(2,i)=($Random(5))/20+0.280
    Set data(3,i)=($Random(4))/16+0.240
  }
}

Method dd(
  value,
  yAxisNo,
  chartObject)
{
  s format=chartObject.valueLabelFormat
  s format=$s(format'="" : format, 1 : $s(($$$FLOOR(value)'=value):"#,#.###", 1:"#,##"))
  q ##class(%DeepSee.ResultSet).%FormatNumber(value,format)
}

}
Что касается XPath Charts , то нужно учитывать следующее:ДокументацияZen reports XPath charts is an older charting system which does not support the full functionality now available through Zen page charts. Zen reports continues to support it for backward compatibility.

источник
...
Рейтинг: 0 / 0
Катострофическое отличие по скорости генерации графиков
    #39022065
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit О-О-О ,

Если всё ещё актуально, то также можно ускорить и самый первый Ваш пример RobotGrafiki4.kakPDF из 17961483 .
Достаточно выставить markersVisible="false" и markerScale="0", остальные атрибуты относящиеся к маркерам [marker*] удалить как лишние.


А вот этот способ самый простой и эффективный.
Подтверждаю, что если отключить маркеры ( выставить значение markersVisible="false" ), то графики генерируются не 37 секунд, а всего 3. При это не плывут ни цвета, ни масштабы, ни подписи по оси Y, ни другие цветовые составляющие.
То есть получаем от графиков всё то хотели по дизайну, при этом всего за 3 секунды!

Это вариант устраивает на все 200% !!!

В итоге получили два самых эффективных способа:
Первый - загрузка данных как Stream , предложенный Александром Кобловым
и второй способ - отключение markersVisible предложенный Servit из г. Кишинёв.

Кстати, кто решит всё таки загружать данные в виде потока данных, как Staream данные, то вот код, исправляющие искажения по цвету, графикам, линиям, фону и осям Х и У.
Class RobotGrafiki4.ttt2 Extends %ZEN.Report.reportPage
{

/// This XML defines the logical contents of this report.
Parameter DEFAULTMODE = "pdf";

XData ReportDefinition [ XMLNamespace = " http://www.intersystems.com/zen/report/definition"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/definition"  name="test" runonce="true">
 <call method="GetSub"/> 
 <call method="GetSub2"/> 
</report>
}

/// This XML defines the display for this report.
/// This is used to generate the XSLT stylesheets for both HTML and XSL-FO.
XData ReportDisplay [ XMLNamespace = " http://www.intersystems.com/zen/report/display"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/display"  name="test">
<document width="1050" height="780" marginLeft="5" marginRight="5" marginTop="0" marginBottom="0" headerHeight="0"/>
<body>
  <lineChart
  title=" График 1"
  titleStyle="font-size: 3.7pt; font-family: Arial; fill: #727374;"
  width="1000" height="380"
    dataGroup ="object"
    dataFields="!@line1,!@line2,!@line3"
    seriesNames ="line1, line2, line3"
  valueLabelFormat="#.##"
  
  legendVisible="false"
  backgroundStyle="fill:#DCDCDC;"
  plotAreaStyle="fill:#F3F3F3;"
  seriesColors="#5CAADE,#2424E0,#DD8282,#E00000,#A3A3A3,#515151"
  seriesCount="4" 
  seriesSize="523"
  lineStyle="stroke-width: 1px;"
  plotStyle="stroke-width: 0.1; fill-opacity: 1;"
    markersVisible="true"
    markerScale="0.03"
    markerShapes="square,square,circle,circle"
    marginRight="1" marginBottom="1" marginLeft="5" marginTop="1"
  >
<xaxis id="xAxis" labelStyle="font-size:3pt; color: #A2A2A2;"
majorGridLines="true" majorGridStyle="stroke-width: 0.2; color: #A2A2A2; opacity: 0.2;" majorUnits="60" 
minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #EEEEEE; opacity: 0.2;" minorUnits="15"
 minValue="0"  baseValue="0" maxValue="530" />
<yaxis id="yAxis" labelStyle="font-size: 2.2pt; font-family: Arial; fill: #232131;" 
labelAngle="" labelDisplacement="-3"
majorGridLines="true" majorGridStyle="stroke-width: 0.2; color: #563215; opacity: 0.2;" majorUnits="0.20" 
minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #E0FFFF; opacity: 0.2;" minorUnits="0.20"
minValue=""  baseValue="0" maxValue="" />
</lineChart>

  <lineChart
  title=" График 2"
  titleStyle="font-size: 3.7pt; font-family: Arial; fill: #727374;"
  width="1000" height="380"
    dataGroup ="object2"
    dataFields="!@line21,!@line22,!@line23"
    seriesNames ="line21, line22, line23"
    
    ongetLabelY="gety2"
  valueLabelFormat="#.##"
  legendVisible="false"
  backgroundStyle="fill:#DCDCDC;"
  plotAreaStyle="fill:#F3F3F3;"
  seriesColors="#5CAADE,#2424E0,#DD8282,#E00000,#A3A3A3,#515151"
  seriesCount="4" 
  seriesSize="523"
  lineStyle="stroke-width: 1px;"
  plotStyle="stroke-width: 0.1; fill-opacity: 1;"
    markersVisible="true"
    markerScale="0.03"
    markerShapes="square,square,circle,circle"
    marginRight="1" marginBottom="1" marginLeft="5" marginTop="1"
  >
<xaxis id="xAxis" labelStyle="font-size:3pt; color: #A2A2A2;"
majorGridLines="true" majorGridStyle="stroke-width: 0.2; color: #A2A2A2; opacity: 0.2;" majorUnits="60" 
minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #EEEEEE; opacity: 0.2;" minorUnits="15"
 minValue="0"  baseValue="0" maxValue="530" />
<yaxis id="yAxis2" labelStyle="font-size: 2.2pt; font-family: Arial; fill: #232131;" 
labelAngle="" labelDisplacement="-3"
majorGridLines="true" majorGridStyle="stroke-width: 0.2; color: #563215; opacity: 0.2;" majorUnits="0.20" 
minorGridLines="true" minorGridStyle="stroke-width: 0.1; color: #E0FFFF; opacity: 0.2;" minorUnits="0.20"
minValue="10"  baseValue="0" maxValue="20" />
</lineChart>

</body>
</report>
}

Method GetSub() As %GlobalCharacterStream
{
 set stream=##class(%GlobalBinaryStream).%New()
 for i=1:1:520 
 {
   Set Em=##class(TestStrateg.BDTestStrateg).%OpenId(i) 
   Set rrt1=Em.ччч1 // где ччч1 - это данные из Базы Данных 
   Set rrt2=Em.ччч2 // где ччч2 - это данные из Базы Данных 
   Set rrt3=Em.ччч3 // где ччч3 - это данные из Базы Данных 
   do stream.WriteLine("<object line1="""_rrt1_""" line2="""_rrt2_""" line3="""_rrt3_"""/>")
 }
 quit stream
}

Method GetSub2() As %GlobalCharacterStream
{
 set stream=##class(%GlobalBinaryStream).%New()
 for i=1:1:520 
 {
   Set Em=##class(TestStrateg.BDTestStrateg).%OpenId(i) 
   Set rrt1=Em.ччч4 // где ччч4 - это данные из Базы Данных 
   Set rrt2=Em.ччч5 // где ччч5 - это данные из Базы Данных 
   Set rrt3=Em.ччч6 // где ччч6 - это данные из Базы Данных 
   do stream.WriteLine("<object2 line21="""_rrt1_""" line22="""_rrt2_""" line23="""_rrt3_"""/>")
 }
 quit stream
}

Method gety2(value, yAxisNo, chartObject)
{
    // НЕ РАБОТАЕТ!!!
      // НЕ РАБОТАЕТ!!!
        // НЕ РАБОТАЕТ!!!
  s format=chartObject.valueLabelFormat
  s format=$s(format'="" : format, 1 : $s(($$$FLOOR(value)'=value):"#,#.###", 1:"#,##"))
  q ##class(%DeepSee.ResultSet).%FormatNumber(value,format)
}

ClassMethod OnAfterCreateDisplay()
{
  // может меняться автоматически, если прописать код
  Set write1=..%GetComponentById("yAxis2")
  Set write1.minValue=-0.40
  Set write1.maxValue=0.40
}

}
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Катострофическое отличие по скорости генерации графиков
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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