質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

5回答

2905閲覧

コード量と実効速度の関係

ssmxgo

総合スコア178

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

2クリップ

投稿2017/04/11 09:51

編集2017/04/11 09:51

漠然と質問です。
一枚?のphpのコード量が巨大化すると、実行速度は遅くなりますか?
また、その程度はどのような感じでしょうか?

実は前任者から引き継い(でしまっ)だWEB CMSが非常に速度が遅く、原因としてはPHPもDBのバージョンも古く、フロント側も巨大なテーブルの表示と、それらのsubmitなどなど、遅い要因(改善要素)が山ほどあるのですが…、それはさておき。

CakePHP1.3を利用していますが、メインのコントローラーの記述量が非常に膨大です。というか、膨大になっていると推測しますが

『そんな量、普通だよ』

とか突っ込まれそう…、あくまでビギナーの推測です。

具体的には、1ファイル1.5M、30000行強です。

ご教授くださいませ。

はい、ご指摘の通り、CakePHP1.3とかPHP5.2とかMySQL5とか、整理すべきことがいっぱいなのです…w

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

流石に1ファイル30,000行は見たことのない量ですね…(もしかして、3,000行ですか?それでも多いですが…)
私の経験則上、ファイルの大きさが即ち、実行速度にダイレクトに影響するとは思いません。
あくまでも1回のアクションでどれ位の量の処理(コードのステップ数)を通るかが関係してくると思います。

ただ、単純なコード量よりもレスポンスに影響を及ぼすのは、配列の処理の仕方やDBアクセスの際のSQLの書き方等ではないかと思います。

投稿2017/04/11 10:04

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2017/04/11 10:50

30000ですね(笑) フロントエンジニアリングではファイルの読み込みとかが大きなネックになると思ったので深大きいかな?と推察しました
guest

0

ベストアンサー

大きければ遅くなるとは限りません。
計測してみたらどうでしょうか?

CakePHPで速度チェックしてみた

投稿2017/04/11 10:03

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2017/04/11 10:49

ありがとうございます 参考にさせていただきます
Zuishin

2017/04/12 00:40

補足をします。 確かにファイルが大きい方が読み込みにも解析にも時間がかかります。しかし、それにかかる時間は O(n) です。 「非常に速度が遅く」というならば、他にも原因があることは十分推測できます。改善のためには、どこがボトルネックなのかを突き止めて、そこを修正するのが一番効率のいいやり方です。 それだけ巨大な一枚ファイルを作るようなやり方をする人なら、他にもっと効率の悪い書き方をしているはずです。まずはそこを探しましょう。 でないと、頑張って複数ファイルに分けたはいいが、結局全部同じ回数だけ読み込まなくてはならないので、さほど差はなかったという事態にもなりえます。 どこにどれだけ時間がかかっているか、どこを改善すればどれだけの短縮が見込めるか、まずはそれをつかみましょう。 ループの中で何度もデータベースにアクセスしていませんか? O(n * n) の処理を O(log n) に直せませんか? そのデータ、キャッシュできませんか?
maisumakun

2017/04/12 00:55

PHP自体で重い計算をさせる、という事例を除けば、大半はデータアクセスで時間が消費されます。 自分の経験ですが、アクセスのもっさりするCakePHPプログラムを見直していたら、「設定のYAMLファイルの読み込み」に大半の時間を費やしていたということが判明するなど、思わぬところにボトルネックがあることもあります。 別に回答した「巨大なPHPの読み込み・パース」ですが、こちらはかかったところで1秒/1アクセス程度でしょう。「極端に重い」のであれば、それだけでは劇的な改善をするものではないと思います。
ssmxgo

2017/04/14 10:50 編集

Zuishin様 ボトルネックを調べるというのは正にという答えだと思いました。 参考までにゼロベースで O(n) お聞きするのが申し訳ないので教えていただきたいのですが、 O(n) O(n * n) O(log n) を理解するのにネットではなんという単語で検索したらよろしいでしょうか、ご教授いただけると幸いです。
ssmxgo

2017/04/14 10:57 編集

maisumakun様 ありがとうございます。テーブル形式に出力されたフォーム(一ヶ月分の勤務時間など)を、さらにPOSTする…ようなことをやっていて目に見えて負荷が高いとは思うものの、画面が多すぎて全てをajaxに切り替えたり、機構を変えると成ると膨大な工数がかかると思うので、各コードを修正せず、手始めに全体の設定を見直すことで総合的に改善できるポイントがないか探していました。 「設定のYAMLファイルの読み込み」謎ですね、これもゼロベースでの理解が必要です(~_~;) 勉強になります。
Zuishin

2017/04/14 11:30

「計算量」で調べてみてください。
ssmxgo

2017/04/14 11:58

ありがとうございます!
guest

0

ふつうにPHPを使っている場合、呼び出しごとにファイルを読み込んで、PHPの内部構造へ変換しています。

とはいえ、開発サーバでもない限り毎回毎回コードは変わることがないので、これはかなりの無駄になります。

Zend OPcache(PHP 5.2ならAPC)というツールがあって、一度ロードしたPHPファイルを内部構造に変換した状態でキャッシュできるので、それを使えばコードのファイルサイズや容量はあまり影響しなくなります。

投稿2017/04/11 10:57

編集2017/04/11 10:57
maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2017/04/11 12:38

おおおおお!! これは具体的でかつ実践的ですね! ありがとうございます
guest

0

解決するための回答ではないですが。

かなりリファクタリング甲斐がありそうですね。
今のプロジェクトをコピーしておいて、リファクタリングやバージョンアップ、速度向上等の訓練・研修に使うと面白そうですね。

投稿2017/04/11 10:33

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2017/04/11 10:51

ほんと、すごく勉強になりそうですが運用してるものでまっつぁおです。ありがとうございます
guest

0

詳しいことはわかりませんが、スクリプト言語なのでソースコードの解析にかかる時間は長くなりそうですよね。
3万行をメモリに取り込むだけでも時間かかりそうです。
解析が終わったあとの実効速度はかわらないと思います。

投稿2017/04/12 00:24

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssmxgo

2017/04/14 10:46

やはり…私もそのようには思ったのですが。そして複数人でアクセスした場合にキャッシュから実行されるかもしれませんがメモリを圧迫するのではないかな?等、思いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問