id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	modified_flg
2512	郵便番号辞書登録の高速化	nanasess	nanasess	"SC_Query::insert() を使用しているが、この関数は内部で SQL Statement を毎回生成するのでパフォーマンスが悪い。 レンタルサーバーなどでは、タイムアウトになってしまう場合も多い。

きちんと Prepared Statement を使用し、バッチ実行することで高速化を図る。

SC_Query::prepare() & SC_Query::execute() を適切に使用するようにしたパッチを添付します。 file() 関数でファイルオープンしている箇所を、もうすこしスマートにしたい。。

開発コミュ関連スレッド http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=14341&forum=12

=== ベンチマーク結果 ===

Mac OS X 10.9, 2.8 GHz Intel Core 2 Duo, メモリ8GB, HDD, PHP 5.3.28, PostgreSQL 9.2.7 の環境

 * 改修なし - 119.28 秒
 * パッチ適用後 - 58.30秒
 * pg_prepare & pg_execute 使用 - 20.54秒

SC_Query::prepare() & SC_Query::execute() を適切に使用すれば、 2倍程度に高速化可能。ネイティブ関数を使えば、5倍以上の高速化が可能。


----


ベンチマーク環境: Windows 8.1 PHP 5.5.9 MySQL 5.6.14 Athron Phenom II X3 2.80GHz メモリ 12.0GB SSD

EC-CUBE: https://svn.ec-cube.net/open/branches/version-2_13-dev/?r=23350

 * パッチ適用前: 477.43961691856秒
 * パッチ適用後: 241.02066898346秒

snitta 様

=== その他 ===

 * こちらのコードを参考にさせていただきました。 http://webrescue.net/archives/4107

 * TODO extension_loaded() を使って、 PDO も試してみたい"	改善提案	assigned	中	EC-CUBE2.13.2	管理画面	2.13.0				0
