(現在 過去ログ14 を表示中)

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

[ 最新記事及び返信フォームをトピックトップへ ]

■1983 / inTopicNo.1)  ファイル検索の速度が変わるのは何故
  
□投稿者/ 今村 誠 -(2007/01/11(Thu) 09:45:20)
    以下の一括をpc起動後に実行した場合と2回目で起動した場合
    スピードが変わるのは何故でしょうか?
    コメントアウトにしないと早すぎて検証できないと思います。

     表
     変数削除 共通
     変数削除 *
     if (#配列要素数("InchToDot")=-1)
       var 共通,数値{&desksize[2]},共通,Int{&InchToDot}
       &InchToDot=#デスクトップサイズ("desksize")\
       ,&InchToDot=#InchToDot(1)
     end
     call フォルダー検索("郵便.tbl",".tbl")
     終了 桐
    proc フォルダー検索(Str &S表の名前,Str &S拡張子)
     var Str{&Spassname=#一括パス名\
     ,&S指定folder,&Soplist,&Sreadtbl\
     ,&Slist=#一括パス名+"list.k3"\
     ,&Sbatfile=#一括パス名+"list.bat"}\
     ,Int{&Imain,&I終了,&Iend}\
     ,Long{&L行=0,&L終了}\
     ,Long{&LmojiA=#HEX32(#HEX(#J("A")))\
     ,&LmojiZ=#HEX32(#HEX(#J("Z"))),&Lcount}\
     ,Str{&Sdrive名,&Stmp},数値{&Ntmp}
     for &Lcount=&LmojiA,&LmojiZ,1
      if (#代入(&Ntmp,#DISKSIZE(#代入(&Stmp\
        ,#J(#HEX(#HEX32(&Lcount))))))>0)
       &Sdrive名=&Sdrive名+","+&Stmp
      end
     end
     ウィンドウ位置 最小化,-1
     &S指定folder=#SSTR(&S指定folder,1\
            ,#L(&S指定folder)-1)
     印字開始 "mokumoku.k3", 終了状態=&Iend
     印字 "###"
     印字 "### WIN桐 00"
     印字 "###"
     印字 """ファイル名"",""文字列"""
     印字 """folder名"",""文字列"",""M4895"",""""\
     ,""#文字列反転(#SSTR(#文字列反転([ファイル名])\
    ,#文字位置(#文字列反転([ファイル名]),""""\"""")))"""
     印字 """文字数"",""整数"""
     印字終了 改頁=しない
     表作成 "sub.tbl",定義ファイル="mokumoku.k3"\
     ,モード=専有,終了状態=&I終了
     &Imain=#IS表
     if (&I終了=1)
    /* 1コメントアウト */
      &Sdrive名=#S(&Sdrive名,","+#sstr(#GETENV("WINDIR"),1,1),"")
    /* 2コメントイン */
      &LmojiZ=#L(&Sdrive名)-#L(#S(&Sdrive名,",",""))
      &Sdrive名=#sstr(&Sdrive名,2)
      繰り返し &Lcount=1,&LmojiZ,1
      &S指定folder=#対応文字列(&Sdrive名,&Lcount)+":\"
      印字開始 &Sbatfile, 終了状態=&Iend
      印字 "Dir "+&S指定folder+"*"+&S拡張子\
      +" /s /b > "+""""+&Slist+""""
      印字 "exit"
      印字終了 改頁=しない
      システム &Sbatfile
      読み込み K3,&Slist, 項目名=する, 終了状態=&Iend, *
      end
      表 "sub.tbl"
      if (#総件数=0)
       ウィンドウ位置 復元,-1
       確認 "探しているファイルはありません"
      else
       絞り込み [ファイル名]_&S表の名前, 文字比較方法=拡張辞書順\
       , 部分一致検索=含む
       if (#総件数=0)
        ウィンドウ位置 復元,-1
        確認 "探しているファイル"+&S表の名前+"はありません"
       else if (#総件数=1)
        &Sreadtbl=[ファイル名]
        終了 表 編集対象表
        ウィンドウ位置 最大化,-1
        表 &Sreadtbl
        ウィンドウ作成 表,オプション=最大化
        表形式編集 
       else
        絞り込み 単一化={[folder名]}
        検索 [folder名]{#計算(#代入(&Soplist,&Soplist+\
        """"+","+""""+[folder名]),"ιξτψ")}\
        , 文字比較方法=自動, 部分一致検索=しない
        &Soplist=#SSTR(&Soplist,3)+""""
        var Str{&Sヘッダ="同名ファイルあり",&S選択文字\
        ,&Sフッタ =&S表の名前+":フォルダーは?"}
     Eval "var 文字列{&SV["+#str(#桁数(&Soplist)-#桁数(#s(&Soplist,",","") )+1)+"]={"+&Soplist+"}}"
        ウィンドウ位置 復元,-1
        ウィンドウ位置 設定,-1,位置=(&desksize[1]-100,50),サイズ=(50,50)
        call メニュー選択(&Sヘッダ,&Sフッタ,0,0,&SV,&S選択文字,&L終了)
        if (&L終了<1)
         終了
        else
         終了 表 編集対象表
         ウィンドウ位置 最大化,-1
         表 &S選択文字+&S表の名前
         ウィンドウ作成 表,オプション=最大化
         表形式編集
        end
       end
      end
     end
     表
     ファイル削除 &Spassname+"mokumoku.k3"
     ファイル削除 &Spassname+"list.k3"
     ファイル削除 &Spassname+"list.bat"
     ファイル削除 &Spassname+"sub.bak"
    * ファイル削除 &Spassname+"sub.tbl"
    end
引用返信 [メール受信/OFF] 削除キー/
■1986 / inTopicNo.2)  Re[1]: ファイル検索の速度が変わるのは何故
□投稿者/ ONnoji -(2007/01/11(Thu) 12:37:01)
    > 以下の一括をpc起動後に実行した場合と2回目で起動した場合
    > スピードが変わるのは何故でしょうか?

    2回めの方が処理時間が短くなるということですか?

    それなら、前回実行時に、ファイルの情報がOSのメモリにキャッシュされていて、
    ディスクへの読み取りが発生しないからでは???

    いつものタラレバです。

