<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685845</guid>
        <pubDate>Sun, 25 Sep 2016 13:45:55 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685845</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=409605&view=findpost&p=3685815'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Penumbra &#064; <time class="tag-quote__quoted-time" datetime="2016-09-25T01:39:15+03:00">24.09.16, 22:39</time></span><div class='quote '>запрос при выборке данных за 5-6 суток обрабатывается секунд 15-20</div></div><br>
Сделай предрасчётную укрупнёнку в отдельную таблицу. Например, минимум и максимум поминутно. На точности графика при построении за сутки или более это практически не скажется, а считать запросу куда как меньше...]]></description>
        <author>Akina</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685815</guid>
        <pubDate>Sat, 24 Sep 2016 22:39:15 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685815</link>
        <description><![CDATA[Penumbra: ага, вроде бы получилось&#33;<br>
сделал запрос<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;rcount = dt / xx3</div><div class="code_line">&nbsp;&nbsp; &nbsp; str = &quot;select cdate(avg(dat)) as dat_sr, max(param) as param_mx, min(param) as param_mn From tabl1 where dat between #&quot; _</div><div class="code_line">&amp; Format(dt1, &quot;mm\/dd\/yyyy hh:mm:01&quot;) &amp; &quot;# and #&quot; &amp; Format(dt2, &quot;mm\/dd\/yyyy hh:mm:02&quot;) &amp; &quot;# group by fix(cdbl(dat)/cdbl(timeserial(0,0,&quot; &amp; rcount &amp; &quot;))) &nbsp;;&quot;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
вроде нормально график строит, правда точность не проверял<br>
из значений беру максимальное и минимальное строю эти две точки сразу на графике и соединяю прямой<br>
<br>
теперь график отрисовывается быстро, хотя сам запрос при выборке данных за 5-6 суток обрабатывается секунд 15-20]]></description>
        <author>Penumbra</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685632</guid>
        <pubDate>Fri, 23 Sep 2016 12:14:15 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685632</link>
        <description><![CDATA[Akina: <strong class='tag-b'>Penumbra</strong><br>
А чего там разбираться?<br>
Вот есть у тебя N колонок пикселов. Если начальные дата-время (пусть А), и конечные (пусть В). <br>
Ты знаешь дату-время какой-то точки (пусть Х). В какую колонку M эта точка попадёт? M = N*(Х-А)/(В-А) - чистой воды арифметика... вот для всех точек мы и считаем этот номер колонки, и по нему группируем. А из всех попавших в колонку точек берём максимальное (вот единственное, что имеет смысл обсуждать и над чем думать) значение.]]></description>
        <author>Akina</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685622</guid>
        <pubDate>Fri, 23 Sep 2016 10:00:08 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685622</link>
        <description><![CDATA[Penumbra: <strong class='tag-b'>Akina</strong>, печально, но я не могу разобраться в Вашем запросе, тк я в sql не силен  :blush: <br>
я запрос из бд делаю:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">str = &quot;select * From tabl1 where dat between #&quot; &amp; Format(dt1, &quot;mm\/dd\/yyyy hh:mm:01&quot;) &amp; &quot;# and #&quot; &amp; Format(dt2, &quot;mm\/dd\/yyyy hh:mm:02&quot;) &amp; &quot;# order by dat ;&quot;</div></ol></div></div></div></div>]]></description>
        <author>Penumbra</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685605</guid>
        <pubDate>Fri, 23 Sep 2016 08:18:54 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685605</link>
        <description><![CDATA[Akina: Отбрасывать нельзя. Значения в данных идут группами. Запросто вся группа может оказаться среди этих отброшенных 57 значений - итог очевиден. Сглаживание лучше... а вот какой тип сглаживания больше подходит, решать ТС.]]></description>
        <author>Akina</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685600</guid>
        <pubDate>Fri, 23 Sep 2016 08:08:21 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685600</link>
        <description><![CDATA[VisualProg: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> график строится 2-3 минуты</div></div><br>
<br>
Для суточных выборок, можно отбросить часть данных, а не перестраивать запрос к ним.<br>
<br>
Например, делаете выборку 60 000 записей (DataCount). Отрисовать их все - невозможно, значит, берём ширину полотна Width (они определяют число допустимых точек в графике, пускай в тестовом примере, это будет полотно шириной в 1024 пикселя), и получаем шаг, с которым будим пропускать данные:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int step = DataCount/Width; // 60 000 / 1 024 = 58</div></ol></div></div></div></div><br>
<br>
Это число (58) показывает что из 60 000 записей визуально можно воспринять только каждую пятьдесят восьмую точку (то есть 57 точек можно отбросить). Поэтому, перебирать такие данные в цикле надо с учётом, что интересная информация лежит только в каждом 58 элементе:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">for(int i=0;i&#60;DataCount;i+=58){ // только каждый 58 элемент!</div><div class="code_line">...</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">For i=0 to DataCount</div><div class="code_line">...</div><div class="code_line">i = i+57</div><div class="code_line">next i</div></ol></div></div></div></div><br>
<br>
Так отрисовка явно ускорится, даже если вы возьмёте график за год или за 2 года. Однако, если брать данные за год, надо смотреть в сторону предложения Akina, потому что в его варианте это учитывается (тоесть, не ускоряется отрисовка, а сама выборка формирует меньше данных, беря их тем же образом сразу из базы данных)<br>
<br>
Так же, можно не отбрасывать эти 57 значений, а провести &quot;сглаживание&quot; и собрать из 58 значений 1 точку, а уже по этим собранным точкам составить интерполированный график.]]></description>
        <author>VisualProg</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685547</guid>
        <pubDate>Thu, 22 Sep 2016 20:42:53 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685547</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=409605&view=findpost&p=3685542'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Penumbra &#064; <time class="tag-quote__quoted-time" datetime="2016-09-22T20:14:51+00:00">22.09.16, 20:14</time></span><div class='quote '>может можно как-то увеличить скорость построения графика?</div></div><br>
Когда ты строишь график за длительный промежуток, то в одной пиксельной колонке экрана у тебя &quot;совмещается&quot; несколько значений, а отрисовывается , видимо, по самому большому из них. Посему предлагаю заранее спросить контрол, сколько же нужно будет реально рисовать колонок в пикселах, и в запросе соответствующим образом сгруппировать исходные данные для отрисовки, типа<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">select ..., max(value) as value</div><div class="code_line">from ... </div><div class="code_line">where ...</div><div class="code_line">group by fix(@pixel_cols_count * (dt - @start_dt) / (@end_dt - @start_dt))</div></ol></div></div></div></div><br>
Т.е. даже на самом широком мониторе при самом диком разрешении в полноэкранном режиме тебе придётся отрисовывать только несколько (вряд ли более 4) тысяч значений.]]></description>
        <author>Akina</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685542</guid>
        <pubDate>Thu, 22 Sep 2016 20:14:51 +0000</pubDate>
        <title>Ускорение отрисовки графика</title>
        <link>https://forum.sources.ru/index.php?showtopic=409605&amp;view=findpost&amp;p=3685542</link>
        <description><![CDATA[Penumbra: [attach=#0][/attach]Доброго времени суток<br>
Я строю график по данным из БД.<br>
в БД сохранены 222200 записей ( напряжение с шагом 2 секунды)<br>
если я строю график за промежуток в пару часов график прорисовывается довольно быстро, но если я запрашиваю данные за период в 5-6 суток то график строится 2-3 минуты&#33; :&#33;:<br>
может можно как-то увеличить скорость построения графика?<br>
файл<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><a class='tag-url' href='http://bbs.vbstreets.ru/download/file.php?id=11598' target='_blank'>http://bbs.vbstreets.ru/download/file.php?id=11598</a></div></div>]]></description>
        <author>Penumbra</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	