HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0902
もっぷHSPの速度8未解決


もっぷ

リンク

2006/9/2(Sat) 12:08:21|NO.2236

過去ログに、コンパイルの言語に比べて
HSPは五十倍から百倍遅いって書いてありましたが、
これは単純な数の足し算とかでもそれぐらい差がでるんですか?
どんな命令でどれくらい差が出るか、コンパイルできる方、計ってください。



この記事に返信する


エディ

リンク

2006/9/2(Sat) 18:49:24|NO.2238

>どんな命令でどれくらい差が出るか、コンパイルできる方、計ってください。
嫌です(笑
自分でやってみたらどうでしょう?



Drip

リンク

2006/9/2(Sat) 22:41:23|NO.2239

Dripです。

 もっぷさん、こんにちは。
これは知らない人にとっては仕方のないことなのですが、
C言語によるプログラムの実行速度とHSPのプログラムの実行速度の差を
正確に比べることは難しいことなのです。
 というのも、HSPのコンパイラはひとつしかありませんが、C言語のコンパイラは
いくつも存在し、より効率の良い機械語を書き出すことができれば、それだけ速度が
向上していきます。
 どのような形でコンパイルするかは人それぞれなので、
単純に「C言語との速度の差を測ってください。」と言われても
簡単に回答することはできないのです。



もっぷ

リンク

2006/9/4(Mon) 08:37:11|NO.2256

なるほど、コンパイルの仕方によって変わるんですね。
では、確かHSPではマシン語を埋め込むことができたようなので
その場合、普通の命令とマシン語にした場合と、
どれだけ差がでるか、どなたか計っていただけませんか?



Irisawa

リンク

2006/9/4(Mon) 10:37:34|NO.2258

> では、確かHSPではマシン語を埋め込むことができたようなので
> その場合、普通の命令とマシン語にした場合と、
> どれだけ差がでるか、どなたか計っていただけませんか?

HSPは中間言語です。
基本的に

(速い)<-------------------------------------->(遅い) マシン語-アセンブラ-コンパイラ-中間言語-インタプリタ

の順です。
(得意不得意などもあるので一概には言えませんがマシン語は確実にどれよりも高速で、
アセンブラが次に高速です)
HSP(の基本システム=ランタイム・コンパイラなど)はVC++で書かれているのでWinとの
相性が非常によく速度も基本的にほかのコンパイラよりもいいとされています。
それでも、VC++で書かれているのでHSPの標準構文がVC++の速度より速く動作することは
あり得ません。
なぜ、そうなるのかと言えばコンピュータはすべてマシン語しか理解できません。
(実際にはマシン語というのはコンピュータの電気信号の流れ=プログラムを人間が分かり
やすく数値化しただけなので正確にはマシン語自体もコンピュータが直接理解できる訳
ではありません)
しかし、人間にはマシン語は分かりにくいのでそれを理解しやすくするための方法として
記号化したのがアセンブラ(正確にはアセンブリ)でマシン語と各記号が一対一で対応して
います。
これをマシン語に変換する処理を行うプログラムをアセンブラと言います。
(そのため、マシン語に変換する処理分だけマシン語より低速になります)
コンパイラはそれより更に人間が分かりやすくするために単にマシン語と一対一に記号化
するのではなく特定のよく行う処理をまとめたものを一つに記号化しています。
そのため、よりマシン語に変換する処理に時間がかかるのでアセンブラよりも低速に
なります。
中間言語はプログラムには不要なデータ(スペースやタブのようなインデントの他、
コメントなど)を削除して変数名やラベル名などを特定の基準に沿った記号化してしまい
そのデータを逐一マシン語に変換しながら動作させる処理なのでコンパイラより多少遅く
なります。
インタプリタは一行ごとにマシン語に変換して処理するので非常に遅くなります。

基本的にコンパイラよりもインタプリタの方がデバッグはしやすいが遅いのでその中間点
(両方の特徴を持った)である中間言語が使われます。
コンパイラ(のシステム自体)はマシン語を完全に理解していないと作れるものではないので
HSPでは中間言語が採用されています。
HSPでマシン語を扱う場合は変数(メモリ上)にマシン語データを書き込みそれを単純に
呼び出しているだけです。
マシン語を直接扱うよりはもしかしたら仕様上、多少低速になる可能性はありますが
基本的にマシン語なので明らかにHSPの構文よりも高速です。



Irisawa

リンク

2006/9/4(Mon) 10:52:30|NO.2259




もっぷ

リンク

2006/9/4(Mon) 16:46:04|NO.2263

うーん…少しわかりました ・。・;
VC++で書かれているのなら、VC++のソースに変換したあと
VC++でコンパイルすれば早くなると思います。
それか、exe形式にするとき、コンパイルできるようにして欲しいです。
マシン語に変換したほうが早いなら、時間かかるかもしれないけど
実行ファイルに変換するのは完成時ぐらいなので
やっぱりコンパイルしたほうがいいです。



くに

リンク

2006/9/11(Mon) 01:45:27|NO.2360

参考になるか、分らないですが、crcを計算する場合の比較が

http://tsu.sakura.ne.jp/article/diary/eid152.html

にあるので、見てみるといいかもしれません。
でも、やり方によって、ここまで早さが違うとは驚きました。



a

リンク

2006/9/14(Thu) 20:38:05|NO.2423

2000倍も遅けりゃHSPでゲーム作る気力もなくすわ



ONION software Copyright 1997-2021(c) All rights reserved.