Как стать автором
Обновить
13
0
Максим Чистов @MaximChistov

Java Software Developer

Отправить сообщение
Да ладно вам, у всех бывают опечатки. Видно же, что старался.
Круто, что есть и толковые программисты на Delphi :)
Спасибо, интересная статья.
Обычно выглядит так:
— А ну-ка, сделай мне фичу ХХХ!
— Ок, сделаю, но потом не удастся нормально реализовать УУУ
— А, пофиг, придумаем че-нить!

— КАКОГО #%$$%^ НЕ РАБОТАЕТ УУУ????777?777
Имею в виду то, что классические нативные массивы в РНР не представлены.
И хранится нечто вроде
$array=[];
будет, если совсем упростить, в виде:
struct KeyValue{
void* key;
void* value;
KeyValue* prev;
KeyValue* next;
}
struct KeyValue* array;

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

Вы смешиваете в одно список и хеш.
Как и разработчики PHP, которых я, кстати, процитировал :)
ps минуснул не я
Но ведь это принципиально разные массивы.
В классическом массиве доступ к произвольному элементу состоит из двух шагов:
1) прибавить к адресу начала масссива индекс * размер элемента(фиксированный)
2) считать данные из этого адреса в памяти
А в ссылочном:
1) прибавить к адресу начала массива адресов элементов индекс * размер ссылки на элемент(фиксированный)
2) считать по этому адресу адрес реального расположения данных
3) считать данные из их реального адреса.

В итоге — в полтора раза больше действий
Конечно он будет работать медленнее в PHP.
см. мои предыдущие комментарии
*конечно же
if($array[$i] >=$value)
можете, кстати, для insertBruteForce
foreach($array as $position => $test)  {
        if ($test >= $value) {

поменять на
for($i=0;$i<count($array);$i++)  {
        if ($test >= $array[$i]) {

и удивиться еще раз =)
нет, речь о том, что в классическом массиве невозможно хранить пременные переменной длины(проивольные строки хранить вообще никак). Только одинаковые блоки ) А в SplArray конвертируется любой php массив, так что это массив ссылок, но не значений.
Уже заметно лучше, но все еще не массив значений ) Индексы в нем явно в виде ссылок, иначе вот так
<?php
// Initialize the array with a fixed length
$array = new SplFixedArray(5);

$array[1] = 2;
$array[4] = "foo";

var_dump($array[0]); // NULL
var_dump($array[1]); // int(2)

var_dump($array["4"]); // string(3) "foo" 
нельзя было бы сделать. Ну и речь шла о базовых массивах, а не о надстройках :)
Может возникнуть вопрос:
«А нафига?»
Так вот ответ, имхо, таков:
«Т.к. PHP язык для фронта, Ему зачастую приходится работать с данными со сложной ветвистой изменчивой структурой данных, что довольно удобно делать применяя встроенные функции и встроенный же функционал массивов, которые не совсем массивы.
А вот обработка большущих массивов однотипных данных в вашей страничке из фронта явно говорит о том, что вы что-то делаете не так, поэтому эффективностью такого варианта можно пожертвовать.»
На самом деле массив в PHP — это упорядоченное отображение, которое устанавливает соответствие между значением и ключом. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хэш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стэк, очередь и, возможно, что-то еще. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.

Из их документации
Проблема здесь в том, что обыкновенных массивов в PHP нет как понятия.
То, что вы там видите как нумерованный массив — на самом деле хранится в памяти в виде
[0=>'z_val',1=>'f_val',2=>'s_val']
, а не
['z_val','f_val','s_val']

Поэтому любое обращение «по индексу» в общем случае будет обращением по ключу и требует поиска пары ключ-значение в списке.
Насколько я понимаю их текущую реализацию, только при переходе от предыдущего элемента списка к следующему не надо ничего искать(вспоминаем списки из С).
Отсюда почти все «загадочности» с работой массивов в PHP.

И да, PHP — не для обработки больших данных :)
А на английском подобное для Swift есть?

В виде собранной статьи не нашел, собирал по крупицам. Может где-то и есть все это сразу и в наглядном виде, но найти не удалось.
Могу это на английский перевести, если надо =)
Это скорее проблема плохого комментирования видео, поправлю.
Ну и для UI сугубо на мой взгляд даже коротенькое видео иногда намного нагляднее серии скриншотов и словесных описаний.
Могу и со звуком переписать. Но зачем? Все-таки все видео крайне короткие, по сути те же гифки.
Интересная статья, спасибо.
Один вопрос, почему у вас на ваш же сервер ругается? :)
image

Информация

В рейтинге
Не участвует
Откуда
Таллин, Эстония, Эстония
Дата рождения
Зарегистрирован
Активность