こんにちわ
書き方にもよると思いますが、基本的に速度は速くなるのではないですかね。
少し前に流行ったPythonなどはHSPよりとても遅いですが、
numpyというライブラリを使う事によって早くなり数学計算によく使われたらしいです。
このnumpyはCだかFortranで書かれてたと記憶してます(違ったらすみません)
大量の計算部分を高速な言語(書くのは面倒だけど)書いておいて、
結果の表示や編集を簡単な言語(HSP)などで組むことはよくあると思います。
CPU使う利点もあると思うので(ハードウェアが使えない環境とか、熱の問題とかいろいろ。。。)
dll化する簡単なサンプル書きましたのでどうぞ。
試しに1万の変数の掛算を千回試行したら、私の環境だと100倍くらい早くなりました。
1)オープンソースC,C++コンパイラのMigWinを"C:\mingw32"にインストと仮定
2)Cソース"accelerate.c" (配列の四則演算:エラーチェックなどはしてない)
int accaddi(int *res, int *x, int *y, int len){
for (int i = 0; i < len; i++) { res[i] = x[i] + y[i]; } return 0;
}
int accsubi(int *res, int *x, int *y, int len){
for (int i = 0; i < len; i++) { res[i] = x[i] - y[i]; } return 0;
}
int accmuli(int *res, int *x, int *y, int len){
for (int i = 0; i < len; i++) { res[i] = x[i] * y[i]; } return 0;
}
int accdivi(int *res, int *x, int *y, int len){
for (int i = 0; i < len; i++) { res[i] = x[i] / y[i]; } return 0;
}
3)コンパイル用バッチ "accelerate.bat"
C:\mingw32\bin\gcc -c accelerate.c
C:\mingw32\bin\gcc -shared -o accelerate.dll accelerate.o
4)HSPで実行
; 自作ライブラリ
#uselib "accelerate.dll"
#func accaddi "accaddi" var, var, var, int
#func accsubi "accsubi" var, var, var, int
#func accmuli "accmuli" var, var, var, int
#func accdivi "accdivi" var, var, var, int
; 自作HSP関数 (取りあえず一個だけ)
#module
#deffunc myaddi array res, array x, array y, int num
repeat num : res.cnt = x.cnt + y.cnt : loop : return 0
#global
; 簡易計測
#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
; 適当に初期化
trials = 1000
num = 10000
dim a, num : dim x, num : dim y, num
repeat num
x.cnt = rnd(32768) : y.cnt = rnd(32768)
loop
; 速度比較
time = timeGetTime()
repeat trials
accaddi a, x, y, length(a)
loop
time = timeGetTime() - time
mes "Cライブラリ時間:"+time+"ms"
time = timeGetTime()
repeat trials
myaddi a, x, y, length(a)
loop
time = timeGetTime() - time
mes "HSPモジュール時間:"+time+"ms"