カタツムリ2010年09月11日

「プログラム学習その12」

みなさん、おはようございます。

休日出勤のみなさん、
お勤めご苦労さまです。

少し暑さが弱まってくると、
急に秋の気配を感じますね~

今日は、プログラム言語によって異なる、
処理速度の問題を少し取り扱って見たいと思います。

低級言語で書かれたプログラムは動作が速く、
高級言語で書かれたプログラムは動作が遅くなります。

例えば、C言語はコンパイルされて機械語になるまでに、
以下の流れで変換されます。※機械語=EXE実行形式

C言語(高級言語)

アセンプラ言語(低級言語)

マシン語(機械語)

ここで、アセンプラ言語を見れば一目瞭然ですが、
push,pop,ヒープ領域へのsave,load 命令ばかりで、
レジスタのみで処理が完結していません。

アセンブラの経験がある人からみれば、
目も当てられないほど、ひどい状態です(^^;;

これを回避するためには、
何万回もループする処理などは、
アセンブラで書くことも有効です。

これだけでも飛躍的に処理が改善しますので、
是非、インラインアセンブラ程度でもよいので、
一度は、経験しておきましょう。

まあ~、いまどきのCPUは、
高速クロック、キャッシュも多く積んでいますし、

しかも、スーパーパイプライン、スーパースケーラーなる技術など、
ハードウェアーとアーキテクチャが激的に向上しています。

処理速度に気を遣わなくても、
どうにかなっていることも現実ですね~

でも、ゲーム、エレ玩具、携帯など、
コンシューマー向けのハードは、
価格を抑えるために性能は低くなっていますから、

プログラムを作る上で、
処理速度の工場を常に心がけ、
ハードについての知識は必須になりますよ~

※CPU高速処理化のためのテクノロジ

また、コンパイル済みの言語は動作が速く、
スクリプト言語などは動作が遅くなります。

これは実行するときに、
初めてコンパイルされるからです。

従って、C++やJAVAと違って、
PHPなどのスクリプト言語では、
処理速度の面で気をつけなければなりません。

※フレームワークの比較

便利なフレームワークだからと言って、
高機能なものは処理が重たくなってしまいます。

例えば、アクセス数が集中するような、
ソーシャルアプリなどは向いてませんね~

インクルードするファイル数が多く、
クラスの階層が深い場合など、

コンパイル処理、実行するときの初期化だけでも、
かなりの処理時間を必要とします。

New するのも慎重になりますね~(^^;;

そこから深くぶら下がっている、
幾つものクラスが初期化されますよ~

今日も「いいスマイル」で行きましょう!


ツイッターはじめました~フォロー待ってま~す!!
↓↓↓下記の3つのバナーをクリックして下さい。ランキングUPにご協力をお願いします。↓↓↓

にほんブログ村 経営ブログへランキングUP!

ランキングUP!

banner2.gif 人気blogランキング!

投稿者 shiozumi : 11:03