引用返信 [メール受信/OFF] 削除キー/
■1987 / inTopicNo.3)  Re[2]: ファイル検索の速度が変わるのは何故
□投稿者/ 今村 誠 -(2007/01/11(Thu) 13:01:55)
    ONnojiさんこんにちは
    > 2回めの方が処理時間が短くなるということですか?
    c:\を検索に含めると105000位ファイルがあるのですが
    最初が3.5分で2回目が20秒になるんです。
    > それなら、前回実行時に、ファイルの情報がOSのメモリにキャッシュされていて、
    > ディスクへの読み取りが発生しないからでは???
    >
    > いつものタラレバです。
    dosコマンドなので覚えているのかもしれません。
    桐の#ファイル検索はファイル名の取得には使えないシーンが多いです。
    プログラムの作り方が悪いのかもしれませんが、延々と同じファイルを
    3回も4回も読みに行きます。
    ディレクトリーだったら問題ないようですが、特にcドライブを含めると
    ダメで、システム以外を指定の場合正常のようなので仕様なのかもしれ
    ません。
引用返信 [メール受信/OFF] 削除キー/
■1988 / inTopicNo.4)  Re[3]: ファイル検索の速度が変わるのは何故
□投稿者/ ONnoji -(2007/01/11(Thu) 13:14:38)
    >>2回めの方が処理時間が短くなるということですか?
    > c:\を検索に含めると105000位ファイルがあるのですが
    > 最初が3.5分で2回目が20秒になるんです。
    >>それなら、前回実行時に、ファイルの情報がOSのメモリにキャッシュされていて、
    >>ディスクへの読み取りが発生しないからでは???
    > dosコマンドなので覚えているのかもしれません。

    またしても、タラレバですが、
    #ファイル検索( )関数は、ファイルシステムのディレクトリエントリーを探索しているように思います。

    エクスプローラでも、初めて読み込むフォルダの場合、ファイル数が多いと時間が掛かりますよね。
    しかし、他のフォルダを表示してから、再度同じフォルダを表示する場合には、
    時間が掛からないですね。
    これはOSがキャッシュしているからと考えるのが自然じゃないでしょうか?

    > 桐の#ファイル検索はファイル名の取得には使えないシーンが多いです。
    > プログラムの作り方が悪いのかもしれませんが、延々と同じファイルを
    > 3回も4回も読みに行きます。

    確か以前にたゆーさんが書かれていましたが・・・、

    ファイルを削除・追加すると、ディレクトリエントリーの順番が変わるので、
    #ファイル検索( )関数は同じファイルを見つけたり、ファイルを飛ばしたりすると思いますよ。

引用返信 [メール受信/OFF] 削除キー/
■1989 / inTopicNo.5)  Re[4]: ファイル検索の速度が変わるのは何故
□投稿者/ 今村 誠 -(2007/01/11(Thu) 13:25:41)
    ONnojiさんこんにちは

    > ファイルを削除・追加すると、ディレクトリエントリーの順番が変わるので、
    > #ファイル検索( )関数は同じファイルを見つけたり、ファイルを飛ばしたりすると思いますよ。
    >
    確かにファイルに書き込んでいるので、この関数を使うと予期しない結果が
    生じますね。
    でもそうなるとフォルダーの名前一覧やファイル一覧はDOSコマンドで
    取得して表示するという順番になりますね。
     今後はこの方針で作るようにします。
解決済み!
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

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

- Child Tree -
- Antispam Version -