<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: Как снизить нагрузку, создаваемую сценарием?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9273&amp;type=atom" />
	<updated>2014-02-18T13:24:45Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9273</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Как снизить нагрузку, создаваемую сценарием?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80164#p80164" />
			<content type="html"><![CDATA[<p><img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Действительно, время уменьшилось, Просто у меня видимо система не столь сильна, что даже с &quot;добавками&quot; приходится 79 секунд ждать <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[fomenos]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28568</uri>
			</author>
			<updated>2014-02-18T13:24:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80164#p80164</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Как снизить нагрузку, создаваемую сценарием?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80160#p80160" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>и время, затраченное на рисование не изменяется.</p></blockquote></div><p>Как говорил один товарищч — «Нэ вэрю».</p><p>Ваш код — 298.0781 секунд. С моими добавками:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>Option Explicit

Dim lngTime

lngTime = Timer

dim oWord, oDoc, oSel, i, MyText

Set oWord = CreateObject(&quot;Word.Application&quot;)

oWord.Visible = False
oWord.ScreenUpdating = False

Set oDoc = oWord.Documents
oDoc.Add()
 
dim radian, pi, deltaangle
PI=4*atn(1)
radian=PI/180
deltaangle=30*radian
 
dim shpCanvas
Set shpCanvas = oDoc(1).Shapes.AddCanvas(10, 10, 450, 300) 
shpCanvas.WrapFormat.Type = 7 
dim count
count = 0
Sub Ris(x,y, len, angle)
dim color, xnew, ynew
    if len&lt;1 then
        Exit Sub        
    end if
    if len&lt;15 then 
        color = RGB(0, 255, 51)
    else
        color = RGB(0, 0, 255)
    end if    
    xnew=x+round(len*cos(angle))
    ynew=y+round(len*sin(angle))
    shpCanvas.CanvasItems.AddLine x,y,xnew,ynew
    count = count + 1
    shpCanvas.CanvasItems(count).Line.ForeColor.RGB = color
    Call Ris(xnew, ynew, len*0.65, angle-deltaangle)
    Call Ris(xnew, ynew, len*0.65, angle+deltaangle)
End Sub

Call Ris(50,280,80,-40*radian)

oWord.ScreenUpdating = True
oWord.Visible = True

WScript.Echo Timer - lngTime</code></pre></div></div></div><p>— 8.640625 секунд.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-02-18T12:59:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80160#p80160</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Как снизить нагрузку, создаваемую сценарием?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80158#p80158" />
			<content type="html"><![CDATA[<p>Попробовал, но проблемы не решает. Все ровно идет нагрузка на процессор и время, затраченное на рисование не изменяется. Хотя аналогичный алгоритм работает намного быстрее, если использовать графические компоненты библиотеки WSO. Просто хочется именно в Word все это делать.</p>]]></content>
			<author>
				<name><![CDATA[fomenos]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28568</uri>
			</author>
			<updated>2014-02-18T12:43:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80158#p80158</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Как снизить нагрузку, создаваемую сценарием?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80157#p80157" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>objWord.Visible = False
objWord.ScreenUpdating = False
</code></pre></div><p>в начале и:<br /></p><div class="codebox"><pre><code>objWord.ScreenUpdating = True
objWord.Visible = True
</code></pre></div><p>— в конце, после всех рисований.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-02-18T12:22:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80157#p80157</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: Как снизить нагрузку, создаваемую сценарием?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80153#p80153" />
			<content type="html"><![CDATA[<p>Есть такой пример кода на VBScript:</p><div class="codebox"><pre><code>
Option Explicit

dim oWord, oDoc, oSel, i, MyText

Set oWord = CreateObject(&quot;Word.Application&quot;)
Set oDoc = oWord.Documents
oDoc.Add()
oWord.Visible = True

 
dim radian, pi, deltaangle
PI=4*atn(1)
radian=PI/180
deltaangle=30*radian
 
dim shpCanvas
Set shpCanvas = oDoc(1).Shapes.AddCanvas(10, 10, 450, 300) 
shpCanvas.WrapFormat.Type = 7 
dim count
count = 0
Sub Ris(x,y, len, angle)
dim color, xnew, ynew
    if len&lt;1 then
        Exit Sub        
    end if
    if len&lt;15 then 
        color = RGB(0, 255, 51)
    else
        color = RGB(0, 0, 255)
    end if    
    xnew=x+round(len*cos(angle))
    ynew=y+round(len*sin(angle))
    shpCanvas.CanvasItems.AddLine x,y,xnew,ynew
    count = count + 1
    shpCanvas.CanvasItems(count).Line.ForeColor.RGB = color
    Call Ris(xnew, ynew, len*0.65, angle-deltaangle)
    Call Ris(xnew, ynew, len*0.65, angle+deltaangle)
End Sub

Call Ris(50,280,80,-40*radian)
</code></pre></div><p>После запуска сценария создается новый документ Word, и в нем посредством классов объектной модели Рисуется дерево Пифагора (фракталы). Все работает через рекурсию.<br />Проблема в том, что при рисовании создается сильная нагрузка на процессор, да и сам процесс рисования слишком долго происходит. Как можно решить данную проблему?</p>]]></content>
			<author>
				<name><![CDATA[fomenos]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28568</uri>
			</author>
			<updated>2014-02-18T11:20:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80153#p80153</id>
		</entry>
</feed>
