PHP遅い

2009年2月28日 (土)

このブログの前回記事PHP言語のとおり、私はいまPHP言語でWEBアプリケーションを開発中だ。テスト実行して、実行速度の遅さが気になっている。同じマシンでPython言語のWEBフレームワークで開発したWEBアプリと比べると、実行速度は圧倒的に遅い。遅い原因は次のように考えている。

1.フレームワーク
PHP用WEBアプリフレームワークを使用しているが、そのフレームワークが大きすぎて重いのかもしれない。

2.Windows/IIS
このシステムはWindows上のIISと連携して動いている。本番マシンでもそうなる。通常のPHPによるWEBアプリは、Linux機でApache/mod_php が一般的だが、それと大分異なる構成だ。IIS用のmod_php など聞いたことがないので、PHP部分はCGIとして、つまりアクセスのたびにPHPの起動から行われるので遅いのだろう。

3.static変数
上記「2」とも関連するが、static変数が有効なのは1回のアクセスのみだ。2回目のアクセスではstatic変数は初期化されているので再度設定処理を行わなければならない。このアプリはstatic変数の初期化にかなり重い処理の箇所があるので、それも原因のひとつだ。

4.中間言語
PHPは実行のたびにソースコードを読み込んでコンパイル・実行している。片やPythonではコンパイルされた結果の中間言語が別ファイルで保存されるため、2回目以降はコンパイルされない。このこともPHPが遅い原因だろう。

まあ、サーバ常駐型のPythonフレームワークと比較するのは酷かもしれないが極端に遅いことは事実だ。上記「4」以外にはPHP言語に責任があるわけではないが、もともと好きではないPHP言語にあまり良いイメージが持てないのも事実だ。

とりあえず納品先に、Linux機での実行が可能か否かを検討してもらう必要があるだろう。Linux機でApache/mod_phpならもう少しは速くなることが期待できるからだ。

PHP言語

2009年2月25日 (水)

いま仕事でPHP言語を使用したWEBアプリケーションを開発している。私にとってはWEBアプリはPythonで作ったほうが短い工数でできるのだが、発注元がPHP言語を指定しているためそれで作っている。PHPはあまり好きな言語ではなかったのでたいして勉強して来なかったが、仕事だと覚えざるを得ない。開発環境はEclipse上にPHP用プラグインを入れている。このPHPプラグインはあまり文法チェックをやってくれない。何度も
$this->$aa
のように書いてしまい、実行時エラーで初めてエラーに気が付いた。(本当は $this->aa)これくらいチェックしてくれても良さそうなものだが。

PHP言語はほとんどC/C++に近いので非常に覚えやすい。それと、すでにPythonでライトウエイト言語をマスターしていたので、その考え方にもなじめた。

開発は当然オブジェクト指向でやっている。すべてクラスを作成しているので、もし変数に$マークがなければ何の言語で開発しているかわからないだろう。

PHP言語といえば、ASCII.JPサイトで面倒な処理を1行に!WordPressのショートコードAPIの記事を見つけた。この記事は藤本 壱氏の記事だ。藤本氏の本は何冊か持っている。ブログツールのWordPressは私は愛用のツールで、これを使用して複数のブログサイトを作った。ただ当時はあまりPHPの知識がなかったのでプラグインまでは作らなかった。この記事を見ると、(いまのPHPの知識も相まって)簡単にプラグインが作れそうだ。そのうちプラグイン作成にチャレンジしてみたい。

TurboGearsバージョンアップしたら動かない-2

2009年2月22日 (日)

このブログの2月16日記事TurboGearsバージョンアップしたら動かないで、TurboGearsを最新バージョン1.0.8にバージョンアップしたときの問題点について書いた。

今日は別の問題だ。TuboGearsを利用するには、コマンド tg-aminを使う必要がある。そのヘルプは

> tg-admin help

だ。これは問題ない。

次に、tg-adminにはsqlコマンドがあり、たとえばDB作成時には

> tg-admin sql create

とすればよい。これもOK。このsqlコマンドにはcreateなどのサブコマンドがあり、それを知るには、次のヘルプを入力すればよい。いままでは次のような答えが返ってきた。

> tg-admin sql help
Available commands:
  (use "tg-admin-script.py help COMMAND" or "tg-admin-script.py COMMAN
  for more information)
