問題タブ [space-efficiency]

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.

0 投票する
6 に答える
428 参照

.net - フラットファイルのアーカイブに最適なオプション

現在、週に数千のフラット ファイルを受け取ります。私は、これらのレポートを実行し、従業員が処理して参照できるように PDF にエクスポートするシステムを持っています。

現在、これらをデータベースに一括ロードし、すべてのフィールド/フォーマットが有効であることを確認し、エクスポートして、次回の実行時にテーブルを切り捨てます。

私が疑問に思っているのは、このバルク ロードのプレーン テキスト データをおそらく 6 か月分保存する最もスペース効率の良い方法は、誰もが考えていることでしょうか?

毎日の SQL バックアップ、zip アーカイブなどの形式で、トラブルシューティングのために古いデータを常にリロードすることができました。

どんなアイデアでも大歓迎です。どんな提案も歓迎します。

0 投票する
6 に答える
1906 参照

algorithm - Big O 分析のアルゴリズム

結果のO表記と分析方法の独自性の両方に関して、驚くべき(タフで奇妙な)複雑さ分析を持っていると思うアルゴリズムはどれですか?

0 投票する
4 に答える
9797 参照

python - 文字列を漬けるより効率的な方法

pickleモジュールは、pickle化時に文字列エスケープ文字を使用しているようです。これは、たとえばnumpy配列では非効率になります。次のことを考慮してください

長さはそれぞれ1133文字と4249文字です。

z.dumps()は「\ x00 \ x00」(文字列の実際のゼロ)のようなものを明らかにしますが、pickleは文字列のrepr()関数を使用しているようで、「'\ x00 \ x00'」(ゼロはASCIIゼロ)を生成します。

つまり、(z.dumps()の「0」== False)および(cPickle.dumps(z.dumps())の「0」== True)

0 投票する
3 に答える
1945 参照

algorithm - アルゴリズムのスペース効率

アルゴリズムの教科書のどれもスペース効率についてあまり言及していないように思われるので、一定のメモリのみを必要とするアルゴリズムを求める質問に出くわしたとき、私は本当に理解していません。

コンスタントメモリを使用するアルゴリズムとコンスタントメモリを使用しないアルゴリズムのいくつかの例の例は何でしょうか?

0 投票する
4 に答える
851 参照

java - What is Java's lightest weight non-concurrent implementation of Iterable?

I need a class that implements Iterable, and does not need to be safe for concurrent usage. Of the various options, such as LinkedList, HashSet, ArrayList etc, which is the lightest-weight?

To clarify the use-case, I need to be able to add a number of objects to the Iterable (typically 3 or 4), and then something else needs to iterate over it.

0 投票する
7 に答える
6214 参照

algorithm - 配列内の要素のランクを効率的に見つけるには?

配列の各要素のランクを、同点の場合は平均して効率的に見つけるにはどうすればよいでしょうか? 例えば:

私が考えることができる唯一の方法は、3 つの配列を割り当てる必要があります。

  1. ソートする必要があり、所有していないため、入力配列の複製。
  2. 入力配列がソートされた順序を追跡するための配列。
  3. 返すランクの配列。

O(N log N) の時間と O(1) の補助空間 (つまり、割り当てなければならない唯一の配列は、返される配列だけです) でこれを行う方法を知っている人はいますか?上記の3つの配列?

0 投票する
16 に答える
14468 参照

encoding - 一連のランダム可変長バイナリ コードをエンコードする最もコンパクトな方法は?

List<List<Boolean>>を持っていて、それを可能な限りコンパクトな方法でバイナリ形式にエンコードしたいとしましょう。

読み取りまたは書き込みのパフォーマンスは気にしません。最小限のスペースを使いたいだけです。また、例は Java ですが、Java システムに限定されません。各「リスト」の長さは無制限です。したがって、各リストの長さをエンコードするソリューションは、それ自体で可変長データ型をエンコードする必要があります。

この問題に関連するのは、可変長整数のエンコードです。List<Boolean>それぞれを可変長と考えることができますunsigned integer

質問をよく読んでください。Java システムに限定されません。

編集

多くの回答が圧縮について話している理由がわかりません。私はそれ自体を圧縮しようとはしていませんが、ビットのランダムなシーケンスをエンコードしているだけです。ただし、各ビット シーケンスの長さは異なり、順序を維持する必要があります。

この質問は別の方法で考えることができます。ランダムな符号なし整数 (無制限) の任意のリストのリストがあるとします。このリストをバイナリ ファイルにどのようにエンコードしますか?

リサーチ

私はいくつかの読書をしましたが、私が本当に探しているのはユニバーサルコードであることがわかりました

結果

論文で説明されているElias Omega Codingのバリアントを使用します。正の整数の新しい再帰的ユニバーサル コード

小さい整数の表現が小さいほど、大きい整数とのトレードオフになることがわかりました。最初の整数の「大きな」表現を持つユニバーサルコードを選択するだけで、任意の大きな整数をエンコードする必要がある場合に、長期的には多くのスペースを節約できます。

0 投票する
3 に答える
1050 参照

