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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0925
Tsubamewaitの時間の違いについて3解決


Tsubame

リンク

2017/9/25(Mon) 12:00:31|NO.81459

キー入力を検知し、押しっぱなしにすると段階的に速度が早くなるプログラムを作成したのですが、
プログラムの起動タイミングによって、起動回数10回に1〜2回程度の確立で、ループ速度がかなり
高速になってしまいます。

原因は恐らくwaitの実行速度の問題で、awaitにすると速度が安定します(当たり前ですが...)
目視で30倍ぐらいの差があるのですが、こんなに差が出るものなのでしょうか。

現在作成中のプログラムで利用しているのですが、リアルタイムでの利用は重要でないので、
できればwaitで少しでもCPU利用率を下げたいのですが(気にしすぎかもしれません)

ご意見、よろしくお願い致します。


以下、確認用プログラムです。


screen 0,200,60 // 変数 key_arrow = 0 // getkey用 delay_cnt = 0 // キー入力を遅延させるため(これが1以上の時はキー入力を受け付けない) push_key = 0 // キーを押しっぱなしにした時に増やす(この数値によって、キー入力の遅延速度を変える) count = 0 // ウィンドウに表示するカウント *main wait 1 // 「await 16」とかにすると安定する getkey key_arrow,38 // 矢印キー(↑) // 矢印キー(↑)が押されていない場合にキー入力の遅延解除 if( key_arrow == 0 ){ delay_cnt = 0 // キーの遅延カウントリセット push_key = 0 // キーの押しっぱなし入力フラグリセット } /* pushedが0ならキー入力を受け付ける_ここから *************/ if( delay_cnt==0 ){ // 矢印キー(↑)が押された場合 if( key_arrow==1 ){ count++ // 以下, push_keyの数値によって遅延速度(delay_cnt)の値を変える if( push_key==0 ){ delay_cnt = 40 // 遅延用のカウントセット(最遅) push_key = 1 }else{ if( push_key<=3 ){ // 遅延用のカウントセット(中速) delay_cnt = 20 push_key++ }else{ if( push_key>3 ){ // 遅延用のカウントセット(最速) delay_cnt = 5 } } } } } /* pushedが0ならキー入力を受け付ける_ここまで *************/ // 遅延用のカウントが1以上ならカウントを減らす if( delay_cnt>0 ){ delay_cnt-- } // カウントを表示 redraw 0 color 255,255,255:boxf color 0,0,0:pos 0,0:mes count redraw 1 goto *main



この記事に返信する


魚犬

リンク

2017/9/25(Mon) 21:45:01|NO.81461

自分も全く同じ症状になります。
同じくwait 1でのloopを行うとなるので、wait 2にして対処しています。
HSPのバグなのでしょうかね?



暇人

リンク

2017/9/25(Mon) 22:22:56|NO.81462

wait 1 が不安定
http://hsp.tv/play/pforum.php?mode=pastwch&num=54114

HSP3.5β6 を試したら大丈夫っぽい
数十回ぐらい実効してみて症状は出なかった



Tsubame

リンク

2017/9/26(Tue) 08:49:50|NO.81466

魚犬 様(NO.81461)
ご検証ありがとうございます。他の方のパソコンでも同じ現象になるのですね。


暇人 様(NO.81462)
ご教示、ご検証ありがとうございます。前から起きてた現象なのですね。
(ご提示いただいたスレ、過去に見た記憶がありました。当時は気にしておらず、失念しておりました...)
HSP3.5β6を試したところ、こちらでも症状はでませんでした。


とりあえずHSP3.5β6でコンパイルを行い、問題なさそうであればそのまま利用したいと思います。
ご教示ありがとうございました。



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