По сути, вы должны проверить , чтобы увидеть.
На случай, если какой-то компилятор его не оптимизирует ...
Весьма вероятно, что x * x * x
быстрее, чем Math.Pow(x, 3)
, поскольку Math.Pow
должен решать проблему в общем случае, касающуюся дробных степеней и других вопросов, в то время как x * x * x
просто потребует пара умножает инструкции, поэтому, скорее всего, это будет быстрее.
Длинный опрос - это распространенный способ сделать что-то вроде этого; Вкратце, он работает следующим образом:
Клиент отправляет XHR на сервер.
Страница, запущенная на клиенте, получает эти данные и делает то, что делает с ними.
Вот как Facebook реализует свою функцию чата .
В этой статье также проясняются некоторые неправильные представления о длинном опросе и подробно описываются некоторые преимущества использования этого метода. итак.
Клиент закроет соединение, если не получит никаких данных в течение определенного времени. На этот тайм-аут не влияют заголовки HTTP. Он зависит от клиента и обычно устанавливается на 120 секунд IIRC.
Так что все, что вам нужно делать, это регулярно отправлять небольшие объемы данных, чтобы избежать таймаута.
Я думаю, что более надежным решением является страница с таймером Javascript, который опрашивает сервер на предмет новых данных. Протокол HTTP не предназначен для того, чтобы оставить ответ открытым.
Я бы просто повторил / распечатал HTML по ходу. Есть несколько различных способов приостановить скрипт перед отправкой следующего бита. Вам не нужно ничего делать с заголовками или каким-либо специальным кодом, чтобы заставить браузер ждать. Пока ваш сценарий все еще выполняется, он будет отображать HTML-код, полученный от сценария.
echo "<HTML><HEAD.../HEAD><BODY>";
while (running)
{
echo "printing html... </br>";
}
echo "</BODY></HTML>"; //all done
Попробовать вечно фрейм (как в Gmail)
Все эти приемы - всего лишь хаки, http не предназначен для этого.
В зависимости от того, что вы делаете, вы можете просто отображать эхо в ходе выполнения сценария, затем HTML-код будет отправлен в браузер по мере его отображения.
в конце вашего скрипта используйте что-то вроде этого (при условии, что вы включили буферизацию вывода, поместив ob_start () вверху страницы
<?php
set_time_limit(0); // Stop PHP from closing script after 30 seconds
ob_start();
echo str_pad('', 1024 * 1024, 'x'); // Dummy 1 megabyte string
$buffer = ob_get_clean();
while (isset($buffer[0])) {
$send = substr($buffer, 0, 1024 * 30); // Get 30kbs bytes from buffer :D
$buffer = substr($buffer, 1024 * 30); // Shorten buffer
echo $send; // Send buffer
echo '<br />'; // forces browser to reload contents some how :P
ob_flush(); // Flush output to browser
flush();
sleep(1); // Sleep for 1 second
}
?>
Этот скрипт в основном выводит 1 мегабайт текста на скорости 30 кбит / с (смоделировано) независимо от скорости соединения пользователя и сервера.
Я бы посоветовал вам изучить возможность реализации такой функциональности с использованием Ajax, а не простого старого HTML. Это обеспечивает большую гибкость с точки зрения архитектурного дизайна и пользовательского интерфейса