同じコードなのに処理速度がキープできない。。。。 – プログラミング – Home

同じコードなのに処理速度がキープできな...
 
通知
すべてクリア

[解決済] 同じコードなのに処理速度がキープできない。。。。


10秒チャージ8.7秒キープ。。。。
 10秒チャージ8.7秒キープ。。。。
(@10秒チャージ8.7秒キープ。。。。)
ゲスト
結合: 24年前
投稿: 1
Topic starter  

100mm/secタイマーで自分自身を呼び出して無限ループしているのですが、一定時間経つと速度
が落ちる事など、在り得るのでしょうか?

メモリー、リソース、クロック速度、共に安定している為、タイマー辺りに何かあるかも知れま
せん。
ハードコーディングすれども、タイマーを1mm/secに切り詰めようとも、余裕の表情なのです
が、決まった時間に遅くなってしまいます。

winXP(home)にVC++の組み込みシステムなのですが、夏バテ気味らしく、肉体疲労時の栄養補給
が必要で困っています。
過去ログでも聞きませんので、心当たりのある方お願いします。


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 24年前
投稿: 895
 

>一定時間経つ
どのくらいの単位

アプリケーションの起動後の時間
それともシステム起動後の時間
タスクマネージャでその時間に動作しているサービス、アプリケーション
などチェックしてますか

VCまたはC言語に関する質問なのでしょうか
どんなアプリの質問か良くわかりませんけど
コンソール、COM、ATL、ウィンドウ、ダイアログ
MFC使ってますかSDKですか

NT系のOSを使用するのは初めてですか

すべての質問に答えてください


返信引用
?
 ?
(@?)
ゲスト
結合: 24年前
投稿: 49
 

使用上の注意は読みましたか?
この内容ではいくつの掲示板に書いても質問攻めにあうだけだと思いますヨ。
自分の環境では、一定時間たつとメール受信が走るため他のソフトのレスポンスが落ちることが
あります。
m(__)m 関係ないっスよね。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 24年前
投稿: 895
 

同じコードって何ですか
>一定時間経つと速度が落ちる事など、在り得るのでしょうか?
当然のごとくありえます
ただしMSDOSのようなシングル スレッド、シングル プロセスの場合
割り込みさえ発生させなければ、処理速度落ちませんけど


返信引用
10秒チャージ8.7秒キープ
 10秒チャージ8.7秒キープ
(@10秒チャージ8.7秒キープ)
ゲスト
結合: 24年前
投稿: 1
 

>どのくらいの単位
>アプリケーションの起動後の時間
>それともシステム起動後の時間
>タスクマネージャでその時間に動作しているサービス、アプリケーション
>などチェックしてますか
>同じコードって何ですか

簡単ですが、多少の演算と100mm/secタイマーです。
static void foo();
{
i++;
settimer(100, foo);
}
全般に当てはまるか判りませんが、この組み込みシステムでは
settimer100mm/secで87回、10mm/secで870回ほど
安定してループしているのだと思います。
システム起動後8.7秒ほどだと思います。

100mm/secウエイトかけてsettimerなしでループさせた所解決しました。
ただ本当にタイマーが必要になったとき今のままでは困るのですが。
あいかわらず原因が特定できません。


返信引用
PATIO
(@patio)
Famed Member
結合: 5年前
投稿: 2660
 

ウインドウズのタイマーに精度を期待してはいけないと思いますよ。
ウインドウズのタイマーは他に忙しい作業が出来れば簡単に後回しに
されてしまう程度の代物ですから。
OS内部で何かが起これば、そこにCPUが持っていかれるでしょうし、
組み込みであれば、コンパクションスレッドの問題もあると思います。

時間の正確性が問題になるのであれば、ウインドウズのタイマーは使えないと
いうことになります。


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 24年前
投稿: 80
 

ウインドウズのタイマーよりマナーを勉強した方がよろしいかと・・

マルチポスト
http://n76cd-01p05.ppp11.odn.ad.jp/cgi.cgi?05853

余談ですが・・、100mm/secって表記は、実際使われているのだろうか・・
速度の単位みたい・・


返信引用
匿名希望
 匿名希望
(@匿名希望)
ゲスト
結合: 24年前
投稿: 2
 

余談に回答ですが、
mm/sec(1秒間に?mm進む早さ)は間違い無く速度の単位ですね。
msec(ミリ秒 1/1000秒)と勘違いなされてるようです。


返信引用
wood
 wood
(@wood)
ゲスト
結合: 24年前
投稿: 895
 

>ただ本当にタイマーが必要になったとき今のままでは困るのですが
Windows OSに時間の正確性を求めるのは、無理があると思うのですが
ましてやXP(HOME)ですよ
OSの割り込みを軽減させたいのなら
同じXPでもPROを使うべきでしょう
ハードはCPUをデュアルで実装しMAXメモリ実装したもので
試すほか無いのではないですか
ここまでしてもだめだとは思いますけど


返信引用
Joan
 Joan
(@Joan)
ゲスト
結合: 24年前
投稿: 42
 

> static void foo();
> {
> i++;
> settimer(100, foo);
> }

settimer の使い方が妙な感じが・・・。引数に関数ポインタ?
Java Scrpit の settimer っぽい記述の仕方ですが・・。

うーん、タイマーってコンピュータに依存しますから同じ
コードなのに処理能力が違うのは当たり前では?

ゲーム機だって個体差があるのでタイマがみな微妙に違う
ので組み込みマシンも皆処理能力が同じと思ってはいけません。

あと XP の Home / pro じゃなくて Win9x/Me と
WinNT/2000/XP の2グループかと・・。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 24年前
投稿: 359
 

正確さが必要ならメッセージループをPeekMessageにして、
CPU100%使って、自分で判定すればある程度は・・・


返信引用
ありがとうです
 ありがとうです
(@ありがとうです)
ゲスト
結合: 24年前
投稿: 1
 

>ハードはCPUをデュアルで実装しMAXメモリ実装したもので
>試すほか無いのではないですか
>ここまでしてもだめだとは思いますけど

>ゲーム機だって個体差があるのでタイマがみな微妙に違う
>ので組み込みマシンも皆処理能力が同じと思ってはいけません。

>正確さが必要ならメッセージループをPeekMessageにして、
>CPU100%使って、自分で判定すればある程度は・・・

参考になる意見ありがとうございます。
こういう方法は思いつかなかったので試行錯誤してみます。
本当にお世話になりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました