HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■1487 / 10階層)  多重化のメリット 時限式タイマーのメリット
□投稿者/ ONnoji -(2024/07/18(Thu) 18:26:21)
    2024/07/19(Fri) 00:40:54 編集(投稿者)

    ジェダイの桐さん

    蛇足を少々・・・(^^ゞ

    > タイマーイベント内で、処理をすればOKという単純なものではありませんよ。
    > 多くの場合、多重化によるパフォーマンスでビジー(応答なし)を回避できると思いますよ。
    >
    > 多重化してもパフォーマンスが悪い場合に、更にパフォーマンスを上げたい時に、時限タイマーによるプログレスバー方式を使います。
    >
    > しかし、プログレスバーを使う主な目的は、作業の中断を出来るようにすることですよ。
    >     ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    フォームの編集対象表を[イベント処理で多重化した表]は、双子の表ですが、一方がビジブルで、多重化した方はステルスな表ですね。

    このように、多重化した表と、[イベント処理で開いたステルスな表]を処理する場合には、

    フォームの編集対象を対象にした時と比べると、けた違いにパフォーマンスが良いです。

    つまり、フォームに見えている表は、レコードの移動によって再描画(リドロー)が発生しますので、

    その再描画(リドロー)がパフォーマンスを悪くさせているということです。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    ステルスな表を扱っていても、ファイルのサイズが大きい場合や、レコード数が極端に多い場合、

    処理する内容が極端に複雑な場合、などにはパフォーマンスが悪くなります。

    例えば、

    A.レコード数が多いけれど、1パスで処理を行う場合 ⇒ 時限タイマー1回につき処理するレコード数を決めます

    B.レコード数は多くないが、複数パスで処理を行う場合(結果的に処理レコード数が多くなったのと同じです)⇒時限タイマーから処理する内容ごとに手続きを呼び出します

    このような場合に、時限タイマーによるプログレスバーを検討するということですよ。

    p.s.

    A.の場合には、以下のような感じ。※あくまでもアバウトなフィーリングです。細かいことは気にしないこと
                      ・・・・・・・・・・・・・・・・・・

    手続き定義開始 prcプログレスバーを実行( )

     &m処理単位レコード数 = 対象レコード数/回数

     &mRecordCount   = 1
     &mProgressBarRun = 1
     ブジェクト操作 @フォーム{ タイマー1 = 1, タイマー値1 = 10 }

    手続き定義終了

    手続き定義開始 フォーム::タイマー1()

     if ( &mProgressBarRun )

      手続き実行 prcProgressbarCall( )
     end

    手続き定義終了

    手続き定義開始 prcProgressbarCall( )

     &count = 0 /* カウンタ */

     繰り返し

      ** プログレスバーで行う処理内容 例えば、一般手続きを実行 prcProcedureName()とか

      &count = &count + 1
      if ( &count > &m処理単位レコード数 .or #eof .or [Esc] キーを押した )

       ** プログレスバーの1回あたりの規定回数を実行した、または終端行に到達したので脱出する

       繰り返し中止
      end
     繰り返し終了

     if ( [Esc] キーを押した または #eof )

      ** [Esc] キーを押した、または終端行に到達したのでプログレスバーを終了する

      &mProgressBarRun = 0
      オブジェクト操作 @フォーム.タイマー1 = 0 /* タイマーをリセットする */
     end

    手続き定義終了

    ※なお、[Esc] キーで中断するためには、[キーダウン]イベントをアクティブにして、[Esc] キーを検出する必要があります。


    B.の場合には、以下のような感じ。※あくまでもアバウトなフィーリングです。細かいことは気にしないこと
                      ・・・・・・・・・・・・・・・・・・

    手続き定義開始 prcタイマーによる分割実行( )

     &mPhase = 1
     ブジェクト操作 @フォーム{ タイマー1 = 1, タイマー値1 = 10 }

    手続き定義終了

    手続き定義開始 フォーム::タイマー1()

     if ( &mPhase = 1 )

      手続き実行 prcPhasePrimaryRun( )
     end

     if ( &mPhase = 2 )

      手続き実行 prcPhaseSecondaryRun( )
     end

    手続き定義終了


    手続き定義開始 prcPhasePrimaryRun( )
     &mPhase = &mPhase + 1

     ** 処理内容

    手続き定義終了


    手続き定義開始 prcPhaseSecondarRun( )
     &mPhase = &mPhase + 1

     ** 処理内容

     &mPhase = 0
     オブジェクト操作 @フォーム.タイマー1 = 0 /* タイマーをリセットする */

    手続き定義終了


    A.

     prcプログレスバーを実行 … インターバル … フォーム::タイマー1
                           └ prcProgressbarCall

    B.

     prcタイマーによる分割実行 … インターバル … フォーム::タイマー1
                            ├ prcPhasePrimaryRun
                            └ prcPhaseSecondaryRun

[メール受信/OFF] 削除キー/

→Re[11]: 多重化のメリット 時限式タイマ.. /ジェダイの桐
 
前の記事(元になった記事) 次の記事(この記事の返信)
上記関連ツリー

Nomal 「目からウロコの・・・パート2」を公開.. / ONnoji (24/06/11(Tue) 16:31) #1445 1718091910.jpg/44KB
Nomal Re[1]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/14(Fri) 17:36) #1446
│└Nomal Re[2]: 「目からウロコの・・・パート2.. / ONnoji (24/06/15(Sat) 17:45) #1447
│  └Nomal Re[3]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/17(Mon) 12:06) #1448
│    └Nomal Re[4]: 「目からウロコの・・・パート2.. / ONnoji (24/06/17(Mon) 15:17) #1449
│      └Nomal Re[5]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/17(Mon) 16:22) #1450
│        └Nomal Re[6]: 「目からウロコの・・・パート2.. / ONnoji (24/06/17(Mon) 17:33) #1451 1718614704.jpg/36KB
│          └Nomal Re[7]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/18(Tue) 10:27) #1452
│            └Nomal Re[8]: 「目からウロコの・・・パート2.. / ONnoji (24/06/18(Tue) 11:00) #1453
│              └Nomal Re[9]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/18(Tue) 12:03) #1454
│                └Nomal Re[10]: 「目からウロコの・・・パート2.. / ONnoji (24/06/18(Tue) 15:54) #1455
│                  └Nomal Re[11]: 「目からウロコの・・・パート2.. / ONnoji (24/06/18(Tue) 16:48) #1456
│                    └Nomal Re[12]: 「目からウロコの・・・パート2.. / ONnoji (24/06/18(Tue) 17:05) #1457
│                      └Nomal Re[13]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/19(Wed) 10:53) #1458
│                        └Nomal Re[14]: 「目からウロコの・・・パート2.. / ONnoji (24/06/19(Wed) 11:28) #1459
Nomal Re[1]: 「目からウロコの・・・パート2.. / ONnoji (24/06/19(Wed) 15:42) #1460
│├Nomal Re[2]: 「目からウロコの・・・パート2.. / ONnoji (24/06/19(Wed) 16:04) #1461
│├Nomal Re[2]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/19(Wed) 17:02) #1462
│├Nomal Re[2]: 「目からウロコの・・・パート2.. / 尾形 (24/06/19(Wed) 18:06) #1463
││└Nomal Re[3]: 「目からウロコの・・・パート2.. / ONnoji (24/06/19(Wed) 19:11) #1464 1718792137.jpg/57KB
│└Nomal Re[2]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/20(Thu) 14:50) #1467
│  └Nomal Re[3]: 「目からウロコの・・・パート2.. / ONnoji (24/06/20(Thu) 16:14) #1468
│    └Nomal Re[4]: 「目からウロコの・・・パート2.. / ONnoji (24/06/21(Fri) 00:40) #1469
│      └Nomal Re[5]: 「目からウロコの・・・パート2.. / ONnoji (24/06/21(Fri) 09:27) #1470
│        └Nomal Re[6]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/06/21(Fri) 15:23) #1471
│          └Nomal Re[7]: 「目からウロコの・・・パート2.. / ONnoji (24/06/24(Mon) 22:03) #1473
│            └Nomal Re[8]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/07/18(Thu) 16:12) #1484
│              └Nomal Re[9]: 多重化のメリット 時限式タイマ.. / ONnoji (24/07/18(Thu) 17:29) #1485
│                ├Nomal 多重化のメリット 時限式タイマーのメリ.. / ONnoji (24/07/18(Thu) 18:26) #1487 ←Now
│                │└Nomal Re[11]: 多重化のメリット 時限式タイマ.. / ジェダイの桐 (24/07/19(Fri) 10:10) #1488
│                └Nomal Re[10]: 「目からウロコの・・・パート2.. / ジェダイの桐 (24/07/18(Thu) 18:24) #1486
│                  └Nomal Re[11]: 「多重化のメリット 時限式タイ.. / ONnoji (24/07/19(Fri) 12:59) #1489
Nomal Re[1]: 「目からウロコの・・・パート2.. / ONnoji (24/06/24(Mon) 19:35) #1472 1719227391.jpg/49KB

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -