В чем разница в производительности между in_array и array_values ​​в php?

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

$resp = [];
foreach($data as $val){
  $resp[$val] = $val;
}

return array_values($resp);

против

$resp = [];
foreach($data as $val){
  if (!\in_array($val, $resp, false)){
      $resp[] = $val;
  }
}

return $resp;

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

но второй вариант потребует больше процессора, поскольку ему придется проверять in_array на предмет постоянно растущего массива.

Любые идеи?

Результат должен быть

[
  0 => 'no dup data',
  1 => 'no dup data 1',
  ...
]

Почему бы тебе не протестировать это самому, а затем показать нам собственное исследование?

Martin 17.12.2018 20:47

Вы просто пытаетесь получить то же самое, что и array_unique()?

Nigel Ren 17.12.2018 20:47
microtime(true) и memory_get_usage()
AbraCadaver 17.12.2018 20:52

@Martin - это не тот же вопрос, что и ur dup

Patrioticcow 17.12.2018 20:58

Почему нет? Вы используете гораздо менее эффективные запросы, чем array_unique, вы заявляете, что хотите использовать методы faster and more efficient, поэтому ответы на обман дают вам эти возможности.

Martin 17.12.2018 21:01

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

Martin 17.12.2018 21:07

производительность и использование памяти не включаются, поэтому «лучше» будет субъективно в отношении того, чего вы хотите достичь. Для всех намерений и целей array_unique()3v4l.org/nIah0/perf#output достигнет желаемых результатов быстро, но использовать больше памяти, чем array_values. Альтернативой может быть использование array_flip дважды или array_keys, который заменит индекс на значение и обратно, но это быстрее и использует меньше памяти.

Will B. 17.12.2018 21:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
102
0

Другие вопросы по теме