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


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
0714
zakkiHSP高速化拡張1解決


zakki

リンク

2025/7/14(Mon) 22:11:34|NO.103661

別のスレッドでBASICコンパイラの話が出ていましたが、PythonのCythonの仕組みを見てて似たようなことがHSPでもできないか考えてます。
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
の代わりに

#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
みたいに書くとその部分だけC++ DLLになるって構想です。

手で変換して実験してみたところ、aobenchのレイトレーシング処理っていう極端にCPU負荷高く独立性高い関数多いサンプルで2〜7倍程度の高速化です。

そもそもの課題としては実装出来るのかというのはありますが、それはそれとして需要あるのかっていうのも気になりました。

この仕組みでメリットを得られるのが引数だけを使って計算する純粋関数を定義してCPU負荷の高い計算をするみたいなプログラムに限られるので
hsp3のzipに入ってるような公式サンプルだとほとんど使えなさそうです。



この記事に返信する


窓月らら

リンク

2025/7/14(Mon) 22:39:01|NO.103662

面白い試みだと思います。
例えば画像フィルタみたいなものをHSP3で書いてもどうしても遅くて
実用的な速度がでないことがあるんですが、
そういう用途でも使えそうな気はします。

HSPでDLLが作れるようになったらちょっとした革命なんですがね。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.103661への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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