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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0621
カイン=ハルバード処理速度のことで・・・5解決


カイン=ハルバード

リンク

2009/6/21(Sun) 15:00:02|NO.25911

はじめまして、カインです、主にアクションゲーム系のプログラミングに挑戦しています

動作のことですが、HSPで作ったプログラムの処理速度がどうしても遅くなってしまいます
なるべく簡単な処理で1フレームごとに変数が1増えるプログラム(1〜100、101で1にリセット)、
x=1
	
repeat redraw 0 color 255,255,255 boxf pos 0,0 color 0,0,0 mes ""+x+"" redraw 1 x++ : if x>=101 : x=1 wait 1 loop
を実行してみたんです、本来なら1秒ごとに100になるはずですが、
自分のパソコンでは3秒弱かかってしまいます、
調子が良いときでも1.7秒かかります
パソコンの性能は
CPU Core2Duo 2.00Ghz
メモリ 2GB
HDD C 140GB 空き112GB D 0B
です、自分の力で色々試してみたんですが、どうしてもわかりません・・・
誰か分かる人居ましたら教えてください、

ちなみになぜか
CPU pentium 4
メモリ 516MB
HDD C 10GB 空き2G位 D 30GB
のパソコンでは普通に1秒で100になります、
何ででしょうか・・・?



この記事に返信する


check

リンク

2009/6/21(Sun) 15:33:37|NO.25912

wait命令は性格に1秒まつ命令ではなく、やく1秒待つ命令だ。
次のプログラムを実行してもらえばわかるだろう。


#uselib "kernel32" #func QueryPerformanceFrequency "QueryPerformanceFrequency" var #func QueryPerformanceCounter "QueryPerformanceCounter" var //カウントスタート QueryPerformanceFrequency freq QueryPerformanceCounter befcnt wait 1 //カウントの結果を取得" dim large,4 //LARGE_INTEGER構造体 QueryPerformanceCounter large(2) ref = 1000.*(large(2)-befcnt)/freq mes "wait 1 の結果 " + ref



ORZ

リンク

2009/6/21(Sun) 17:35:37|NO.25933

ゲーム系にはawaitを使うんでないの?

http://hsp.tv/play/pforum.php?mode=pastwch&num=20178
かといってawaitの精度もよくないらしいけど
awaitは確かwait間で時間を合わせてくれるようなそういう感じだったはず。

あと、HSPはデュアルコアだろうがくあっどだろうがスピードが速くなる事はないはず。



Ve

リンク

2009/6/21(Sun) 18:15:09|NO.25934

描画はDirectXをつかった描画をしたほうがいいかな。



Kpan

リンク

2009/6/21(Sun) 18:17:19|NO.25936

HSPの標準描画はGDIなので限界があるわけで。
拡張プラグイン(DirectX利用する)は使うとか?



えく

リンク

2009/6/22(Mon) 03:34:03|NO.25968

awaitも動作環境によりますが精度はいまいちだったり普通だったりしますね
酷いときだと13ms程度遅延したりしますね(というか時間所得間隔が大きかったりする
あんまりアテにはならないです

精度をあげるためにはこれまたあまりアテにならないけどまだマシなSleep関数をtimeBeginPeriodと混ぜて使うぐらいですかね

DirectXを描画に用いるならそちらで垂直同期とってくれるので、簡単にかつ正確に時間を測って動作させたいならDirectxがよろしいかと



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