performance - 高速読み込みのために DAWG データ構造を保存および取得する最良の方法

DAWGデータ構造にロードした500k以上のワードリストがあります。私のアプリは携帯電話用です。もちろん、この単語リストを DAWG にロードするために毎回すべての変換手順を繰り返したくはありません。これは、電話に単語リストを保持するには多くのストレージ スペースが必要であり、毎回 DAWG にロードするには多くの時間がかかるためです。 . そのため、DAWG のデータをファイルまたは DB に保存し、スペースを節約し、DAWG データ構造にすばやくロードできる形式で保存する方法を探しています。

各ノードを SQLite DB に保存できるという提案を 1 つ受け取りましたが、それが正確にどのように機能するのか、またそうするとどのようにすばやく取得できるのかわかりません。確かに、多くのクエリを実行したくありません。他のタイプの保存方法が良いでしょうか?また、シリアル化されたファイルを作成するか、ビットマップとして保存するという提案も受けました。

0 投票する
3 に答える
1734 参照

latitude-longitude - 緯度と経度のデータをどのように最も効率的に保存しますか?

この質問は、私が与えられた宿題から来ています。ストレージ システムは、次の 3 つのフォーマットのいずれかをベースにすることができます。

DD MM SS.S

DD MM.MMM

DD.DDDDD

できるだけ少ないバイト数を使用して、格納できるデータの量を最大化する必要があります。

私の解決策は、最初の形式に基づいています。緯度には 3 バイトを使用しました。DD には 8 ビット (-90 から 90)、MM には 6 ビット (0 から 59)、SS には 10 ビット (0 から 59.9) です。次に、経度に 25 ビットを使用しました。DDD に 9 ビット (-180 から 180)、MM に 6 ビット、SS.S. に 10 ビットです。このソリューションはバイト境界にうまく収まりませんが、次の読み取り値は前の読み取り値の直後に格納でき、8 つの読み取り値は 49 バイトしか使用しないと考えました。

他の人が思いつく方法に興味があります。このデータを保存するためのより効率的な方法はありますか? 注意として、オフセットベースのストレージを検討しましたが、問題は読み取り間で値がどれだけ変化するかを示していないため、変更が可能であると想定しています.

0 投票する
3 に答える
6109 参照

backup - 毎回変更される RSync 単一 (アーカイブ) ファイル

ファイルをバックアップし、FTP/SFTP/SCP プロトコルを介して Amazon S3、Rackspace Cloud Files、Dropbox、リモート サーバーなどのさまざまな外部の場所にファイルを転送するオープン ソースのバックアップ ユーティリティに取り組んでいます。

現在、増分バックアップを実行する機能のリクエストを受け取りました (作成されるバックアップが大きく、転送と保存に費用がかかる場合)。私は周りを見回しており、誰かがrsyncユーティリティについて言及しました。これでいくつかのテストを実行しましたが、これが適切かどうかわからないので、経験のある人から聞いてみたいrsyncです.

バックアップが作成されるとどうなるかを簡単に説明します。基本的に、MySQL、PostgreSQL、MongoDB、Redis などのデータベースのダンプを開始します。ファイルシステムからいくつかの通常のファイル (画像など) を取得する場合があります。すべてが整ったら、すべてを単一の .tar にバンドルします (さらに、 and を使用して圧縮および暗号化しますgzip) openssl

すべてが完了すると、次のような単一のファイルが作成されます。
mybackup.tar.gz.enc

今、このファイルをリモートの場所に転送したいと考えています。目標は、帯域幅とストレージ コストを削減することです。1GBでは、この小さなバックアップ パッケージのサイズがほぼ同じであると仮定しましょう。したがってrsync、これをリモートの場所に転送し、ファイルのバックアップをローカルで削除するために使用します。明日、新しいバックアップ ファイルが生成され、過去 24 時間にさらに多くのデータが追加されたことが判明し、新しいファイルを作成すると、サイズmybackup.tar.gz.encが最大になっているように見えます。1.2GB

さて、私の質問は:200MB過去 24 時間に追加されたものだけを転送することは可能ですか? 次のコマンドを試しました:

rsync -vhP --append mybackup.tar.gz.enc backups/mybackup.tar.gz.enc

結果:

mybackup.tar.gz.enc 1.20G 100% 36.69MB/s 0:00:46 (xfer#1, to-check=0/1)

送信 200.01M バイト
受信 849.40K バイト
8.14M バイト/秒
合計サイズは 1.20G
スピードアップは 2.01

を見るとsent 200.01M bytes、データの「追加」は適切に機能していると言えます。私が今疑問に思っているのは1.2GB、既存のバックアップにどれだけの量と何を追加するかを把握するために全体を転送したのか、それとも実際に転送しただけなの200MBかということです。全体を転送した場合、単一の大きなファイルでユーティリティを1.2GB使用するのとどう違うのかわかりません。scp

また、私が達成しようとしていることが可能な場合、どのフラグをお勧めしますか? で不可能な場合rsync、代わりに使用することをお勧めできるユーティリティはありますか?

どんなフィードバックでも大歓迎です!