OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

モジュールを使うときの負荷

  • 暇なときにでも
  • 質問No.239940
  • 閲覧数36
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 31% (23/72)

変な質問かも知れませんが宜しくお願いします。
CGIを作り、改良や新機能を追加するごとにスクリプトが膨らみ
ファイルサイズが大きくなってしまいます。
その負荷を抑えるために、よく、
if分岐で必要に応じたパーツをrequireで読み込んで使っています。
これはとても効果があって本当に頻繁に使うのですが、
今回、モジュールを使いたいと思っています。
しかし、モジュールを使うときには、
useで宣言するのですよね?
これでモジュールをインクルード出来る。と本には説明されています
問題はこのとき、結構な容量のあるモジュールをuseで宣言すると、
例えば、50kbの本体プログラムで 100kbのモジュールを使うと
宣言すると、もれなく150kb分のプログラムを動かしている状態に
なってしまうのでしょうか?
データベースなどを取り扱いたいのですが、use宣言しただけで
大きなモジュール分の負荷がかかるのであれば、悩みます。
どなたかお教え下さい。
また、こういう場合でも動作を軽くする方法があれば、そちらもお教え下さい。

データベースを使って処理するのと、面倒でも1ファイルずつOPEN、closeで
split処理してデータを取るのとどちらが良いかかなり悩んでいます。
今回扱うデータがかなりの大きさになるもので・・・^^;;

変な質問ですが宜しくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 38% (114/297)

こんにちは。

サーバへの負荷を考える場合、ファイルサイズはそんなに重要なことでしょうか??
ieyasuさんがどのくらいのスペックのサーバをお使いかわかりませんが、少々のファイルサイズを気にされるのであれば、サーバのアップグレードの方が現実的だと思います。
それともM単位に及ぶほどのcgiなんでしょうか?
問題はファイルサイズよりプログラムの内容です。

モジュールはプログラムを効率よく使うためのツールだと認識しています。
モジュールを使うことによる負荷より、そのモジュールと同じことをプログラムに記述して実行する負荷の方が大きいと思います。
時間のかかる処理でしたら、モジュールを使う方が負荷も少ないと思います。

扱うデータがかなりの大きさになるってことですが、具体的にどのくらいでしょうか?
ヘタにデータベースを使うとテキストファイル等で処理するより効率が悪くなる場合もありますが、かなりの件数ってことでしたらデータベースを使われた方がその後の拡張もしやすいはずですし、検索スピードも速くなります。
100M超えるようなファイルになってくると、書き込むだけで結構負荷もかかるし安定性も悪くなると思うんですけど...。
ヘタにテキストで作ってしまって、後からデータベースに移行するのがめちゃめちゃ大変だったこともあります。

どのデータベースをお使いになるかによってまた変わってきますが、モジュールによってスピードが速いものもあったりします。
少々のモジュール使用での負荷より、恩恵の方が大きいと思いますよ。
お礼コメント
ieyasu

お礼率 31% (23/72)

丁寧なご教授ありがとうございます。
プログラムが、ゲームCGIで、頻繁に更新するタイプの物ですので
毎回50KB読み込むのと、150KB、200KBと多く読み込むのでは
かなりスピードに差がでているのが現状なのです。
プレイヤーのコマンド次第では、最小20~30KB程度のプログラム実行で
済ませるのが理想なのです。
細部にわたって、if(!$~)を unless($~)に変えるとか、
リファレンスを使ってメモリ節約するといいのかもしれませんが。。。
現在レンタルサーバーで、現行のものですら負荷限界の連絡を受けているもので、
モジュール使用でどう変わるのかに関心がありました。

結論としましては、スピードの優劣はどうであれ、インクルードするというのは
モジュール分のスクリプトを上乗せした、と考えれば良いのですね?
もしかして、useも、requireと同じく、プログラムの途中で
if(~・・・){use~・・・}
と条件分岐で使用する、ということも可能なのでしょうか? 
投稿日時 - 2002-03-23 14:12:13
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル11

ベストアンサー率 38% (114/297)

こんにちは。 >インクルードするというのはモジュール分のスクリプトを上乗せした、と考えれば良いのですね? それはちょっと違います。 特に宣言しただけで上乗せ、というのはかなり誤解だと思います。 語彙不足でなんと説明したらぴったりくるのか分からないのですが...。 お礼の内容からして、かなりスピードに悩んでらっしゃるようですね。 スクリプトをコンパクトにするというのも一つの手なのですが、 ...続きを読む
こんにちは。

>インクルードするというのはモジュール分のスクリプトを上乗せした、と考えれば良いのですね?
それはちょっと違います。
特に宣言しただけで上乗せ、というのはかなり誤解だと思います。
語彙不足でなんと説明したらぴったりくるのか分からないのですが...。

お礼の内容からして、かなりスピードに悩んでらっしゃるようですね。
スクリプトをコンパクトにするというのも一つの手なのですが、FirstCGIなんかで常駐させるともうちょっと速くできます。
あとはPHPを使うとか...。
あくまでperlでということであれば、FirstCGI+PostgreSQLまたはMySQLの方が、かなりなデータ容量でしたらより速くできるのではないでしょうか?
データベース接続のモジュールもDBI+DBDなどはある程度速いと思われます。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