2010年09月11日
「プログラム学習その12」
みなさん、おはようございます。
休日出勤のみなさん、
お勤めご苦労さまです。
少し暑さが弱まってくると、
急に秋の気配を感じますね~
今日は、プログラム言語によって異なる、
処理速度の問題を少し取り扱って見たいと思います。
低級言語で書かれたプログラムは動作が速く、
高級言語で書かれたプログラムは動作が遅くなります。
例えば、C言語はコンパイルされて機械語になるまでに、
以下の流れで変換されます。※機械語=EXE実行形式
C言語(高級言語)
↓
アセンプラ言語(低級言語)
↓
マシン語(機械語)
ここで、アセンプラ言語を見れば一目瞭然ですが、
push,pop,ヒープ領域へのsave,load 命令ばかりで、
レジスタのみで処理が完結していません。
アセンブラの経験がある人からみれば、
目も当てられないほど、ひどい状態です(^^;;
これを回避するためには、
何万回もループする処理などは、
アセンブラで書くことも有効です。
これだけでも飛躍的に処理が改善しますので、
是非、インラインアセンブラ程度でもよいので、
一度は、経験しておきましょう。
まあ~、いまどきのCPUは、
高速クロック、キャッシュも多く積んでいますし、
しかも、スーパーパイプライン、スーパースケーラーなる技術など、
ハードウェアーとアーキテクチャが激的に向上しています。
処理速度に気を遣わなくても、
どうにかなっていることも現実ですね~
でも、ゲーム、エレ玩具、携帯など、
コンシューマー向けのハードは、
価格を抑えるために性能は低くなっていますから、
プログラムを作る上で、
処理速度の工場を常に心がけ、
ハードについての知識は必須になりますよ~
また、コンパイル済みの言語は動作が速く、
スクリプト言語などは動作が遅くなります。
これは実行するときに、
初めてコンパイルされるからです。
従って、C++やJAVAと違って、
PHPなどのスクリプト言語では、
処理速度の面で気をつけなければなりません。
便利なフレームワークだからと言って、
高機能なものは処理が重たくなってしまいます。
例えば、アクセス数が集中するような、
ソーシャルアプリなどは向いてませんね~
インクルードするファイル数が多く、
クラスの階層が深い場合など、
コンパイル処理、実行するときの初期化だけでも、
かなりの処理時間を必要とします。
New するのも慎重になりますね~(^^;;
そこから深くぶら下がっている、
幾つものクラスが初期化されますよ~
今日も「いいスマイル」で行きましょう!
ツイッターはじめました~フォロー待ってま~す!!
↓↓↓下記の3つのバナーをクリックして下さい。ランキングUPにご協力をお願いします。↓↓↓
投稿者 shiozumi : 11:03