none
二進制讀檔 RRS feed

  • 問題

  • 請問為何用二進制讀檔速度會這麼慢 只是讀一個3k檔案 大概要10秒 像用ultraedit程式開啟6mb 不用幾秒

    請問要如何改善效能呢

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim fe As FileStream = New FileStream("c:\test.dat", FileMode.Open)
            Dim br As BinaryReader = New BinaryReader(fe)
            Dim fn(fe.Length) As Byte
            For i As Integer = 0 To fe.Length - 1
                fn(i) = br.ReadByte
                TextBox1.Text += (Hex(fn(i)) & ",")
            Next

            fe.Close()
            br.Close()
        End Sub
    2015年12月27日 下午 02:07

解答

  • (1) 你可以改變一個方式, 先讀完整個 bytes Array 進來, 然後使用  BitConverter.ToString   轉換成 Hex String

    (2) 字串的改變是很吃效能的, 在大型迴圈做字串的改變(以你的例子就是疊加) 應該使用 StringBuilder 類別 處理完再轉成 string


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年12月27日 下午 02:15
    版主
  • 1. 整個檔一起讀

    2. 字串不要用 +

    你先把你這行註解後,跑一下,就知道這行是重傷 TextBox1.Text += (Hex(fn(i)) & ",")


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 有夢最美 2015年12月28日 上午 11:36
    2015年12月27日 下午 03:23

所有回覆

  • (1) 你可以改變一個方式, 先讀完整個 bytes Array 進來, 然後使用  BitConverter.ToString   轉換成 Hex String

    (2) 字串的改變是很吃效能的, 在大型迴圈做字串的改變(以你的例子就是疊加) 應該使用 StringBuilder 類別 處理完再轉成 string


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年12月27日 下午 02:15
    版主
  • 你可以先讀進來再轉換。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年12月27日 下午 03:07
    版主
  • 1. 整個檔一起讀

    2. 字串不要用 +

    你先把你這行註解後,跑一下,就知道這行是重傷 TextBox1.Text += (Hex(fn(i)) & ",")


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 有夢最美 2015年12月28日 上午 11:36
    2015年12月27日 下午 03:23
  • 快的作法,是只轉換看得到的部分,或是用多緒來轉換。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年12月28日 下午 02:23