問題タブ [lru]
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.
algorithm - アルゴリズム LRU、このアルゴリズムを実装するために必要なビット数は?
アルゴリズム LRU について少し質問があります。4 ブロックのキャッシュがある場合、このアルゴリズムを実装するには何ビットが必要ですか?
caching - lru を使用した双方向セット連想キャッシュ参照
キャッシングの仕組みを理解しようとしています。私はこの概念をよりよく理解するために問題に取り組んでいます:
ブロックの長さが 1 ワードで、合計サイズが長さ 32 ビットの 16 ワードである 2 ウェイ セット連想キャッシュの場合、最初は空で、最も使用頻度の低い置換戦略を使用します。次のアドレスがヒットしたかミスしたかを示し、キャッシュの最終的な内容を一覧表示します。
住所:
- 00010001
- 01101011
- 00111111
- 01001000
- 00011001
- 01000010
- 10001001
- 00000000
- 01001000
- 00011100
- 00110000
- 11111100
- 00111010
まず、与えられた情報では、次の順序で 2 つのオフセット ビット、3 つのセット ビット、3 つのタグ ビットがあるように私には思えます (T=tag、S=set、O=offset): TTTSSSOO
例 (アドレス 1):
タグ=000 (0)、セット = 100 (4)、オフセット = 01 (1)
これが正しいと仮定すると、上記のアドレスを検索すると、次のようになります。
- ミス、セット 4、ブロック 0 に保存
- ミス、セット 2、ブロック 0 に保存
- ミス、セット 7、ブロック 0 に保存
- ミス、セット 2、ブロック 1 に格納
- ミス、セット 6、ブロック 0 に保存
- ミス、セット 0、ブロック 0 に保存
- ミス、セット 2、ブロック 0 に格納 (ブロック 0 は LRU でしたが、ブロック 1 は LRU になります)
- ミス、セット 0、ブロック 1 に保存
- セット 2、ブロック 1 のヒット数
- ミス、セット 7、ブロック 1 に格納
- ミス、セット 6、ブロック 1 に格納
- ミス、セット 7、ブロック 0 に格納 (ブロック 0 は LRU でしたが、ブロック 1 は LRU になります)
- ミス、セット 6、ブロック 0 に格納 (ブロック 0 は LRU でしたが、ブロック 1 は LRU になります)
キャッシュの最終的な内容は次のようになります。
セット 0: 01000010、00000000
セット 1: 空、空
セット 2: 10001001、01001000
セット 3: 空、空
セット 4: 00010001、空
セット 5: 空、空
セット 6: 00111010、00110000
セット 7: 11111100、00011100
私はこれに非常に苦労しているので、誰かが私が正しい軌道に乗っているかどうかを教えてくれることを願っています. これらが問題ないように見える場合は、同じ演習を試してみたいと思います。
EDIT1: 新しいアドレス。
- 000_100_01
- 000_010_01
- 000_001_10
- 000_001_01
- 001_010_11
- 000_001_00
- 000_010_11
- 000_010_01
- 001_110_00
- 000_100_11
- 000_000_01
- 000_101_11
- 011_010_11
どちらが好きですか:
- ミス、セット 4 ブロック 0 に格納
- ミス、セット 2 ブロック 0 に格納
- ミス、セット 1 ブロック 0 に格納
- ミス、セット 1 ブロック 1 に格納、ブロック 0 が LRU になる
- ミス、セット 2 に格納 ブロック 1、ブロック 0 が LRU になる
- ミス、セット 1 ブロック 0 に格納、ブロック 1 が LRU になる
- ミス、セット 2 ブロック 0 に格納、ブロック 1 が LRU になる
- ヒット、セット 2 ブロック 0 が LRU になる
- ミス、セット 6 ブロック 0 に格納
- ミス、セット 4 ブロック 1 に格納
- ミス、セット 0 ブロック 0 に格納
- ミス、セット 5 ブロック 0 に格納
- ミス、セット 2 ブロック 0 に格納、ブロック 1 が LRU になる
python - Memoize a function so that it isn't reset when I rerun the file in Python
I often do interactive work in Python that involves some expensive operations that I don't want to repeat often. I'm generally running whatever Python file I'm working on frequently.
If I write:
I get this behavior:
That is, rerunning the file clears the cache. This works:
but when the function is long it feels strange to have its definition inside a try
block. I can do this instead:
but it feels pretty contrived (for example, in calling the decorator without an '@' sign)
Is there a simple way to handle this, something like:
?
c - LRU 平方アルゴリズムでは、最近使用されていない行は常にゼロですか?
私のHacker's Delightのコピーは家にあり、私が見つけたWebリソースはこの詳細について明確ではありません.
よく知られている「行と列の正方形」アルゴリズムを使用して、次の 8 レベルの LRU を作成しました。(もっと良い名前はありますか?)。
最も使用頻度の低い行はすべてゼロになるという私の仮定の確認をお願いします。うまくいくようですが、満足のいくものであることを証明する数学がありません。
それで、これは正しいですか?または、各行の最小ハミング重みを計算する必要がありますか?
c# - LRU ページ置換アルゴリズム C#
LRU ページ置換をシミュレートする関数を作成しようとしています。私は LRU をよく理解していますが、コーディングに問題があります。次のものが LRU 関数に渡されます。ユーザーは、サイズ 20 の refString という配列に格納されている # の 1 ~ 9 の 20 文字の参照文字列を指定します。ユーザーが入力したフレーム数 (1 ~ 7) は、変数 numFrames に格納されます。最後に、frame と呼ばれるサイズ 7 の配列が渡されます。
これが私が持っているコードです。近い数を取得していますが、完全ではありません。多分誰かが助けることができます!
python - Web API クライアント ラッパーのキャッシュ アルゴリズム
Web API のクライアント ラッパーであるPython クライアント ライブラリを開発しました。あると便利な機能は、ローカル キャッシュ メカニズムです。これにより、ライブラリ クライアントが Web API でまったく同じ要求を呼び出すときに、時間と帯域幅を節約できます。さまざまな時期に。
要件はほとんどありません
- キャッシュを開発し (外部ライブラリなし)、Python 2.6/2.7 env を実行する必要があります
- ライブラリは統一されたインターフェースを提供するため、依存性が注入される外部キャッシュメカニズム (例: memcached) ラッパーを使用できます。
- キャッシュはスレッドセーフである必要があります
- キャッシュされるコンテンツは、Web API 応答の JSON ペイロードになります。
- Web API によって提供されるデータは、時間ごとに異なります。たとえば、現在観測されている都市の天気は 1 時間ごとに変化する可能性がありますが、15 日間の天気予報は 5 日ごとに変化する可能性があります。
使用できる最も単純なアルゴリズムは何ですか?
私は LRU (最近使用されていない) アルゴリズムについて考えていましたが、他の代替案を評価できると思います - 私はキャッシュの専門家ではありません!
database - シーケンシャルフラッディングとは?
これは簡単かもしれませんが、私はそれを理解することができません。シーケンシャルフラッディングの例を誰か教えてもらえますか? 私が読んでいる教科書やインターネットの情報源には、
バッファ フレームの数がファイル内のページ数よりも少ない場合、ファイルのすべてのページを読み取ることになります。これは、LRU と繰り返されるスキャンによって引き起こされる厄介な状況です。
# フレーム < ファイル内の # ページ。
LRU を使用すると、ファイルをスキャンするたびに、ファイルのすべてのページが読み取られます。」
しかし、それは正確には何ですか?なぜそれが起こるのですか?
android - Android LRUCache の取得
オブジェクトを格納する標準の LRUCache を Android に実装しました。各キーは、格納されたオブジェクトに関連付けられた一意の ObjectId です。私の問題は、キャッシュからオブジェクトを取得する唯一の方法は、ObjectId (イテレータなし) によるものであることです。getAll() メソッドを実装する最良の方法は何ですか? もう 1 つのオプションは、すべての ObjectId をリストのどこかに格納することです。これにより、リストを反復処理してすべてのオブジェクトを取得できますが、すべての ObjectId を保持する最良の方法は何でしょうか?
ありがとう!