Дмитрий Васильковский
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 - это дробная часть.

Все ваши вычисления на порядки меньше секунды. Поэтому вычисляете Вы по полному времени или только по дробной части - до лампочки.
Николай Т.
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++)
О_О

Атас! Индусы наступают, спасайся кто может!

Посмотрите на название темы.
Гуру - если верить вики, а ей нет оснований не верить - учитель, как раз таки индийский.
Андрей К.
1172 сообщения
#15 лет назад
Итого, мы экономим 0.0000004сек. Замечательно. Мир спасен.
Дмитрий Васильковский
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 сообщений
#15 лет назад
Цитата ("elosoft"):
Все ваши вычисления на порядки меньше секунды

Это неверно.
Дмитрий Васильковский
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 сообщений
#15 лет назад
Цитата ("VOPLI"):
Это бред! intval('123456789' Нечего не делает! Нужно именно присвоение (конвертация с одной переменной в другую)!


<?php function test ($s){echo $s} test('123456789');

явно с выполнением функции проблем нет
Евгений О.
2989 сообщений
#15 лет назад
Оффтопик
Преобразование в строку
Вы можете преобразовать значение в строку, используя приведение (string), либо функцию strval(). В выражениях, где необходима строка, преобразование происходит автоматически. Это происходит, когда вы используете функции echo() или print(), либо когда вы сравниваете значение переменной со строкой. Прочтение разделов руководства Типы и Манипуляции с типами сделает следующее более понятным. Смотрите также settype().
Николай Т.
205 сообщений
#15 лет назад
Цитата ("dervinar"):
Да вообще, блин... Миллисекунды нужны ТОЛЬКО в том случае, если пишутся какие то охрененно сложные вычисления, графика например... Ну или фракталы обсчитываем с большой точностью. md5 - таблички рисуем. Ну или как крайний вариант - пишем своего демона, который выполняет функции веб-сервера...
Но млять, делать что-то из вышеперечисленного НА PHP??? Люди, вы больны! На PHP надо делать так, как максимально быстро и удобно пишется. Ну может быть еще и красиво читается(мое субьективное мнение - на PHP это невозможно, но это только мое мнение). А ПРОИЗВОДИТЕЛЬНО надо писать на нормальных языках, желательно не скриптовых!

почему не нужно, на php есть вебсервера , fastcgi и всему этому нужна производительность.
Евгений О.
2989 сообщений
#15 лет назад
Вообще-то весь спор не вполне корректный. Приведение типов и конвертация из типа в тип - это разные вещи и используются в разных ситуациях.
Сергей Д.
326 сообщений
#15 лет назад
Цитата ("elosoft"):
Цитата ("oren"):
Это неверно.

Вы хотите сказать, что приведение типа для 1 (!) значения может занять больше секунды?

Нет.
Неверно вот что: "Все ваши вычисления на порядки меньше секунды".
И неверно вот это:
Цитата ("elosoft"):
В php это не так уж приципиально. Все равно при арифметических операциях сначала будут приведены типы и результа будет числовой.
Евгений О.
2989 сообщений
#15 лет назад
Цитата ("oren"):
И неверно вот это:

Ну ладно, ладно... Конечно вот это "В php это не так уж приципиально" не верно. Но для данной конкретной ситуации разницы не будет.
Ну и тут "Все ваши вычисления на порядки меньше секунды" я несколько погорячился с порядками.