問題タブ [defragmentation]
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 - ブロックされたファイル内のレコードを圧縮するための適切なアルゴリズムは何ですか?
固定サイズのブロックの束で構成された大きなファイルがあるとします。これらの各ブロックには、いくつかの可変サイズのレコードが含まれています。各レコードは 1 つのブロック内に完全に収まる必要があり、定義上、そのようなレコードは完全なブロックより大きくなることはありません。時間の経過とともに、レコードがこの「データベース」に出入りするにつれて、これらのブロックにレコードが追加されたり、ブロックから削除されたりします。
ある時点で、特に多くのレコードがデータベースに追加され、いくつかが削除された後、ブロックの多くが部分的にしか埋められない場合があります。
このデータベース内のレコードをシャッフルして、部分的に満たされたブロックをより適切に埋めることにより、ファイルの末尾にある不要なブロックを圧縮するための適切なアルゴリズムは何ですか?
アルゴリズムの要件:
- 圧縮は、元のファイルの代わりに発生する必要があり、その開始サイズからせいぜい数ブロック分以上ファイルを一時的に拡張する必要はありません。
- アルゴリズムは、すでにほとんどがいっぱいになっているブロックを不必要に妨害してはなりません
- ブロック全体を一度にファイルから読み書きする必要があり、書き込み操作は比較的高価であると想定する必要があります
- レコードをあるブロックから別のブロックに移動する場合、操作が中断された場合に「失敗した」圧縮の結果としてレコードが失われないように、開始位置から削除する前に新しい場所に追加する必要があります。(このようなレコードの一時的な重複は、回復時に検出できると仮定します)。
- この操作に使用できるメモリは、全体のファイル サイズの非常に小さな割合である、おそらく数ブロック程度です。
- レコードが 10 バイトから 1K バイトのオーダーで、平均サイズがおそらく 100 バイトであると想定します。固定サイズのブロックは 4K または 8K のオーダーであり、ファイルは 1000 のブロックのオーダーです。
windows - Windows ディスク パーティションのギャップ
Windows XP ディスク デフラグ ツールのレポートは、システムの多数のディスク パーティションでディスク使用量に一定のギャップがあることを示しています。発生する小さな一時的なギャップについて言及しているわけではありません。以下のディスク D では、問題のギャップは「最適化」という単語の下のギャップです。以下のディスク P では、ギャップは「定義前の使用」の下のものですが、より大きなものです。C パーティションにはこの異常はありません。サイズと配置パターンは明らかではありません。ファイル システムとデフラグ ツールの両方が回避する領域、無人地帯が存在するかのようです。これらのギャップは、毎日の使用と最適化に耐えます。これがページング ファイルからの残留物だとは思いません。とにかく、緑色で表示されるはずです。ごみ箱が空です。
何か案は?
ディスク D (20 ギガ):
ディスク P (40 ギガ):
sql - SQL Serverが作成したテーブルにインデックスを削除して作成する必要がありますか?
再構築とデフラグから残っている断片化を取り除くために、インデックスを削除して作成することを考えたので、スクリプトを作成しました。
作業が必要なクラスター化インデックスを識別し、インデックスと主キーを削除して、テーブルのインデックスと主キーを再構築します。
私が遭遇した問題は次のとおりです。SQLServerは、独自の命名システムを使用した統計に基づいて、独自のインデックスをかなり作成します。
質問:作成したインデックスのみを削除して作成するのか、それともすべてのインデックスを削除して作成したものだけを作成するのか、それともSQL Serverが作成したものを含むすべてのインデックスを削除して、 SQL Serverが作成したもの?
c++ - ビデオゲームでのテクスチャ ストリーミングのための C++ メモリ管理
これは「難しい」質問です。Web 上で興味深いものは何も見つかりませんでした。
会社でメモリ管理モジュールを開発しています。次世代コンソール (Xbox 360、PS3、PC... PC をコンソールと見なしています) 向けのゲームを開発しています。
将来、次のゲームでは、メイン コンソール メモリにすべてをロードすることができない大規模なゲーム ワールドのテクスチャ ストリーミングを処理する必要があります (今のところ PC については話していません)。
最初に、テクスチャの高解像度ミップマップ (ワールド データのサイズの約 70%) をストリーミングします。将来的には、ジオメトリ、小さなミップマップ、オーディオなどもストリーミングする必要があるかもしれません.
X360に焦点を当てた、その問題のためのメモリマネージャーを開発しています(PS3を介してホストメモリと関連する自動最適化GMMアロケーターを使用できるため)。
私が直面している問題は次のとおりです。テクスチャ ストリーミング用に特定のメモリ領域 (たとえば 64 メガバイト) を予約することに決め、その領域内のすべての割り当てと割り当て解除を処理したいと考えています。アプリケーションの開始時に領域を割り当てており、その領域は物理的に連続していることが保証されています (仮想だけでなく、そこにテクスチャを格納する必要があるため)。
ポインターの代わりにハンドルを使用して、自動最適化アロケーターを実装しました。時間は問題ではありません。問題はメモリの断片化です。ゲームでは、ストリーミング ターゲットを継続的にロードおよびアンロードするため、バッファーの最大量 (64 メガバイト) を使用したいと考えています。
このアロケーターを使用すると、割り当てられたスペースをすべて使用できますが、最適化ルーチンは許容できない時間 (フレームよりも長い 60 ミリ秒) で動作しますが、アルゴリズムはそれほど悪くはありません... 避けられない memcpy が多すぎます!
この問題を解決するソリューションを探しています。少なくとも良い論文、または事後分析、または私と同じ問題に直面した人を見つけたいと思います.
今、私は 2 つの戦略から選択しています: 1) 最適化ルーチンを専用スレッドに移動します (6 つの hw スレッドを使用する X360 には適していますが、ハードウェア スレッドのみを使用する PS3 には適していません... SPU を使用するように言わないでください!)領域のロック、移動中の領域へのアクセスなど、すべてのマルチスレッドの問題について...メモリ マネージャーは、フレームごとに予算内で実行できることを実行します。
誰かが彼の経験を教えてもらえますか?
operating-system - OS ファイルをディスクの先頭に移動する
特定のパーティション上のファイルを、読み取り/書き込みが高速なディスクの先頭に移動できるかどうかを知りたいです。
現在、ディスクの最初のパーティションに Windows Vista をインストールしており、作業関連のファイルやその他のもの用にいくつかのパーティションを追加しています。
これにより、OS パーティション (最初に作成された) がディスクの先頭に配置されることが保証されますか?
デフラグ プログラムはこれに役立ちますか、それともさまざまなパーティションがディスク上のファイルの場所を制限しますか?
c# - ディスク デフラグとディスク チェックのロジック
Windows のディスク最適化とディスク チェックの背後にあるロジックは何ですか? C# コーディングを使用して実行できますか?
c++ - C++ヒープアロケータとSTLの最適化
単純なインクリメントヒープアロケータを単純な圧縮デフラグツールと組み合わせて使用する、自己最適化メモリマネージャを作成しようとしています。
大まかなスキームは、最下位のメモリアドレスから上に向かってブロックを割り当て、最上位のメモリアドレスから下に向かって簿記情報を保持することです。
メモリマネージャはスマートポインタを返します-ブーストのintrusive_ptrは、実際のメモリブロックを指し、ブロックを簡単に移動できるように間接レベルを与える簿記構造体にとって最も明白なようです。
デフラグツールは、「生成」ブックマークからヒープを圧縮してプロセスを高速化し、一度に一定量のメモリのみをデフラグします。ブロック自体への生のポインタは、次のデフラグパスまで有効であるため、パフォーマンスが向上するまで自由に渡すことができます。
このための特定のアプリケーションはコンソールゲームプログラミングであるため、各フレームの最初または最後にデフラグパスを比較的安全に実行できます。
ですから、私の質問は、この種の割り当てスキームをSTLと組み合わせて使用した人がいるのではないかと思いますが、STLを完全に破壊してしまうのではないかと思います。std :: list <intrusive_ptr>がintrusive_ptrレベルで機能しているのを見ることができますが、stlリストノード自体の割り当てについては、next / prevポインターをオーバーライドして、intrusive_ptr自体にするか、またはこのより動的なものと並んで標準的なヒープアロケータ。
installation - NSISインストーラスクリプトの一部としてWindowsドライブを最適化しますか?
たくさんのファイルを含むソフトウェアをインストールする必要があります。私たちの経験によると、非常に断片化されたハードドライブでは、パフォーマンスが非常に低下します。そのため、インストーラー(NSISを使用して書き込む予定)に自動ディスクデフラグを含めたいと思います。デフラグコマンドを含めて、インストーラーの一部として結果を読み取るにはどうすればよいですか?
sql-server-2005 - SQLインデックスの最適化
SQL Server 2005でインデックスを最適化しようとしましたが、何も機能しないようです。ウィザードを使用して複数のメンテナンスプランを作成しましたが、ジョブは常に失敗します。私はこのサイトからスクリプトを実行しました。これは元々Microsoftからのものです。
オブジェクトエクスプローラーで特定のテーブルに移動し、[インデックス]フォルダーを選択して[再構築]を選択しても、正常に完了したと報告されていても、すべてのフラグメンテーション%は変更されません。
再構築されたインデックスの断片化は0%であるべきではありませんか?もしそうなら、なぜこのSQLは機能しないのでしょうか:
これは、選択したRebuildIndexによって生成されたSQLです。