問題タブ [isolatedstoragefile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - StorageFile は IsolatedStorageFile より 50 倍遅い
Lumia 920 で実行されているアプリの WP7 バージョンが、同じデバイスで実行されている WP8 バージョンの 2 倍の速さでデータをロードすることを発見したとき、アプリにすべてのデータをロードする最速の方法を見つけるために、複数のアルゴリズムのベンチマークを行っていました。
次に、WP8 の StorageFile と WP7 の IsolatedStorageFile のパフォーマンスをテストするために、次の独立したコードを作成しました。
タイトルを明確にするために、20kb と 100kb の 50 個のファイルを読み取って行った予備的なベンチマーク結果をここに示します。
コードについては、以下を参照してください
アップデート
今日数時間ベンチマークを行い、いくつかの興味深い結果を出した後、私の質問を言い換えさせてください。
await StreamReader.ReadToEndAsync()
非非同期メソッドよりもすべてのベンチマークで一貫して遅いのはなぜStreamReader.ReadToEnd()
ですか? (これは Neil Turner からのコメントで既に回答されている可能性があります)StorageFile でファイルを開くときに大きなオーバーヘッドがあるようですが、それは UI スレッドで開いた場合のみです。(メソッド 1 と 3 または 5 と 6 の間の読み込み時間の違いを参照してください。3 と 6 は、同等の UI スレッド メソッドよりも約 10 倍高速です)
より高速な可能性があるファイルを読み取る他の方法はありますか?
アップデート 3
さて、今回の更新でさらに 10 個のアルゴリズムを追加し、以前に使用したすべてのファイル サイズと使用したファイル数ですべてのアルゴリズムを再実行しました。今回は、各アルゴリズムを 10 回実行しました。したがって、Excel ファイルの生データは、これらの実行の平均です。現在 18 個のアルゴリズムがあり、それぞれが 4 つのファイル サイズ (1kb、20kb、100kb、1mb) でそれぞれ 50、100、および 200 ファイル (18*4*3 = 216) でテストされているため、合計 2160 回のベンチマーク実行がありました。合計で 95 分かかります (生の実行時間)。
更新 5
ベンチマーク 25、26、27 およびReadStorageFile
メソッドを追加。投稿が明らかに最大である 30000 文字を超えていたため、一部のテキストを削除する必要がありました。新しいデータ、新しい構造、比較、および新しいグラフで Excel ファイルを更新しました。
コード:
これらのベンチマークの実行方法:
ベンチマーク結果
生のベンチマーク データへのリンク: http://www.dehodev.com/windowsphonebenchmarks.xlsx
グラフ (すべてのグラフは、各メソッドを介して 50 をロードするためのデータを示します。結果はすべてミリ秒単位です)
次の 1 MB のベンチマークは、アプリを代表するものではありません。これらの方法がどのようにスケーリングするかについてより良い概要を示すために、ここにそれらを含めます。
要約すると、ファイルの読み取りに使用される標準的な方法 (1.) は常に最悪です (ただし、10 MB のファイルを 50 個読み取りたい場合を除きますが、それでもより良い方法があります)。
これもリンクしています: await AsyncMethod() 対 await await Task.Factory.StartNew<TResult>(AsyncMethod)、通常は新しいタスクを追加するのは役に立たないと主張されています。ただし、ここで見た結果は、それを想定することはできず、タスクを追加するとパフォーマンスが向上するかどうかを常に確認する必要があるということです。
そして最後に、これを公式の Windows Phone 開発者フォーラムに投稿したかったのですが、試行するたびに「予期しないエラー」メッセージが表示されます...
更新 2
結論:
データを確認すると、ファイル サイズに関係なく、すべてのアルゴリズムがファイル数に比例してスケーリングすることが明確にわかります。したがって、すべてを単純化するために、ファイルの数を無視できます (今後の比較では、50 ファイルのデータのみを使用します)。
次にファイル サイズについて: ファイル サイズは重要です。ファイル サイズを大きくすると、アルゴリズムが収束し始めることがわかります。10MB のファイル サイズでは、前の最も遅いアルゴリズムは 4/8 で実行されます。ただし、この質問は主に携帯電話を対象としているため、アプリがこれほど多くのデータを含む複数のファイルを読み取ることは非常にまれであり、ほとんどのアプリでは 1MB のファイルであってもまれです。私の推測では、50 個の 20kb ファイルを読み取ることさえ珍しいことです。ほとんどのアプリは、それぞれ 0.5kb から 3kb のサイズの 10 から 30 個のファイルの範囲でおそらくデータを読み取っています。(あくまで推測ですが、多分正しいと思います)
c# - Windows Phone 7 分離ストレージ - 操作は許可されていません
だから私は単純なゲームに取り組んでいて、ハイスコア システムを実装したいと考えていました。プレーヤーが初めてメイン ページをロードすると、新しいテキスト ファイル ("hsc.txt") が作成され、後でプログラムによって分割されるいくつかの偽の値が挿入されますが、現在、私のコードは a をスローしSystem.IO.IsolatedStorage.IsolatedStorageException
、私は問題が見つからないようです。メッセージ ボックスから表示された " " というエラーを調べましたが、- operation not permitted
投稿されたすべての解決策が機能していないようです。ストリームを閉じようとしましたが、うまくいかないようです。
アドバイスをいただければ幸いです。
これまでのところ、a) FileMode を変更しました。b) FileAccess と、覚えていない他のいくつかの「クイックフィックス」を変更しました。
silverlight - Windows Phone - ナビゲーション後に MediaElement が機能しなくなった
Windows Phone (8) アプリケーションの MediaElement に問題があります。他のページに移動して、MediaElement を含むページに戻るまで、正常に動作しています。
Bing Translator API からのストリームを再生する次のコードがあります。
最大の問題は、例外がないことです....「MediaElement.SetSource(isfs);」例外なく正常に呼び出されます!
何が起こる可能性があるか考えていますか?
助けてくれてありがとう!バスティアン
xml - 新しい XElement を追加すると、XML 全体がストリーム内の既存の xml に追加されます
InternalFielStorage に既存の XML を次のように保存しています。
「作成者」ノードの下に「タイトル」ノードを追加しようとしていますが、保存すると、既存の xml に完全に新しい xml が追加されます..
私がこれに使用しているコード..
質問:
1. 新しい XML が既存の XML に追加されないようにするにはどうすればよいですか?
2. "title" タグを <"Author name="Sam"> タグの下に配置するにはどうすればよいですか?
前もって感謝します。
c# - Windows Phone 8 の iOS の plist のようなファイル
plistファイルを使用してiOSで行われるように、あらゆる種類のデータをファイルに保存するための同様のソリューションがあるのでしょうか?
へのデータのロードNSArray
[NSMutableArray arrayWithArray:[[NSArray alloc] initWithContentsOfFile:pathToFile]]
データをファイルに書き込む
[NSArray writeToFile:destPath atomically:YES];
私は似たようなものがあることを知っています、[NSUserDefaults standardUserDefaults]
そしてそれはIsolatedStorageSettings.ApplicationSettings
どんな助けでも大歓迎です。
解決した
この質問では、1スーント法の使用例を示しました。
c# - 選択したアイテムを分離ストレージから削除する方法は? ユーザーはファイルの名前を付けます
分離ストレージに保存して取得できます。しかし、どうやって削除するのですか?
c# - IsolatedStorageFile.GetLastAccessTime が wp7 でクラッシュする
「IsolatedStorage へのアクセス中にエラーが発生しました」のように聞こえます。しかし、msdn にはそのような例外はありません: http://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragefile.getlastaccesstime(v=vs.110).aspx
Task.Factory.StartNew() 内で呼び出していることが原因である可能性があると思います。それは理由になるでしょうか?wp8で問題なく動作します。
編集:
問題は、私が使用GetLastAccessTime(cacheFileName).Millisecond;
したことでした.Agatのリンクで言われているように、wp7ではミリ秒は常に0です。または、実際には、それらにアクセスしようとして例外がスローされているため、それらは利用できません。したがって、ミリ秒を使用しないでください。それだけです。
windows-phone - WritableBitmap を IsolatedStorageFileStream に保存する
変数 WriteableBitmap の内容を IsolatedStorageFile に保存する簡単な方法はありますか? WriteableBitmap 内のピクセルを処理し、処理されたビットマップをファイル *.bmp として保存し、「保存された画像」ディレクトリに保存するプログラムを作成しています。WriteableBitmap を jpeg ファイルとして保存するコードがありますが、前に述べたように、グラフィックを圧縮したくありません。私の問題を解決するのを手伝ってください。