Ticket #2512 (assigned 改善提案) — at Version 6
郵便番号辞書登録の高速化
Reported by: | nanasess | Owned by: | nanasess |
---|---|---|---|
Priority: | 中 | Milestone: | EC-CUBE2.13.x |
Component: | 管理画面 | Version: | 2.13.0 |
Keywords: | Cc: | ||
修正済み: | no |
Description (last modified by nanasess) (diff)
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 様
ベンチマーク環境: Mac OS X 10.9 PHP 5.3.28 MySQL MySQL 5.6.16 Intel Core i5 2.6 GHz メモリ 16.0GB SSD
attachment:pdo_insert_zip.patch を適用
- パッチ適用前: 173.47324800491 秒
- パッチ適用後: 17.414235830307 秒
その他
- こちらのコードを参考にさせていただきました。 http://webrescue.net/archives/4107
Change History
comment:1 Changed 10 years ago by nanasess
- Owner changed from somebody to nanasess
- Status changed from new to assigned
- Description modified (diff)
Changed 10 years ago by nanasess
- attachment zip_insert.patch added
SC_Query::prepare(), SC_Query::execute() を適切に使用したパッチ。 pg_* 関数を使用した処理もコメントにて記載。