Я пишу PHP-функцию, которая должна будет перебирать массив указателей и для каждого элемента, извлекать эти данные (будь то из базы данных MySQL или плоского файла). У кого-нибудь есть идеи оптимизировать это, поскольку потенциально могут быть тысячи и тысячи итераций?PHP Loop Performance Optimization
Моя первая идея состояла в том, чтобы иметь статический массив кэшированных данных, над которыми я работаю, и любые изменения просто изменят этот кешированный массив, а затем в конце я могу сбросить его на диск. Однако в цикле из более 1000 элементов это было бы бесполезно, если бы я содержал только около 30 в массиве. Каждый элемент не слишком большой, но 1000+ из них в памяти слишком много, следовательно, потребность в дисковой памяти.
Данные - это просто сериализованные объекты. В настоящее время я использую базу данных для хранения данных, но думаю, что плоские файлы будут быстрее (меня не волнуют проблемы параллелизма, и мне не нужно их анализировать, просто разархивируйте и несериализуйте). У меня уже есть пользовательский итератор, который будет вытягивать по 5 элементов за раз (чтобы сократить соединения БД) и сохранить их в этом кеше. Но опять же, использование кеша в 30, когда мне нужно перебирать тысячи, довольно бесполезно.
В принципе, мне просто нужно быстро перебрать эти предметы.
Я попытаюсь объяснить себя яснее ... Я пишу сеть нейронов, поэтому мне нужно перебирать некоторые объекты нейрона, чтобы повлиять на некоторые из их данных, а затем сохранить их, перейти к следующей и т.д. 1000+ нейронов позже. Затем мне нужно снова повторить обратное (обратное распространение). Я думаю, что лучшим решением является поиск носителя между памятью и доступом к IO. Если я загружаю по 100 объектов за раз, это означает меньше IO, но больше памяти. – Louis