Цикл в функции или множественный вызов функции, что быстрее? - PullRequest
3 голосов
/ 24 июня 2010

В основном я получил массив и хочу вызывать одну и ту же функцию для каждого элемента. Каким образом это быстрее?

foreach($elemeents as $element){
    callFunction($element);
}

ИЛИ

function callFunction($leements){
    foreach($elements as $element){
        //do something
    }
}

Спасибо заранее, я только начинающий

Ответы [ 6 ]

3 голосов
/ 24 июня 2010

Вероятно, немного быстрее с циклом внутри функции, поскольку существует (небольшая) стоимость каждого вызова функции. Тем не менее, это не будет иметь большого значения.

Это действительно преждевременная оптимизация, а корень всего зла .

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

0 голосов
/ 24 июня 2010

Вкратце: второй должен быть быстрее.

Подробно: при вызове функции аргументы функции, локальные переменные и адрес возврата помещаются во внутренний стек и извлекаются из стека,вызов функции завершен.Это означает, что ваш первый вариант будет вызывать эти операции стека для каждого значения в вашем массиве, в то время как второй вариант будет вызывать эти операции стека только один раз.

0 голосов
/ 24 июня 2010

На всех языках, которые я знаю, использование циклов происходит быстрее из-за операций, выполняемых при вызове функции (например, добавление ее в стек).

Однако вы не должны думать о производительности до того, как возникнут реальные проблемы с производительностью. Подумайте о дизайне, ясности кода и минимальных затратах на обслуживание.

0 голосов
/ 24 июня 2010

Я не думаю, что в любом случае между ними будет большая разница, но, насколько я помню, вызов стека функций первый метод должен занять больше времени.

0 голосов
/ 24 июня 2010

Они по сути одинаковы, и любая разница во времени выполнения будет незначительной. Все сводится к предпочтениям.

0 голосов
/ 24 июня 2010

Это вид микрооптимизации, который, скорее всего, не имеет значения. Делайте все, что приведет к более чистому коду.

Если вы знаете (знаете, не догадываетесь), что этот конкретный фрагмент кода вызывает проблемы с производительностью, то второй вариант почти наверняка немного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...