う〜ん、雲行きが非常に怪しい、若干横槍気味に失礼。
> ぺろさん
全体的に話が分割ダウンロードの方に寄っていますが、zakkiさんのレス(NO.74998)は拾っていますか?
netload命令は実はhspinetの他の命令(netrequestとnetexec)をラップしただけのもので、中の処理を覗くことができます。
(hspinet本体は 「hspをインストールしたフォルダ」>common>hspinet.as に置いてあります。)
覗くと定義は次のようになっていることが分かると思いますが、
#deffunc netload str _p1
netrequest@ _p1
repeat
netexec@ res
if res : break
await 50
loop
if res > 0 : return
neterror@ estr
dialog "エラー:"+estr
return
#global
単純にリクエストを投げてnetexecしながら待っているだけですね。
大したことないんですがこの中身について簡単に説明すると、
1. netrequestでダウンロード対象となるファイルを指定する
2. netexecでダウンロード対象ファイル少しずつバッファに読み取って(ダウンロードして)、ファイルに書き出す
ということをしています。
この2の処理がとても大事でして、読み取ったファイルの中身を一時的に入れておくバッファのサイズは
現状はプラグイン側で決めうちで4096byte(4KiB)となっています。
(OpenHSPだとここ
http://dev.onionsoft.net/trac/openhsp/browser/trunk/plugins/win32/hspinet/czhttp.h#L8)
つまり一回のnetexecでファイルに書き込まれる内容はどんなに多くても4KiBなのですが、このループにはawait 50が挟まっていますね?
await 50は50ms単位で処理を回す命令なので、50msで4KiBだとすると、秒速およそ80KiB(bps表記だと655kbps)になります。
ということで、HSPの実装が根本からダメというより丁度使っていたnetloadがダメっぽいという話でした。
試しに、上記hspinet.asのawait 50となっているところをawait 0に書き換えて試してみてください。
あるいはnetloadではなく自分でnetrequestしてnetexecでスピンウェイト気味に待っていてもいいかと思います。(適度なawaitは恐らく必要でしょうが)
いずれにせよ、上述のような対処を行えばIEやFireFox、Chromeにそこまで大きな遜色がない程度の速度がでるかと思います。
とりあえず私の手元ではそうなりました、分散ダウンロードはかなり実装重い筈なのでその前に是非一度お試しを。
//============================================================================================
【余談ですが…。】
サーバー側とクライアント側とで回線が”よっぽど空いている場合は”確かに言うことはないのですが、
自分でサーバー持っている身としては分割ダウンロードは真面目にやってほしくない部類に入る行為なので、
どのようなソフトなのか分かりませんが出来れば通常のフローで処理して頂ければな、と思います。
(もし作っているものがご自分のサーバーとの通信で、全て許容できる範囲であるというなら上記の言は無視して下さって構いません)