HSPの文法を拡張してユーザー定義関数をC++に変換してDLLを作るとお手軽に高速化できるんじゃないかっていうアイディアを考えてるんですがどうでしょうか。
https://github.com/zakki/OpenHSP-fork/blob/chsp/sample/chsp/README.md
の代わりに
#deffunc vcross array c, array v0, array v1 c(0) = v0(1) * v1(2) - v0(2) * v1(1) c(1) = v0(2) * v1(0) - v0(0) * v1(2) c(2) = v0(0) * v1(1) - v0(1) * v1(0) return
みたいに書くとその部分だけC++ DLLになるって構想です。
#chsp_deffunc vcross array[double] c, array[double] v0, array[double] v1 c(0) = v0(1) * v1(2) - v0(2) * v1(1) c(1) = v0(2) * v1(0) - v0(0) * v1(2) c(2) = v0(0) * v1(1) - v0(1) * v1(0) return #chsp_end
手で変換して実験してみたところ、aobenchのレイトレーシング処理っていう極端にCPU負荷高く独立性高い関数多いサンプルで2〜7倍程度の高速化です。
そもそもの課題としては実装出来るのかというのはありますが、それはそれとして需要あるのかっていうのも気になりました。
この仕組みでメリットを得られるのが引数だけを使って計算する純粋関数を定義してCPU負荷の高い計算をするみたいなプログラムに限られるので
hsp3のzipに入ってるような公式サンプルだとほとんど使えなさそうです。