none
若要將大量資料寫入到二進制檔案的話,應該使用什麼類別好呢? RRS feed

  • 問題

  • 因為VB的類別實在太龐大,小弟也摸不清楚哪種效率好,

    目前使用了下列四種類別都都方法可以寫入位元組(Bytes)到檔案中,

    1. Stream
    2. FileStream
    3. BinaryWriter
    4. My.Computer.FileSystem

    但是我要如何分辨我在寫入小檔案或者大檔案時,該用哪個項目去撰寫程式呢?

    另外可否請問大大們,若小弟不知道同樣的方法效率如何時,要如何測試效率呢?

    若問題問得不好,麻煩大大們糾正,我會再更改題目或標題。

    2009年11月1日 上午 07:20

解答

  • 寫檔案的話用 FileStream, BinaryWriter 都可以,因為它們都是同一個底 (FileStream),BinaryWriter 只是讓你比較好用一點點。

    寫入檔案到磁碟的話要去看 Disk I/O 才會知道效率好不好,可以用 Performance Counter (效能計數器) 找與磁碟有關的參數來看。
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    除非不能打中文,否則請尊重當地語系的網友,使用中文發問或回答,這是一種基本禮貌。
    • 已標示為解答 js155036 2009年11月2日 下午 03:48
    2009年11月1日 上午 08:16
    版主
  • HI,

    基本上寫檔效能好不好和程式的寫法有關, 建議可以用不同的寫法執行寫檔的動作, 再用QueryPerformanceCounter函數(http://www.pinvoke.net/default.aspx/kernel32.QueryPerformanceCounter)量測一下.
    • 已標示為解答 js155036 2009年11月2日 下午 03:48
    2009年11月1日 上午 08:21
  • 要精準測量程式碼耗用時間的話,用 CPU 時間比較準:
    Process.UserProcessorTime
    http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!1776.entry

    QueryPerformanceCounter 是用在 Real time 的精準計時。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 js155036 2009年11月2日 下午 03:48
    2009年11月1日 下午 02:20

所有回覆

  • 寫檔案的話用 FileStream, BinaryWriter 都可以,因為它們都是同一個底 (FileStream),BinaryWriter 只是讓你比較好用一點點。

    寫入檔案到磁碟的話要去看 Disk I/O 才會知道效率好不好,可以用 Performance Counter (效能計數器) 找與磁碟有關的參數來看。
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    除非不能打中文,否則請尊重當地語系的網友,使用中文發問或回答,這是一種基本禮貌。
    • 已標示為解答 js155036 2009年11月2日 下午 03:48
    2009年11月1日 上午 08:16
    版主
  • HI,

    基本上寫檔效能好不好和程式的寫法有關, 建議可以用不同的寫法執行寫檔的動作, 再用QueryPerformanceCounter函數(http://www.pinvoke.net/default.aspx/kernel32.QueryPerformanceCounter)量測一下.
    • 已標示為解答 js155036 2009年11月2日 下午 03:48
    2009年11月1日 上午 08:21
  • To 小朱大大

    所以說這些類別都可以用,但是要求效能的話,還是得測試才知道結果是吧?

    2009年11月1日 上午 10:02
  • To tihs

    請問這個API是精準的測量效率用的嗎?
    2009年11月1日 上午 10:06
  • 要精準測量程式碼耗用時間的話,用 CPU 時間比較準:
    Process.UserProcessorTime
    http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!1776.entry

    QueryPerformanceCounter 是用在 Real time 的精準計時。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 js155036 2009年11月2日 下午 03:48
    2009年11月1日 下午 02:20
  • HI, 是的, QueryPerformanceCounter是高精確度的計時功能, 請參考: QueryPerformanceCounter Function(http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx)
    2009年11月2日 上午 03:51