За последние 24 часа нас посетили 63152 программиста и 1737 роботов. Сейчас ищут 914 программистов ...

Хороший тон программирования

Тема в разделе "PHP для новичков", создана пользователем Puaris83, 7 янв 2015.

  1. Puaris83

    Puaris83 Новичок

    С нами с:
    1 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    $total=(int)(($str - 1) / $msg) + 1;
    или
    $total = intval(($posts - 1) / $msg) + 1;

    Вопрос: для приведения типов какую функцию лучше использовать (int) или intval. И почему Вы так считаете.
    P.S. Мануал смотрел.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Результат математической операции всегда числовой. В приведенном примере, кроме целого числа может получиться число с точкой. Приведение к integer выполняет функцию округления вниз, в этом случае для ясности стоит использовать функцию floor() вместо (int) или intval().
     
  3. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    по-моему, здесь разницы нет - она была бы, если бы у intval был задан второй необязательный параметр.
    а визуально вариант с intval мне нравится больше.
     
  4. Period

    Period Новичок

    С нами с:
    29 дек 2014
    Сообщения:
    148
    Симпатии:
    1
    $total=(int)(($str - 1) / $msg) + 1;
    или
    $total = intval(($posts - 1) / $msg) + 1;

    При такой конструкции ($str - 1) / $msg в любом случае получится float. В случае с total нужно округлять в большую сторону, чтобы последний элемент в любом случае не потерялся: ceil( ($str - 1) / $msg ). Приведение типов уже и не нужно.

    Конкретно по вопросу - разницы нет. (int) - это наследие языка си. Дело вкуса. Можно, конечно, тесты прогнать, что быстрее.

    Добавлено спустя 12 минут 51 секунду:
    Хм, по тестам (миллион итераций) выигрывает (int), причём в 30 раз. Даже не ожидал такого. Видимо, вызов функции жрёт ресурсы. Но на реальных проектах, это никак не скажется на производительности.

    (int) $a:
    0.14500784873962
    0.12900710105896
    0.12900805473328
    0.12800693511963
    0.12800693511963
    0.12900805473328
    0.12800693511963
    0.12900805473328
    0.12800693511963
    0.12900710105896
    0.12800788879395

    intval($a)
    3.0761759281158
    3.1061780452728
    3.0661749839783
    3.0611760616302
    3.0621750354767
    3.0641748905182
    3.0781760215759
    3.0891768932343
    3.1921820640564
    3.202183008194
    3.0891771316528
     
  5. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    как осуществляется такой вывод времени?)
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    потому что одно это вызов функции со всем накладными расходами на запись стека, а другое это каст значения в другой тип. плавающее число записано порядком и мантиссой - выдрали нужные байты и получили целочисленное значение.

    Добавлено спустя 1 минуту 57 секунд:
    мануал почитай, ну ё моё)))))))) ну как так можно унижаться? в базовой поставке пхп нет глубоких методов отладки времени выполнения. зато можно работать со временем. теперь подумай что будет если я запомню время, выполню сценарий и потом посчитаю дельту между "сейчас" и временем начала? даблять это будет время затраченное на выполнение сценария))))))
     
  7. Period

    Period Новичок

    С нами с:
    29 дек 2014
    Сообщения:
    148
    Симпатии:
    1
  8. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    мне не унизительно спросить такой глупый вопрос, с чего бы?
    здесь все в какой-то степени "анонимы", можно и спросить глупость.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    кастинг быстрее, потому что даже на моём компе пхп на вызов пустой функции тратит восемь микросекунд.

    чего-то ты сегодня совсем депрессивишь...
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    по семейным... а чо так заметно? ((((
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    получается так.