<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Комментарии на: Оптимизация циклов</title>
	<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/</link>
	<description>Блог о программировании вообще и о JavaScript в частности, уроки, статьи, заметки, база знаний.</description>
	<pubDate>Mon, 08 Sep 2008 05:43:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>От: admin</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-390</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Tue, 29 Jul 2008 19:37:39 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-390</guid>
		<description>@Даниил
Честно сказать, затрудняюсь ответить. Посмотрите вот эту страницу: &lt;a href="http://blogs.sun.com/greimer/entry/best_way_to_code_a" rel="nofollow"&gt;blog.sun.com&lt;/a&gt; - этот тест производительности был сделан совсем недавно. Думаю там вы найдете ответ.</description>
		<content:encoded><![CDATA[<p>@Даниил<br />
Честно сказать, затрудняюсь ответить. Посмотрите вот эту страницу: <a href="http://blogs.sun.com/greimer/entry/best_way_to_code_a" rel="nofollow">blog.sun.com</a> - этот тест производительности был сделан совсем недавно. Думаю там вы найдете ответ.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Даниил</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-365</link>
		<dc:creator>Даниил</dc:creator>
		<pubDate>Mon, 28 Jul 2008 09:20:15 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-365</guid>
		<description>Подскажите пожалуйста, что быстрее работает while или for?!</description>
		<content:encoded><![CDATA[<p>Подскажите пожалуйста, что быстрее работает while или for?!</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: admin</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-28</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 26 Mar 2008 11:17:40 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-28</guid>
		<description>&lt;b&gt;Zeroglif&lt;/b&gt;
Информацию о do...while я нашел в книге "Professional JavaScript for WebDevelopers" (N. Zakas). Тест которым я сравнивал while и do...while я выложил &lt;a href="http://www.jstoolbox.com/demo/loops/testing.html" rel="nofollow"&gt;здесь&lt;/a&gt;. В FF и IE я получил ускорение 9% и 6% соответственно (каждый цикл прогонялся 1000 раз и затем вычислялось среднее значение). В опере разницы практически не было.
Что касается массивов/коллекций с нулевой длиной, то тут вы на все 100 правы - если есть вероятность того, что массив может быть нулевой длины, то нужно выполнять проверку, что не очень то удобно.
Ну а стоит ли использовать этот метод оставлю на суд читателей. Все таки ситуации разные бывают.</description>
		<content:encoded><![CDATA[<p><b>Zeroglif</b><br />
Информацию о do&#8230;while я нашел в книге &#8220;Professional JavaScript for WebDevelopers&#8221; (N. Zakas). Тест которым я сравнивал while и do&#8230;while я выложил <a href="http://www.jstoolbox.com/demo/loops/testing.html" rel="nofollow">здесь</a>. В FF и IE я получил ускорение 9% и 6% соответственно (каждый цикл прогонялся 1000 раз и затем вычислялось среднее значение). В опере разницы практически не было.<br />
Что касается массивов/коллекций с нулевой длиной, то тут вы на все 100 правы - если есть вероятность того, что массив может быть нулевой длины, то нужно выполнять проверку, что не очень то удобно.<br />
Ну а стоит ли использовать этот метод оставлю на суд читателей. Все таки ситуации разные бывают.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Zeroglif</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-27</link>
		<dc:creator>Zeroglif</dc:creator>
		<pubDate>Wed, 26 Mar 2008 09:03:38 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-27</guid>
		<description>&#62; Zeroglif, а вы проверте, прекрасно доходит до 0, только я ошибся
Так "я ошибся" или "прекрасно доходит"??? Одно из двух. ;) Предложенный вами вариант был неточен, ошибку вы уже нашли.</description>
		<content:encoded><![CDATA[<p>&gt; Zeroglif, а вы проверте, прекрасно доходит до 0, только я ошибся<br />
Так &#8220;я ошибся&#8221; или &#8220;прекрасно доходит&#8221;??? Одно из двух. <img src='http://www.jstoolbox.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Предложенный вами вариант был неточен, ошибку вы уже нашли.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Алексей</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-26</link>
		<dc:creator>Алексей</dc:creator>
		<pubDate>Wed, 26 Mar 2008 08:35:58 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-26</guid>
		<description>Zeroglif, а вы проверте, прекрасно доходит до 0,
только я ожибся надо двойной минус после переменной индекса во втором параметре for ставить.
тогда при каждом цикле сначала провериться можно ли продолжать (i==true или что тоже самое не равно 0),
а затем уменьшится на еденицу и начнет исполнять тело цикла.

for (i = aList.length; i---;) {
// тело цикла
}</description>
		<content:encoded><![CDATA[<p>Zeroglif, а вы проверте, прекрасно доходит до 0,<br />
только я ожибся надо двойной минус после переменной индекса во втором параметре for ставить.<br />
тогда при каждом цикле сначала провериться можно ли продолжать (i==true или что тоже самое не равно 0),<br />
а затем уменьшится на еденицу и начнет исполнять тело цикла.</p>
<p>for (i = aList.length; i&#8212;;) {<br />
// тело цикла<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Zeroglif</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-25</link>
		<dc:creator>Zeroglif</dc:creator>
		<pubDate>Wed, 26 Mar 2008 07:49:08 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-25</guid>
		<description>Алексей, предложенный вами вариант не точен, т.к. цикл не дойдёт до первого элемента - aList[0]. Внутри 'for' объявлять переменную можно, никакой разницы кроме стилистической. ;)

Автор, вы ошиблись не в том, что не так задали начальное значение 'i', а в самом использовании 'do-while'. Представьте, что массив/коллекция с нулевой длиной (обычное дело), в этом случае вы что с вариантом 'i=aList.length', что с вариантом 'i=aList.length-1' выйдете за пределы массива/коллекции и моментально получите ошибку. Требуется дополнительный контроль индекса. Помножьте это на то, что 'do-while' по большому счёту не быстрее 'while' и поймёте, почему в javascript эту конструкцию практически не используют ради скорости, только и исключительно по делу. Я бы рекомендацию в п.2 снял вообще. Удачи. ;)</description>
		<content:encoded><![CDATA[<p>Алексей, предложенный вами вариант не точен, т.к. цикл не дойдёт до первого элемента - aList[0]. Внутри &#8216;for&#8217; объявлять переменную можно, никакой разницы кроме стилистической. <img src='http://www.jstoolbox.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Автор, вы ошиблись не в том, что не так задали начальное значение &#8216;i&#8217;, а в самом использовании &#8216;do-while&#8217;. Представьте, что массив/коллекция с нулевой длиной (обычное дело), в этом случае вы что с вариантом &#8216;i=aList.length&#8217;, что с вариантом &#8216;i=aList.length-1&#8242; выйдете за пределы массива/коллекции и моментально получите ошибку. Требуется дополнительный контроль индекса. Помножьте это на то, что &#8216;do-while&#8217; по большому счёту не быстрее &#8216;while&#8217; и поймёте, почему в javascript эту конструкцию практически не используют ради скорости, только и исключительно по делу. Я бы рекомендацию в п.2 снял вообще. Удачи. <img src='http://www.jstoolbox.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>От: admin</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-24</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Tue, 25 Mar 2008 19:22:20 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-24</guid>
		<description>&lt;b&gt;Алексей&lt;/b&gt;
Спасибо за замечание, это действительно ошибка. Должно быть var i = aList.length - 1;
Что же касается объявления i, то var для того и нужен, чтобы объявлять переменную локальной внутри функции. Иначе переменная i будет объявлена как глобальная, что чревато проблемами, в том числе и с производительностью. Кроме того, невозможно объявить переменную локальной внутри цикла.</description>
		<content:encoded><![CDATA[<p><b>Алексей</b><br />
Спасибо за замечание, это действительно ошибка. Должно быть var i = aList.length - 1;<br />
Что же касается объявления i, то var для того и нужен, чтобы объявлять переменную локальной внутри функции. Иначе переменная i будет объявлена как глобальная, что чревато проблемами, в том числе и с производительностью. Кроме того, невозможно объявить переменную локальной внутри цикла.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Алексей</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-23</link>
		<dc:creator>Алексей</dc:creator>
		<pubDate>Tue, 25 Mar 2008 18:01:06 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-23</guid>
		<description>Тут ошибка:
var i = aList.length;
do {
       // тело цикла

} while (--i &#62;= 0);
начальное значение индекса за пределом размера массива.

использую
for (i = aList.length; --i;) {
       // тело цикла
}

Осторожно, внутри обьявления цикла for бесполезно писать VAR i , 
переменная i всеравно не будет локальной внутри цикла, 
она будет локальной для функции в которой объялен цикл.
Что черевато конфликтами при невнимательности.</description>
		<content:encoded><![CDATA[<p>Тут ошибка:<br />
var i = aList.length;<br />
do {<br />
       // тело цикла</p>
<p>} while (&#8211;i &gt;= 0);<br />
начальное значение индекса за пределом размера массива.</p>
<p>использую<br />
for (i = aList.length; &#8211;i;) {<br />
       // тело цикла<br />
}</p>
<p>Осторожно, внутри обьявления цикла for бесполезно писать VAR i ,<br />
переменная i всеравно не будет локальной внутри цикла,<br />
она будет локальной для функции в которой объялен цикл.<br />
Что черевато конфликтами при невнимательности.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Zeroglif</title>
		<link>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-22</link>
		<dc:creator>Zeroglif</dc:creator>
		<pubDate>Tue, 25 Mar 2008 11:51:22 +0000</pubDate>
		<guid>http://www.jstoolbox.com/2008/03/25/optimizaciya-ciklov/#comment-22</guid>
		<description>1)
'do-while' крайне редко используется в javascript потому как кроме того, что эта конструкция в общем-то не быстрее 'while', она ещё и требует разового выполнения правой от 'do' части, а это неудобно при работе с коллекциями/массивами, приходится следить за индексом, чуть подробнее когда-то отвечал тут - http://forum.htmlbook.ru/viewtopic.php?pid=37149#p37149

2)
там где вы сравниваете '--i' с нулём можно уйти от этого, оставив 'i--' в одиночестве, 'while' всё равно превратит число в булев, при нуле цикл остановится.</description>
		<content:encoded><![CDATA[<p>1)<br />
&#8216;do-while&#8217; крайне редко используется в javascript потому как кроме того, что эта конструкция в общем-то не быстрее &#8216;while&#8217;, она ещё и требует разового выполнения правой от &#8216;do&#8217; части, а это неудобно при работе с коллекциями/массивами, приходится следить за индексом, чуть подробнее когда-то отвечал тут - <a href="http://forum.htmlbook.ru/viewtopic.php?pid=37149#p37149" rel="nofollow">http://forum.htmlbook.ru/viewtopic.php?pid=37149#p37149</a></p>
<p>2)<br />
там где вы сравниваете &#8216;&#8211;i&#8217; с нулём можно уйти от этого, оставив &#8216;i&#8211;&#8217; в одиночестве, &#8216;while&#8217; всё равно превратит число в булев, при нуле цикл остановится.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
