PHP - Гуру. Разъясните, please.
756 сообщений
#15 лет назад
Цитата ("Lisio"):For($i=0;$i>1000;$i++)
О_О
Атас! Индусы наступают, спасайся кто может!
Ой пардон! Исправил!
результаты
intval = 0.0012218952178955
int = 0.00079512596130371
Цитата ("Lisio"):
Кстати, VOPLI, что у вас в адресной строке указано?
?id=123456
2989 сообщений
#15 лет назад
Оффтопик
php manual
При вызове без необязательного параметра, возвращается строка в формате "msec sec", где sec - это количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT), а msec - это дробная часть.
При вызове без необязательного параметра, возвращается строка в формате "msec sec", где sec - это количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT), а msec - это дробная часть.
Все ваши вычисления на порядки меньше секунды. Поэтому вычисляете Вы по полному времени или только по дробной части - до лампочки.
205 сообщений
#15 лет назад
Цитата ("VOPLI"):
Проверил! В 100 циклах!
молодец, возьми пирожок с полки потому что ты измерил скорость выполнения операции присвоения

а теперь давай замерь xdebugом и убедись что приведение к типу быстрее работает
<?php while($i<100000000){(int)'123456789';++$i;}
<?php while($i<100000000){intval('123456789');++$i;}
на моей машине отношение времен выполнения int к intval от 4 до 6 получается
601 сообщение
#15 лет назад
Цитата ("Lisio"):For($i=0;$i>1000;$i++)
О_О
Атас! Индусы наступают, спасайся кто может!
Посмотрите на название темы.
Гуру - если верить вики, а ей нет оснований не верить - учитель, как раз таки индийский.
756 сообщений
#15 лет назад
Цитата ("e1it3"):Цитата ("VOPLI"):
Проверил! В 100 циклах!
молодец, возьми пирожок с полки потому что ты измерил скорость выполнения операции присвоения
а теперь давай замерь xdebugом и убедись что приведение к типу быстрее работает<?php while($i<100000000){(int)'123456789';++$i;}<?php while($i<100000000){intval('123456789');++$i;}
на моей машине отношение времен выполнения int к intval от 4 до 6 получается
Это бред! intval('123456789'

Цитата ("Lisio"):
Итого, мы экономим 0.0000004сек. Замечательно. Мир спасен
Был задан вопрос, был дан ответ! Все довольны! Голактеко безопасносте!
326 сообщений
#15 лет назад
Итак... Я взял код VOPLI, поставил правильные знаки, количество итераций задал равным одному миллиону.При отсутствии гет-параметров, результаты были примерно такие:
intval = 7.8654479980469
int = 6.8617630004883
Но при задании гет параметра id, скорость существенно возросла, и при разных запусках были разные результаты. И такие:
intval = 0.87460994720459
int = 0.73152589797974
и такие:
intval = 0.86762118339539
int = 0.54453802108765
О чём говорит такое расхождение? Правильно: таким кодом тестировать эти функции некорректно.
205 сообщений
#15 лет назад
Цитата ("Lisio"):Итого, мы экономим 0.0000004сек. Замечательно. Мир спасен.
о да, при этом структура бд не содержит индексов, и как каркас cms юзаем zend framework

601 сообщение
#15 лет назад
Да вообще, блин... Миллисекунды нужны ТОЛЬКО в том случае, если пишутся какие то охрененно сложные вычисления, графика например... Ну или фракталы обсчитываем с большой точностью. md5 - таблички рисуем. Ну или как крайний вариант - пишем своего демона, который выполняет функции веб-сервера...Но млять, делать что-то из вышеперечисленного НА PHP??? Люди, вы больны! На PHP надо делать так, как максимально быстро и удобно пишется. Ну может быть еще и красиво читается(мое субьективное мнение - на PHP это невозможно, но это только мое мнение). А ПРОИЗВОДИТЕЛЬНО надо писать на нормальных языках, желательно не скриптовых!
326 сообщений
756 сообщений
#15 лет назад
Цитата ("oren"):О чём говорит такое расхождение?
О том что int быстрее

Придумай свой вариант тестирования!
Мне например интересно

2989 сообщений
#15 лет назад
Цитата ("oren"):Это неверно.
Вы хотите сказать, что приведение типа для 1 (!) значения может занять больше секунды?
756 сообщений
#15 лет назад
Цитата ("dervinar"):На PHP надо делать так, как максимально быстро и удобно пишется.
А потом всё тормозит...
Я уже говорил... тут однозначного решения быть не может! Красивенный код с рекурсией в три строчки работает в 10 раз медленнее чем галимый в 10 строчек!
Цитата ("dervinar"):
надо писать на нормальных языках
Когда человек задаст вопрос про нормальные языки, тогда и будем их обсуждать!
1172 сообщения
#15 лет назад
Цитата ("dervinar"):А ПРОИЗВОДИТЕЛЬНО надо писать на нормальных языках, желательно не скриптовых!
На самом деле проблема в другом, большинство пишет настолько непроизводительно, что ... получается Битрикс, к примеру.
А по поводу спора, что лучше использовать, то не надо забывать, что intval используется для конвертации string в integer с приведением в численную систему с основанием. Отсюда и более долгий процесс самой конвертации. Но не настолькой долгий, чтобы обратить на него внимание. Главное не пишите, как создатель CMS Slaed. Он умудрялся конвертировать integer в string таким вот методом: echo "".$var."";
205 сообщений
2989 сообщений
#15 лет назад
Оффтопик
Преобразование в строку
Вы можете преобразовать значение в строку, используя приведение (string), либо функцию strval(). В выражениях, где необходима строка, преобразование происходит автоматически. Это происходит, когда вы используете функции echo() или print(), либо когда вы сравниваете значение переменной со строкой. Прочтение разделов руководства Типы и Манипуляции с типами сделает следующее более понятным. Смотрите также settype().
Вы можете преобразовать значение в строку, используя приведение (string), либо функцию strval(). В выражениях, где необходима строка, преобразование происходит автоматически. Это происходит, когда вы используете функции echo() или print(), либо когда вы сравниваете значение переменной со строкой. Прочтение разделов руководства Типы и Манипуляции с типами сделает следующее более понятным. Смотрите также settype().
205 сообщений
#15 лет назад
Цитата ("dervinar"):Да вообще, блин... Миллисекунды нужны ТОЛЬКО в том случае, если пишутся какие то охрененно сложные вычисления, графика например... Ну или фракталы обсчитываем с большой точностью. md5 - таблички рисуем. Ну или как крайний вариант - пишем своего демона, который выполняет функции веб-сервера...
Но млять, делать что-то из вышеперечисленного НА PHP??? Люди, вы больны! На PHP надо делать так, как максимально быстро и удобно пишется. Ну может быть еще и красиво читается(мое субьективное мнение - на PHP это невозможно, но это только мое мнение). А ПРОИЗВОДИТЕЛЬНО надо писать на нормальных языках, желательно не скриптовых!
почему не нужно, на php есть вебсервера ссылка , fastcgi ссылка и всему этому нужна производительность.
2989 сообщений
#15 лет назад
Вообще-то весь спор не вполне корректный. Приведение типов и конвертация из типа в тип - это разные вещи и используются в разных ситуациях.
326 сообщений
#15 лет назад
Цитата ("elosoft"):Цитата ("oren"):Это неверно.
Вы хотите сказать, что приведение типа для 1 (!) значения может занять больше секунды?
Нет.
Неверно вот что: "Все ваши вычисления на порядки меньше секунды".
И неверно вот это:
Цитата ("elosoft"):
В php это не так уж приципиально. Все равно при арифметических операциях сначала будут приведены типы и результа будет числовой.