我想從iOS設備的磁盤連續傳輸大型遊戲數據文件。 問題是如果任何人通過使用System.IO.FileStream
以前流式傳輸此類文件(20MB的塊)。我沒有iOS設備自己測試它,我不希望在下一次得到它。iOS:大文件流式傳輸
有2個問題:
- 是文件流沒有完全加載它,以及如何(這是我從一個流期望,但我不能確定的MonoTouch的處理行爲)是內存使用,同時流媒體呢?
- 加載過程的性能如何,尤其是一次加載不同文件時更是如此?
謝謝你的任何信息。
我想從iOS設備的磁盤連續傳輸大型遊戲數據文件。 問題是如果任何人通過使用System.IO.FileStream
以前流式傳輸此類文件(20MB的塊)。我沒有iOS設備自己測試它,我不希望在下一次得到它。iOS:大文件流式傳輸
有2個問題:
謝謝你的任何信息。
MonoTouch基類庫(BCL)來自Mono,因此很多代碼都可以作爲開源使用。在FileStream
的情況下,你可以在github上看到代碼。
是文件流沒有完全加載它(這是我從一個流期望的行爲,但我不能確定的MonoTouch的處理)
你說得對,它不會是完全讀取。你將控制正在閱讀的內容。
當流式傳輸時內存使用情況如何?
上面的鏈接顯示默認的緩衝區大小設置爲字節(8K),但幾個構造函數允許您使用不同尺寸(如果你願意的話)。
當流式傳輸時內存使用情況如何?
但該緩衝區是內部緩衝區。當你調用像Read
這樣的方法時,你會提供自己的緩衝區,所以你將再次控制使用多少內存。
加載過程的性能如何,尤其是一次加載不同文件時的性能如何?
這很難預測,很大程度上取決於您的應用程序(例如文件數量,所需的總內存...)。如果需要,可以使用FileStream
異步方法(如BeginRead
)獲得更好的性能。
感謝您的回答,似乎iOS具有可接受的I/O性能。 (http://forums.imore.com/iphone-4s-forum/221365-iphone-4s-io-performance.html) –
默認緩衝區大小實際上是一個實現細節(實際上在MonoTouch中實際會變爲4096 - 這種變化已經發生在單聲道主)。 –