аргумент в функции getInstance игнорируется, так как объект уже существует, при этом возвращается ссылка на объект A::$instance.
более наглядно будет так:
Mr.KreDo настроено все правильно, просто у вас установлена более новая относительно используемой в PsychoStats версия PHP, в которой set_magic_quotes_runtime() помечена как deprecated (в следующей версии языка будет удалена)
да, но в случае с одним запросом транзакция ведь тоже одна, и индексы перестраиваются тоже один раз? может она распараллеливается на несколько процессов самим сервером?
интересно какой механизм использует multi_query, ее результат оказался значительно быстрей одного запроса. может здесь что-то близкое к bulk insert? надо проверить на SELECT
использованный PREPARE был не зря. я был уверен что результаты с ним окажутся хуже, как о том говорят маны самого мускула, однако это решение работающее не только в рамках mysql
Champion пишет:
Еще каждый следующий тест оказывается в более проигрышных ситуациях потому что переменные после предыдущих тестов не очищаются
убрал массив, теперь память выделенная под переменные минимальна, доработал немного тест, согласно рекомендациям, хотя общая тенденция результата все равно не изменилась
код:
Mysqli INSERT test
STATEMENTS NUMBER: 100
Test 'single_statement' time:0.0075118541717529
Test 'prepare_statement' time:0.0076069831848145
Test 'long_statement' time:0.00041508674621582
Test 'multiquery_statement' time:0.00018882751464844
Mysqli INSERT test
STATEMENTS NUMBER: 1000
Test 'single_statement' time:0.069777011871338
Test 'prepare_statement' time:0.077234983444214
Test 'long_statement' time:0.0030629634857178
Test 'multiquery_statement' time:0.0030210018157959
Mysqli INSERT test
STATEMENTS NUMBER: 100000
Test 'single_statement' time:6.9121239185333
Test 'prepare_statement' time:13.802839994431
Test 'long_statement' time:0.37067294120789
Test 'multiquery_statement' time:0.062988042831421
Ну и чтобы окончательно убедиться, что позиция теста никак не влияет на результативность, поменял первый и второй местами
Mysqli INSERT test
STATEMENTS NUMBER: 100000
Test 'prepare_statement' time:13.739002943039
Test 'single_statement' time:7.7719440460205
Test 'long_statement' time:0.374675989151
Test 'multiquery_statement' time:0.084534883499146
напрашиваются странные выводы не в пользу prepare. остается некое ощущение, что в тесте допущена ошибка, либо сама конструкция здесь не к месту.
Mysqli INSERT test
STATEMENTS NUMBER: 100
Test 'single_statement' time:0.014084
Test 'prepare_statement' time:0.029131
Test 'long_statement' time:0.0015109999999999
Test 'multiquery_statement' time:0.00034699999999999
Mysqli INSERT test
STATEMENTS NUMBER: 1000
Test 'single_statement' time:0.076283
Test 'prepare_statement' time:0.259191
Test 'long_statement' time:0.008228
Test 'multiquery_statement' time:0.001462
Mysqli INSERT test
STATEMENTS NUMBER: 100000
Test 'single_statement' time:9
Test 'prepare_statement' time:21
Test 'long_statement' time:0
Test 'multiquery_statement' time:0
Самым неожиданным для меня стал пожалуй результат prepare (может я неправильно его сделал?). провел ряд тестов, результат пожалуй везде повторяемый (последний тест с использованием time()). Ну а победитель здесь по-моему явный, Мелкий оказался прав.
DeepVarvar помнится можно просто в своем ДНС прописать нужный айпишник. у меня так домен на org.ua год там провисел (забыл я про него) (Добавление)
и специально любителям Яндекса http://narod[dot]yandex[dot]ru
ну я не об одном запросе говорю. просто насколько я понимаю при prepare выигрыш по большей части идет за счет того, что компилятор проходится по запросу всего один раз, а при execute просто подставляет в "скомпилированный" запрос значения. по факту ведь количество запросов не уменьшается, уменьшается лишь время затраченное на компиляцию запросов.
Возможно я не прав, поправьте если так. (Добавление)
Мелкий пишет:
Но стоит проверить, не окажется ли он медленнее нескольких простых в рамках mysqli::multi_query
да, наверное стоит провести маленький тест, если результаты будут интересными отпишусь.
П.С. единственная проблема, что такой вариант применим только в рамках mysqli