с каким ключом собирать php чтобы конкатенция строк работала быстро?

программирование php

понадобилось конструировать по кусочкам строку размером около 16мб. Обнаружил, что под виндами (бинарники скачаны) это работает очень быстро, а под лиунксом собраный из исходников php работает очень медленно. Разница в производительности раз в 1000 примерно, тормозит именно конкатенция строк.
собирал так:

'./configure' '--prefix=/usr/local' '--enable-fpm' '--disable-ipv6' '--without-pear' '--enable-mbstring' '--with-curl' '--with-mcrypt' '--with-mysql=/usr/bin/mysql_config' '--with-mysqli=/usr/bin/mysql_config' '--with-mysql-sock=/var/run/mysqld/mysqld.sock' '--enable-shared=max' '--enable-soap' '--enable-sockets' '--enable-zip' '--with-zlib' '--with-gd' '--with-config-file-path=/usr/local/etc'



Примечание:
да, тормозит консольная версия, если это важно.

Примечание:
php 5.3.6
memory_limit через phpinfo() показывает 128мб (я так поставил в php.ini)

Примечание:
обновился до скачаного сегодня php 5.3.9 - не помогло
попробовал запустить с виндозным php.ini - тоже не помогло

Примечание:
не согласен

Да. В разных ОС возможна разница производительности в пределах 20%. Но если код одинаковый, то malloc-и дергаются и под линуксом и под виндой, и производительность должна быть примерно одинакова. (и ровный код будет работал бы быстрей под обеими ОС)
Ответы:
Какой memory_limit и версия php?
при каждой конкатенации дёргается erealloc или emalloc (пруф:php-5.3.9/Zend/zend_operators.c:1258) а потом memcpy.
т.к. памятью управляет ОС, а не пехапе, то и результат разный.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.