<?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=14183&amp;view=findpost&amp;p=262860</guid>
        <pubDate>Sat, 13 Dec 2003 16:53:22 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=262860</link>
        <description><![CDATA[Оленевод:  <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>Цитата</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Такой трюк хорош в таких случаях:<br><br>vector &lt;double&gt; a;<br><br>зуб даю, что вот это <br>for(int i = a.size(); --i&gt;=0; )<br>{<br><br>}<br><br>будет работать быстрее, чем вот это:<br><br>for(int i = 0; i&lt;a.size(); i++ )<br>{<br><br>}<br><!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br><br>Если size() это метод, то ессессна што быстрей. Потому что во втором случае этот метод (точнее все операции из которых он состоит, а это не один цикл) будет выполняться в конце каждой итерации.<br><br>...впрочем здесь речь не об этом...<br> ]]></description>
        <author>Оленевод</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=246126</guid>
        <pubDate>Sun, 16 Nov 2003 06:57:21 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=246126</link>
        <description><![CDATA[m_fox:  Voobsche vsye zavisit ot kompilyatora i processora.<br>Naprimer na microkontrollere PIC for(i=0;i&lt;a;i++) vypolnyaetsya bystree. ]]></description>
        <author>m_fox</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=246056</guid>
        <pubDate>Sun, 16 Nov 2003 00:03:00 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=246056</link>
        <description><![CDATA[Гость Pa3k:  Вообще, на туму оптимизации, в том числе циклов, есть очень хорошая статья К. Касперского. Я впервые прочитал её в &quot;Програмисте&quot;, а потом наткнулся в интернете. Можно поискать и найти ИСЧЕРПЫВАЮЩИЙ ответ. Как я понимаю, по большему счёту всё зависит от компилятора и того как он умеет оптимизировать код. <br>Я, например стараюсь по возможности использовать циклы с постусловием и с убывающим счётчиком, который явно указываю, как регистровую переменную и иногда это приносит свои плоды<!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> ]]></description>
        <author>Гость Pa3k</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243643</guid>
        <pubDate>Tue, 11 Nov 2003 20:45:25 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243643</link>
        <description><![CDATA[Visitor:  Я и говорю, что могут две в один такт. На PI/MMX етого не было, в смысле, два полных цикла, с декодированием, исполнением, выкидыванием результата в регистр. Как правило, ети фазы совмещались со сдвигом на 1 такт. <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--><br>Но в любом случае, когда результат одной команды является аргументом другой, планировщик процессора поставит их <i>последовательно</i> во входной поток одного исполнительного устройства. Другое в етот момент будет простаивать, если не занимается завершением длинной команды, попавшей в него раньше <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> ]]></description>
        <author>Visitor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243624</guid>
        <pubDate>Tue, 11 Nov 2003 20:07:26 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243624</link>
        <description><![CDATA[Jin X:  Спаривание команд (когда две инструкции выполняются одновременно) было на Pentium-I и Pentium-MMX <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->. Начиная с Pentium Pro процессор сам упорядочивает несколько смежных команд в оптимальной последовательности, каждая команда разбивается на микрооперации и они тоже могут одновременно выполняться.<br>В любом случае схема всех <b>for</b>&#39;ов одна и та же. Только добавляются или исчезают команды, так что... ]]></description>
        <author>Jin X</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243426</guid>
        <pubDate>Tue, 11 Nov 2003 14:24:20 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243426</link>
        <description><![CDATA[Visitor:  Там все гораздо сложнее... Выполнение элементарных операций (аддитивные, сравнения, пересылки ...) может совмещаться (две инструкции в за один такт, или декодирование одной с выполнением другой), есть буфер предсказания переходов, конвейер. И просто так взять и посчитать количество тактов для последовательности инструкции уже достаточно сложно, несмотря на то, что ета &quot;внутрипроцессорная&quot; оптимизация описывается небольшим числом довольно простых правил. <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--><br>Вот напрмер, время выполнения двух почти одинаковых последовательностей команд может отличаться в 1.5-2.5 (от полутора до двух с половиной) раз, в зависимости от состояния конвейера кода и данных и расположения данных в памяти:<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1--><br>mov eax, &#91;var1&#93;<br>add eax, edi<br>mov ebx, &#91;var2&#93;<br>sub ebx, esi<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br>и<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1--><br>mov eax, &#91;var1&#93;<br>mov ebx, &#91;var2&#93;<br>add eax, edi<br>sub ebx, esi<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br>...<br>---<br>если кто сильно верит в свои способности, попробуйте оптимизировать ассемблерный код, который выдает MSVC 6 при включенном /Ox (а в нем, как минимум, есть одно лишнее умножениеи вычитание), вот для такой процедуры вычисления первых 1 000 000 простых:<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1--><br>#define NPR 1000000<br>unsigned primes&#91;NPR&#93;;<br>int nprimes;<br>void gen_primes&#40;&#41;<br>{<br>   unsigned test, i, j, q;<br>   primes&#91;0&#93; = 2;<br>   primes&#91;1&#93; = 3;<br>   primes&#91;2&#93; = 5;<br>   primes&#91;3&#93; = 7;<br>   primes&#91;4&#93; = 11;<br>   nprimes = 5;<br>   for&#40;test=13; nprimes &#60; NPR; test+=2&#41;<br>   {<br>       q = 1000000000;<br>       for&#40;j=1; q &#62;= primes&#91;j&#93;; j++&#41;<br>           if&#40;&#33;&#40;test-primes&#91;j&#93;*&#40;q = test/primes&#91;j&#93;&#41;&#41;&#41;<br>               goto l_out&#58;<br>       primes&#91;nprimes++&#93; = test;<br>l_out&#58;<br>   }<br>}<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> ]]></description>
        <author>Visitor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243041</guid>
        <pubDate>Mon, 10 Nov 2003 20:47:53 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=243041</link>
        <description><![CDATA[Jin X:  <!--QuoteBegin-=Маббус=&#045;+9.11.03, 23:04--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (=Маббус=&#045; &#064; 9.11.03, 23:04)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> for(int i = 0;i&#33;=max;i++)<br>00411A05 mov dword ptr [i],0 <br>00411A0C jmp main+37h (411A17h) <br>00411A0E mov eax,dword ptr [i] <br>00411A11 add eax,1 <br>00411A14 mov dword ptr [i],eax <br>00411A17 mov eax,dword ptr [i] <br><span style='color:red'>00411A1A cmp eax,dword ptr [max] </span><br>00411A1D je main+41h (411A21h) <br>for(int i = max;i&#33;=0;i--)<br>00411A05 mov eax,dword ptr [max] <br>00411A08 mov dword ptr [i],eax <br>00411A0B jmp main+36h (411A16h) <br>00411A0D mov eax,dword ptr [i] <br>00411A10 sub eax,1<br>00411A13 mov dword ptr [i],eax <br><span style='color:red'>00411A16 cmp dword ptr [i],0 </span><br>00411A1A je main+3Eh (411A1Eh) <br>это не одно и тоже ? или я, что то не правильно понимаю? <!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br>На самом деле прикол в том, что <u>при инициализации</u> выполняется:<br>* в первом случае:<br><b>mov dword ptr [i],0</b><br>* во втором случае:<br><b>mov eax,dword ptr [max]<br>mov dword ptr [i],eax</b><br><span style='color:White'>.</span><br>Завто внутри цикла (на каждой итерации) будет:<br>* в первом случае:<br>- в начале цикла:<br><b>mov eax,dword ptr [i]<br>add eax,1<br>mov dword ptr [i],eax</b> ; <span style='font-size:8pt;line-height:100%'>(что уже само по себе извращение, когда можно сделать inc dword ptr [i])</span><br>- в конце цикла:<br><span style='color:Red'><b>mov eax,dword ptr [i]</b> ; <span style='font-size:8pt;line-height:100%'>соптимизировать эти две инструкции нельзя,</span><br><b>cmp eax,dword ptr [max]</b> ; <span style='font-size:8pt;line-height:100%'>если цикл организован именно таким образом</span><br><b>je main+41h</b></span><br>* во втором случае:<br>- в начале цикла:<br><b>mov eax,dword ptr [i] <br>sub eax,1 <br>mov dword ptr [i],eax</b><br>- в конце:<br><span style='color:Red'><b>cmp dword ptr [i],0<br>00411A1A je main+3Eh</b></span><br><span style='color:White'>.</span><br>Т.е, в первом случае приходится на 1 инструкцию больше (<b>mov</b>), (если отключить кэш, то разница может быть ощутима, т.к. эта инструкция обращается к памяти). Кстати, даже если включить оптимизацию, то скорее всего значение переменной будет записано в регистр. На скорость это не повлияет, но тогда будет занят на 1 регистр больше (соответственно, его нельзя будет юзать при оптимизации чего-то другого, например, второго вложенного цикла).<br><span style='color:White'>.</span><br>---------------------------------------------<br><span style='color:White'>.</span><br>Теперь по поводу того, что глаголил <b>dimedrol</b>...<br>Сравнение/присвоение нулю ничуть не быстрее сравнения/присвоения другому числу. Более того, на современных процах операции с цифрами занимают столко же времени, сколько и операции с регистрами (причём, не важно, <b>eax</b> это или нет). Аналогично и с <b>inc</b> и <b>dec</b> (т.е. <b>j++</b> и <b>j--</b> работают одинаково).<br><span style='color:White'>.</span><br>Здесь фокус в другом. Если включена оптимизация, то (как уже сказал <b>rcz</b>) в первом случае будет генериться<br><b>dec esi<br>cmp esi,ebx<br>jne loop</b><br>а во втором<br><b>dec esi<br>jne loop</b><br>т.е. на 1 инструкцию меньше (<b>cmp esi,0</b> здесь не нужен, т.к. <b>jne</b> будет прыгать, если <b>esi=0</b>, а вот если <b>esi=ЧтоТоДругое</b>, то <b>jne</b> будет прыгать только если выполнен <b>cmp</b>). Надеюсь, все всё поняли <!--emo&:D--><img src='http://forum.sources.ru/html/emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif' /><!--endemo--><br><span style='color:White'>.</span><br>Важно понимать такую вещь. Делая цикл:<br><b>for(int j=SIZE;j&#33;=0;j--)</b><br>вы присваиваете переменной j значение SIZE один раз, а далее в цикле делаете inc (или dec) и сравнение j с константой.<br><span style='color:White'>.</span><br>Делая же цикл:<br><b>for(int j;j&#33;=SIZE;j++)</b><br>вы присваиваете переменной j один раз значение 0, а в цикле делаете inc (или dec) и сравнение j с SIZE. Соответственно, если SIZE - это функция, то её нужно будет вызывать на каждой итерации, следовательно, скорость снижается.<br><span style='color:White'>.</span><br>------------------------------------------<br><span style='color:White'>.</span><br>Поэтому (мораль <span style='color:C0C0C0'>в</span>сей басни такова) второй способ будет аналогичен первому только в двух случаях:<br>* если SIZE-это константа и оптимизация выключена;<br>* если SIZE-это константа, но мы делаем цикл не от/до нуля, а от/до другого числа.<br>Иначе лучше юзать первый вариант <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> ]]></description>
        <author>Jin X</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242997</guid>
        <pubDate>Mon, 10 Nov 2003 17:57:16 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242997</link>
        <description><![CDATA[Visitor:  Уточню <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> ...и если все тело цикла выполняется за мало-мало-мало микрооопераций <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> ]]></description>
        <author>Visitor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242728</guid>
        <pubDate>Mon, 10 Nov 2003 12:52:22 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242728</link>
        <description><![CDATA[rcz:  Да, такой for(int j=SIZE;j&#33;=0;j--) работает на 1 микрооперацию быстрей.<br><br>О смысле оптимизации - особенно в цикле она важна, если этот SIZE = много-много-много. ]]></description>
        <author>rcz</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242711</guid>
        <pubDate>Mon, 10 Nov 2003 12:37:18 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242711</link>
        <description><![CDATA[-=Маббус=-: <!--QuoteBegin-rcz+9.11.03, 23:24--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (rcz @ 9.11.03, 23:24)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> По тактам - одно и то же.<br>Но это ведь компиллировалось без оптимизации по скорости?<br>Если оптимизировать по скорости (ключ O2), то <br>1)for(int i = max;i&#33;=0;i--)<br>сведется к<br>loop:<br>...<br>dec esi<br>jne loop<br>2)for(int i = 0;i&#33;=max;i++)<br>если max не будет изменяться, и не будет использоваться i, то тут будет код как в 1, иначе <br>inc esi<br>cmp esi, ebx ;max<br>jne loop <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd--><br> Выходит , что первое быстрее так как там на одну комманду меньше? ]]></description>
        <author>-=Маббус=-</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242546</guid>
        <pubDate>Mon, 10 Nov 2003 07:10:13 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242546</link>
        <description><![CDATA[deesan:  Ну тут можно вспомнить еще что ++i эффективнее чем i++.<br>Но вообще Страуструп писал что хороший оптимизирующий компилятор должен выдавать одинаковый код.<br><br>Так афэйк, многие современные компиляторы заменяют инкрементный цикл на декрементный - как раз чтобы выиграть на сравнении с нулем.<br><br>А вообще ни разу в жизни не сталкивался с ситуацией где такие изыски позволяли достичь реального увеличения производительности. Ну не писал я Real-time системы <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--><br>А времен всяких там 8086 с 64кб не застал.... ]]></description>
        <author>deesan</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242401</guid>
        <pubDate>Sun, 09 Nov 2003 19:24:22 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242401</link>
        <description><![CDATA[rcz:  По тактам - одно и то же.<br><br>Но это ведь компиллировалось без оптимизации по скорости?<br><br>Если оптимизировать по скорости (ключ O2), то <br>1)for(int i = max;i&#33;=0;i--)<br>сведется к<br><br>loop:<br>...<br>dec	esi<br>jne	loop<br><br>2)for(int i = 0;i&#33;=max;i++)<br>если max не будет изменяться, и не будет использоваться i, то тут будет код как в 1, иначе <br>	inc	esi<br>	cmp	esi, ebx ;max<br><br>	jne	loop ]]></description>
        <author>rcz</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242399</guid>
        <pubDate>Sun, 09 Nov 2003 19:16:46 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242399</link>
        <description><![CDATA[dimedrol:  <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->это не одно и тоже ? или я, что то не правильно понимаю?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br>Ну я тоже чего-то не понимаю (асм тоже не очень к несчстью)<br>Но имелось ввиду(но не вкоем случае не утверждю), что эта инструкция выполниться быстрее<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1-->00411A16 cmp dword ptr &#91;i&#93;,0 <!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br>ввиду содержаня в ней &quot;мифического&quot; нуля ]]></description>
        <author>dimedrol</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242369</guid>
        <pubDate>Sun, 09 Nov 2003 18:04:41 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=242369</link>
        <description><![CDATA[-=Маббус=-:  for(int i = 0;i&#33;=max;i++)<br>00411A05  mov         dword ptr [i],0 <br>00411A0C  jmp         main+37h (411A17h) <br>00411A0E  mov         eax,dword ptr [i] <br>00411A11  add         eax,1 <br>00411A14  mov         dword ptr [i],eax <br>00411A17  mov         eax,dword ptr [i] <br><span style='color:red'>00411A1A  cmp         eax,dword ptr [max] </span><br>00411A1D  je          main+41h (411A21h) <br><br>for(int i = max;i&#33;=0;i--)<br>00411A05  mov         eax,dword ptr [max] <br>00411A08  mov         dword ptr [i],eax <br>00411A0B  jmp         main+36h (411A16h) <br>00411A0D  mov         eax,dword ptr [i] <br>00411A10  sub         eax,1 <br>00411A13  mov         dword ptr [i],eax <br><span style='color:red'>00411A16  cmp         dword ptr [i],0 </span><br>00411A1A  je          main+3Eh (411A1Eh) <br><br><br>это не одно и тоже ? или я, что то не правильно понимаю? ]]></description>
        <author>-=Маббус=-</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=178072</guid>
        <pubDate>Sat, 08 Nov 2003 17:19:53 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=178072</link>
        <description><![CDATA[AQL:  Такой трюк хорош в таких случаях:<br><br>vector &lt;double&gt; a;<br><br>зуб даю, что вот это <br>for(int i = a.size(); --i&gt;=0; )<br>{<br><br>}<br><br>будет работать быстрее, чем вот это:<br><br>for(int i = 0; i&lt;a.size(); i++ )<br>{<br><br>}<br><br><br> ]]></description>
        <author>AQL</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120520</guid>
        <pubDate>Fri, 07 Nov 2003 23:35:59 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120520</link>
        <description><![CDATA[Visitor:  да не... хороший оптимизатор никаких XOR не будет делать...<br>будет что-то вроде<br><br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1--><br>@@loc_1&#58;<br> &nbsp; &nbsp; &nbsp; &nbsp;...<br> &nbsp; &nbsp; &nbsp; &nbsp;dec edi<br> &nbsp; &nbsp; &nbsp; &nbsp;&#60;какая-то одна простая инструкция, если ее можно сюда поставить&#62;<br> &nbsp; &nbsp; &nbsp; &nbsp;jnz &nbsp;@@loc_1<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br>Вот на етой &quot;одной простой инструкции&quot; и будет выигрыш в 1 такт. Если структура выражения в цикле не позволяет ее вставить, вообще не будет выигрыша. ]]></description>
        <author>Visitor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120453</guid>
        <pubDate>Fri, 07 Nov 2003 20:35:09 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120453</link>
        <description><![CDATA[Fester:  Наверное все таки <!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1-->for&#40;int j=0;j&#33;=SIZE;j++&#41;<!--c2--></td></tr></table><div class='postcolor'><!--ec2-->   <!--emo&;)--><img src='http://forum.sources.ru/html/emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo--> <br><br>А вообще какая разница с чем сравнивать, если XOR дает ответ за один такт?  Ну не заполняются же регистры нулем быстрее <!--emo&:)--><img src='http://forum.sources.ru/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--><br>Что касается вычитания, то тут тоже нет никакой разницы, т.к. вычитание - это тоже сложение, только в обратном/дополнительном коде. Так что скорость одна и таже.<br><br>Так что разницы быть не должно....<br> ]]></description>
        <author>Fester</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120368</guid>
        <pubDate>Fri, 07 Nov 2003 18:15:11 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120368</link>
        <description><![CDATA[Visitor:  Практически побоку... можно выиграть максимум 1 такт на процессоре старше 486. Такие циклы, чтобы ето имело значение встречаются довольно редко... ]]></description>
        <author>Visitor</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120341</guid>
        <pubDate>Fri, 07 Nov 2003 17:33:57 +0000</pubDate>
        <title>Циклы</title>
        <link>https://forum.sources.ru/index.php?showtopic=14183&amp;view=findpost&amp;p=120341</link>
        <description><![CDATA[dimedrol:  Я слышал, что правельнее(в смысле оптимальнее) такой код<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1-->for&#40;int j=SIZE;j&#33;=0;j--&#41;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br>чем такой<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>CODE</b> </td></tr><tr><td id='CODE'><!--ec1-->for&#40;int j;j&#33;=SIZE;j++&#41;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br>Это аргументировалось тем, что сравнение с нклём быстрая операция.<br>Но с другой стороны вычетание медленнее, или я ошибаюсь?<br>Или нормальному оптимизотору такие фокусы побоку? ]]></description>
        <author>dimedrol</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	