create:  Create tables
drop:    Drop tables
execute: Execute SQL statements
help:    Show help
list:    Show all SQLObject classes found
record:  Record historical information about the database status
sql:     Show SQL CREATE statements
status:  Show status of classes vs. database
upgrade: Update the database to a new version (as created by record)

ところが、最新バージョンでは次のようになってしまう。

> tg-admin sql help
Usage: tg-admin-script.py help [options]
Show help

tg-admin-script.py help: error: no such option: --egg

新バージョンのバグと思う。

ASCII「デジタル用語辞典」の”Python”

2009年2月20日 (金)

ネットサーフィンをしていて、ASCIIの「デジタル用語辞典」中のPythonページに行き着いた。そこには、次のように書かれている。

ぱいそん 【Python】
Guido van Rossum氏が1990年に開発したスクリプト言語。プログラムをモジュール化して、他の言語で作成したものを含む他のプログラムに組み込んで利用することが容易であるという特徴を持つ。欧米では人気の高い言語だが、日本語を扱う仕組みを完備していないため、日本での人気は欧米ほどではない。 (C)デジタル用語辞典

ここに書いてあるよに、日本でのPython言語の人気は欧米ほどではない。どころか、全然人気の無い言語と思う。出版されている解説本の数を見る限り、人気はRuby、PHPよりずっと下のレベルだ。

上記解説では、Pythonが日本で人気の無い主な原因を「日本語を扱う仕組みを完備していないため」としているが、それは違う。UNICODEベースでプログラミングすれば、日本語の問題は全く発生しない。Python言語によるWebアプリケーションフレームワークのTurboGearsでWebアプリを開発したことがあるが、日本語の問題での苦労は全く無かった。だから、上記のこの記述は誤り、と私は思う。

最大の問題は、ドキュメントだと私は思っている。まず、日本語ドキュメントが少ない。これだけで日本では人気は無くなる。しかし英語のドキュメントは多い。Pythonの特徴として英語のドキュメントの豊富さを挙げる人もいるくらいだ。ただ私の意見では、ドキュメントのレベルが低い。Javaのドキュメントのレベルは高いが、その半分のレベルも行っていない。求めていることがドキュメントに書いていない、なってことは日常茶飯。そのときは先ずは情報をネットで探し(たいてい英語だが)、それで駄目ならソースを見ることになる。

また上記では、Pythonの主な特徴として「プログラムをモジュール化して、他の言語で作成したものを含む他のプログラムに組み込んで利用することが容易である」と書いてある。確かにこれは大きな特徴だが、もっと大きな特徴があると私は思う。それは、簡潔でハイレベルの記述力、だ。複雑なロジックを簡潔に記述できる能力は、言語の中でPythonはトップクラス、と私は思う。だから、Google社の社内開発言語としてPythonがオーソライズされたのだろう。PythonはJava以上に能力のある言語、と私は思っている。

地デジ受信機

2009年2月18日 (水)

ITMediaニュースサイト2月18日記事地デジ受信機普及率、5割届かず 総務省調査によると次のとおりだ。

総務省が2月17日に発表した調査結果によると、地上デジタル放送対応受信機を保有している世帯は49.1%と、5割に届かなかった。

調査は20歳以上を対象に1月9日~18日にかけて調査員の面接で行い、1317件の回答を得た。

地上デジ対応受信機を保有し、デジタル放送を見ることができる世帯は44.3%、保有しているが見られない世帯は4.7%、保有していない世帯は50.3%、分からない世帯は0.6%だった。

地上アナログテレビが終了する時期を記入してもらったところ、2011年と正しく回答した人は77.8%、間違った時期を答えた人は9.9%、分からない人は12.2%だった。(C)ITMediaニュース

私は地上デジタル放送対応受信機は持っていない。そして、2011年で地上アナログ放送が終了することを知っている。アナログ放送が終了しても、地デジ受信機を買うつもりはない。何故か。

「今現在、地上アナログ放送は全く見ていないが、受信能力はあるためNHKと契約せざるを得ない。アナログ放送が終了したら、晴れてNHKとの契約を解除できるのだ。」

スカパーのニュースサイトと、クラシック音楽放送のクラシカ・ジャパンがあれば私は充分だ。

2017年 8月
« 4月    
 12345
6789101112
13141516171819
20212223242526
2728293031  

プロフィール

バロック音楽と古楽器と自由を愛するソフトウェアエンジニアmomoが音楽やITを語り、世相を斬ります。

カテゴリー

検索

最近のコメント

 
 

QLOOK ANALYTICS