Цикл for

Статус
В этой теме нельзя размещать новые ответы.

ХакИрФсимагущий

[засикречино]
помениял и действительно результат чуток поменялся))) но всеравно я прав.
PHP:
        $tstart = microtime(true); 
    for($x=1; $x<=10000000; ++$x) {
    }
$tstop = microtime(true);
     print $tstop - $tstart;
     print" < ";
    $tstart1 = microtime(true); 
for($x=1; $x<=10000000; $x++) {
}
$tstop1 = microtime(true);
     print $tstop1 - $tstart1;
вывод:
0.23281621932983 < 0.26854395866394
 

Вурдалак

Продвинутый новичок
Почему в этом топике не упомянули про то, что текст в апострофах парсится быстрее, я не понимаю.
 

ХакИрФсимагущий

[засикречино]
Мой тест показывает оптимизацию ++$i не более. Тут пришлось доказывать это, на апострифы, както внимания не хватило. И потом посмотрите на время написания моего первого поста:) о ++$i.
Я тут миллиарднгый цикл 4 раза прогнал вот результаты первым была такая структура ++$i;
21.927159070969 < 29.788233041763 Соотношение: 1.3585085484787 Оператор --: 24.024283885956 < 29.974843025208 Соотношение: 1.2476893449769.
 

ХакИрФсимагущий

[засикречино]
объяснять в чем состоят твои заблуждения мне лень
http://www.php.net/manual/en/internals2.php http://www.php.net/manual/en/internals2.opcodes.php изучай
Дошло дело до ваших ссылок, видимо в наше время стало модно посыать всех читать мануал.
Разучились кодеры писать простой код, везде классы и фреймворки, только и остается читать мануал. И забить на оптимизацию, а ведь зачем изообретать велосипед? все написанно давно. На самом деле это прям заговор какойто, в пользу потребления большего количества серверов.

http://www.php.net/manual/en/internals2.opcodes.pre-inc.php
http://www.php.net/manual/en/internals2.opcodes.post-inc.php
Вобщем никогда не ленитьесь и развивайтесь.
 
  • Like
Реакции: WMix

WMix

герр M:)ller
Партнер клуба
но как часто ты прогоняешь миллиард данных, где каждая секунда на счету? оптимизация это несколько о другом... но ты прав ++i работает быстрее чем i++...
 

fixxxer

К.О.
Партнер клуба
Вот теперь правильно.

Как видишь, никакого отношения к "нативным функциям" это не имеет.

Но на опкод больше действительно, тут я ошибался, считая, что в обоих случаях по одному опкоду, так что грубая аналогия твоя правильная. Но именно аналогия. :)

И, кстати, любой вменяемый компилятор C подобные постинкременты оптимизирует.
 

ХакИрФсимагущий

[засикречино]
я имелл ввиду, что нативные функции разрабатывали те кто знает С. Нативные функции php всяко быстрее будут твоей собственной реализации на php. Так что лутше искать функции по маннуалам. а потом свои писать используя всякие крутые штуки типо array_diff или array_walk_recursive - вместо foreach.

когда миллионы человек посещают сайт там выйгрышь за счет подобной оптимизации весьма ощютим. Если вы использете большие циклы для рещения задач то и на 1 человека прийдется допустим 10000 циклов то на 1000 уже 10 000 000. У меня есть моя маленька кмс которую я писал так чтобы нагрузку выдерживала. Собственно с тех пор я и задумываюсь об оптимизации.

Так же был любительский опыт работы с циклами я рисовал матрицу на HTML 180 на 200 с помошью циклов на сервере. И с помошью них же встовлял в нутрь массив на все клетки причем массив на фон клеток и содержимое и присваивал им значения двойными кавычкавами, еще помню предупреждения выключал так как при каждом присвоении какаято ошибка типа notice была, так вот больше 100 человек онлайн активных пользователей такая матрица не выдерживала и тормазила, тоесть выдавала ответ через 3-4 секунды, а не мгновенно.
И это на хостинге за 2500 рублей в год , было это 5 лет назад. Сейчас бы я по другому реализовал тот функционал даже на php. А вообще такие вещи я бы лутше на скрипт все делал. Я стараюсь все не важные расчеты делать на стороне клиента, а на стороне сервера только авторизация и доступ к информации. К счастью сегодня есть CSS3 HTML5 и JS летает во всех браузерах ну или почти во всех.3))
 

WMix

герр M:)ller
Партнер клуба
10000 циклов то на 1000 уже 10 000 000 то выдавала ответ через 3-4 секунды (как это не странно)....
но мы про другие цифры.... как часто ты прогоняешь 1 000 000 000 данных, где 1 секунда на счету

но да, на дополнительных 3 человек хватило бы!

USA
я думаю в пхп чаще всего используется foreach
 

fixxxer

К.О.
Партнер клуба
ХакИрФсимагущий
вот из за нотисов больше всего тормозило думаю. Сам механизм error reporting не то чтобы быстрый.
 

Absinthe

жожо
ХакИрФсимагущий так быстрее:

PHP:
$tstart1 = microtime(true); 
$x = 10000001;
$tstop1 = microtime(true);
print $tstop1 - $tstart1;

Разучились кодеры писать простой код, везде классы и фреймворки, только и остается читать мануал. И забить на оптимизацию, а ведь зачем изообретать велосипед? все написанно давно. На самом деле это прям заговор какойто, в пользу потребления большего количества серверов.
Кто бы говорил.
 

ХакИрФсимагущий

[засикречино]
но мы про другие цифры.... как часто ты прогоняешь 1 000 000 000 данных, где 1 секунда на счету

но да, на дополнительных 3 человек хватило бы!

USA
я думаю в пхп чаще всего используется foreach
я просто увидел что тут циклами балуются вот и сказал что первое пришло в голову. Ведь Циклы первое что надо оптимизировать, так как чем больше он идет тем больше лишних опираций он может сделать.
Сложно сказать на сколько все это разгрузит сервер, но если грамотно написать все что в цикле это вполне заметно повлияет на быстродействие. Из подобных мелочей в итоге получаются быстрые программы.
 

USA

Новичок
Я не прошу вас решать за меня, подскажите или посоветуйте. Есть такая задачка, нужно сделать таблицу туров. То есть каждая команда должна сыграть друг с другом по 1 игре.
PHP:
1 тур

Игрок4 — Игрок2

Игрок1 — Игрок5

Игрок3 — Игрок6
2 тур

Игрок2 — Игрок6

Игрок5 — Игрок3

Игрок4 — Игрок1
3 тур

Игрок1 — Игрок2

Игрок3 — Игрок4

Игрок6 — Игрок5
4 тур

Игрок2 — Игрок5

Игрок4 — Игрок6

Игрок1 — Игрок3
5 тур

Игрок3 — Игрок2

Игрок6 — Игрок1

Игрок5 — Игрок4
PHP:
<?php 
include("db.php");
$result = mysql_query("SELECT Name FROM chess");
 
$rows = mysql_num_rows($result);
$colvo = $rows/2;
 
    $arr = array(); 
 
    while($myrow = mysql_fetch_array($result)) 
    { 
        $arr[] =$myrow['Name'];
    }
    

    for($i = 0; $i < $colvo; $i++)
    {
        echo $arr[$i]." - ".$arr[($rows - $i -1 )]."<br>";
    }
  
?>
А что далье делать я без понятия. Это хоть правильное решение?
PHP:
Игрок1 - Игрок6
Игрок2 - Игрок5
Игрок3 - Игрок4
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху