[要望]ネットワーク上のファイルオープン

  1. ネットワーク上にあるファイルを開くと時間がかかるので改善して欲しい。

     |  shu  |  返信
  2. あまりに漠然な要望だったのでご質問させてください。

    僕はXP-Pro、Vista-UlL、7-UL、Linux-CentOSで使っていますが、
    ファーストアクセスはネットワークの仕様上遅くなることがあります。
    これはどのOSでもどのソフトでも一緒です。

    またどのような形式ファイルで容量が何Mバイト、
    ウイルスバスターなどウイルス対策製品は何をいれていますか?

    あと相手側がPCかNASなのかでも変わるかと思います。

    私はAVG、Avast4、ウイルスバスター2k10をそれぞれ入れていますが、
    10M位のデータでなければ遅いと感じたことはないです。

    ネットワーク系だったのでいてもたってもいられませんでした。失礼しやす

     |  MOON  |  返信
  3. んー有名どころのテキストエディタと比較してみると

    「ネットワーク上にあるファイルを開いてプログラムを起動」

    したときの速度は遅めかもしんまいなぁ・・・・

    タブで開くとかドラック&ドロップは別に遅くないけど

    Em早すぎ・・・

     |  MOON  |  返信
  4.  当方のネットワーク構成にも関連しているかもしれませんので障害としては挙げていません。ネットワーク上には10台以上のPCが接続されています。
     開こうとするファイルは1k程度でも1M以上あっても1分以上開きません。
     ちなみにEmでもK2でも数秒で開きます。

     |  shu  |  返信
  5. MOONさん、ご協力ありがとうございます。

    当方、XP SP3、Win7 にて確認してみましたが、普通に開けますね。。。
    なんだろ・・・。

     |  Kuro  |  返信
  6. ドライブ割り当てをしてから開いたところストレスなく開きました。
    『¥¥~』の形式の時ネットワーク参照を何度も行うような処理を
    していないでしょうか?(フォルダ階層の回数だけ見に行っているとか?)

     |  shu  |  返信
  7. > ドライブ割り当てをしてから開いたところストレスなく開きました。
    > 『¥¥~』の形式の時ネットワーク参照を何度も行うような処理を
    > していないでしょうか?(フォルダ階層の回数だけ見に行っているとか?)

    ご報告ありがとうございます。
    私の環境ですと「\\~」の場合でも普通に開きますね・・・。
    処理的には完全にDelphi(開発環境)任せになってるので、内部的にフォルダの階層分だけ
    見に行ってるのかもしれませんが、もしそうだとしたら修正しようがないですね、、、

    「\\~」の場合、1度目以降でも毎回遅いのでしょうか?

     |  Kuro  |  返信
  8. あと、お時間があればご確認お願いします。

    1. ファイルを開くダイアログボックスから開くときに遅い?
    2. ファイルをエディタウィンドウにドラッグドロップで遅い?
    3. 何もかも遅い。(開く、保存、など含めて)

     |  Kuro  |  返信
  9. > あと、お時間があればご確認お願いします。

    > 1. ファイルを開くダイアログボックスから開くときに遅い?
    > 2. ファイルをエディタウィンドウにドラッグドロップで遅い?
    > 3. 何もかも遅い。(開く、保存、など含めて)

    1,2 -> 遅い(開くダイアログ自体は速い)
    3 -> 保存は普通です。

    以下のサイトの内容って関係ありますか?
    http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200812/200812_08120036.html

     |  shu  |  返信
  10. 検証ありがとうございます!お手数をお掛けしております。。。

    URLを貼ってくれたサイトの情報、参考になりました。
    階層を追いかけて上まで登る処理は、どうしても必要になってしまうのですが、
    その処理自体が重いわけではなさそうです。

    気力を振り絞ってバーチャルマシンで仮想のネットワークを作って試してみたところ、
    いい感じに重い現象が再現できましたので、修正できるかもしれないです。
    階層上りすぎてた可能性が高いです・・・(汗)

    ネットワーク系になるとなかなか再現性が低くて、こちらで確認するまでに大変ご迷惑を
    お掛けしてしまいました。ごめんなさい。。。

    次のバージョン、ご期待くださいませ!(多分、週末、、、早ければ明日・・・)

     |  Kuro  |  返信
  11. お手数お掛けします。
    よろしくお願いしますmm

     |  shu  |  返信
  12. こんばんは!いろいろと助言頂いたおかげでなんとか修正できた「かも」です。
    私のしょぼいネットワーク環境だとうまい具合に改善されたっぽいのですが、数十台繋がってる
    環境では検証できていません。。。

    お手数をお掛けしますが、お時間があるときにでもMery 1.0.10.227 でお試しください。
    (だめだったら泣きそうですが・・・)

     |  Kuro  |  返信
  13. おはようございますmm

    1.0.10.2270をダウンロードして試してみました。
    すぐに開きました。ローカルファイル開くのと体感的にかわりないです^^

    ありがとうございました。

     |  shu  |  返信
  14. おそようございますww
    うほっ、早速の動作確認ありがとうございます!
    直っててよかったぁ~・・・。
    こちらこそ、いろいろとご協力頂きまして、ほんとありがとうございました。。。

     |  Kuro  |  返信
  15. 複数Windowを開いているとファイルオープン中は全てのWindowが操作出来ないのでそれだけでも回避してもらえるとありがたいですmm

     |  shu  |  返信
  16. 参考までに時間を大雑把ですが計測してみました。
    当方環境がvb.netしかないのでそのソースと結果を載せます。
    オープンしたファイル名は伏字にさせて頂きます。
    結果の上3行がVB内での読込状況、最終行がMeryをプロセス起動後
    の画面がアクティブになるまでの時間です。
    よろしくお願いしますmm

    ソース:
            Const TrgFileName As String = "\\<サーバ名>\XXXXX\XXXXXX\XXXXXX\XXXXX\XXXXX.TXT"
            Dim dtNow1 As Date
            Dim dtNow2 As Date
            Dim dtNow3 As Date
            Dim dtNow4 As Date
            Dim dtNow5 As Date
            Dim dtNow6 As Date

            dtNow1 = Date.Now
            '--- ファイル情報取得
            Dim objFileInfo As New FileInfo(TrgFileName)

            dtNow2 = Date.Now
            '--- ファイル存在チェック
            If objFileInfo.Exists Then
                dtNow3 = Date.Now
                '--- ファイルストリームをShift-jisでオープン
                Dim rd = objFileInfo.OpenRead()
                Dim a = New StreamReader(rd, System.Text.Encoding.GetEncoding("shift-jis"))
                '--- 全体読み込み
                Dim strTmp = a.ReadToEnd()
                '--- ストリームクローズ
                a.Close()
                dtNow4 = Date.Now
            End If

            '--- 計測時間ログ書き込み
            WriteLog("ファイル情報取得 (msec)", dtNow2.Subtract(dtNow1).TotalMilliseconds)
            WriteLog("ファイル存在チェック (msec)", dtNow3.Subtract(dtNow2).TotalMilliseconds)
            WriteLog("ファイル読み込み (msec)", dtNow4.Subtract(dtNow3).TotalMilliseconds)

            '--- Meryプロセス起動
            Dim pr = Process.Start("C:\Program Files (x86)\Mery\Mery.exe", String.Format("""{0}""", TrgFileName))
            '--- 入力可能状態になるまで待つ
            dtNow5 = Date.Now
            pr.WaitForInputIdle()
            dtNow6 = Date.Now

            '--- 計測時間ログ書き込み
            WriteLog("プロセス起動後入力状態になるまで(msec)", dtNow6.Subtract(dtNow5).TotalMilliseconds)

    結果:
    2010/01/06 11:17:36, I006, , ファイル情報取得 (msec), 0
    2010/01/06 11:17:36, I006, , ファイル存在チェック (msec), 15.5999
    2010/01/06 11:17:36, I006, , ファイル読み込み (msec), 15.5999
    2010/01/06 11:18:26, I006, , プロセス起動後入力状態になるまで(msec), 49748.0811

     |  shu  |  返信