問題タブ [contiguous]
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.
python - Python は、連続したメモリ位置に同様のオブジェクトを保存しますか?
Python は同様のオブジェクトをより近いメモリ位置に格納しますか? idオブジェクトが類似しているため、たとえばlistsとtuplesは、タイプ のオブジェクトよりも互いに近いstrです。
c++ - 32B チャンク、連続および非連続メモリ アクセス
大きな行列 (8192x8192) 用の組み込み関数を使用して、C++ で行列 - 行列 (32 ビット浮動小数点数) 乗算関数を作成しました。最小データ サイズは、すべての読み取りおよび書き込み操作で 32B です。
アルゴリズムをブロッキング アルゴリズムに変更して、8x8 ブロックを 8 つの YMM レジスタに読み込み、ターゲット ブロックの行 (ターゲットとして別の YMM レジスタ) で乗算を実行し、最終的に 8 つの結果を別のレジスタに蓄積してメモリに格納します。
質問:連続していないアドレスから 32B チャンクを取得しても問題ありませんか? 次のように読むと、パフォーマンスが大幅に変わりますか?
それ以外の
キャッシュではなく、メモリの読み取り速度を意味します。
注: fx8150 を使用していますが、1 回の操作で 32B 以上を読み取れるかどうかはわかりません。
mpi - ネストされた STL ベクトルに連続してデータを割り当てる
すべてのデータが連続するように 3 次元行列を格納したいと考えています。これは、MPI を使用してマトリックスをマスター ノードに送信し、すべての小さなマトリックスを 1 つの大きなマトリックスに連結する必要があるためです。複数の int や double などをメモリ内で連続している場合にのみ送信できるため、ネストされたベクトルでは面倒です。
次に、マスターノードでデータを受信します。id_of_data
現在、マトリックスを格納するために標準ベクトルを使用しています。
だから私は今のところ std::vector に固執しようとしています。配列/ポインターを使用してこれを簡単に解決できることはわかっていますが、それに頼る前に std::vectors を使用してこれを試してみたいと思います。行列の次元は一定であるため、動的割り当てについて心配する必要はありません。
このようなポインターを使用して、ベクターの要素にアクセスできます
しかし、「反対」を行う方法がわかりません。何かのようなもの
私がやりたいことは
そして、ネストされたベクトルがこのデータを指すようにします。
c - char 配列の 2D 配列を連続してメモリに割り当て、1 回の呼び出しでファイルに書き込むにはどうすればよいですか
ここで、新しい C の質問をします。char 配列の配列があり、1 回の呼び出しでファイルに書き込めるようにメモリ内に連続してメモリを予約したいと考えています。
わかりました、それは私が持っているものです:
このコードを教えてください。
前もって感謝します
c - 動的行列割り当て - malloc を使用した int の連続ブロックの割り当てが機能しない
ints の 2D マトリックスを作成し、 を使用してメモリを同じものに割り当てようとしていますmalloc()。
マトリックスを次のようにしたいの{{-4,0},{-3,0},{-2,0},{-1,0},{1,0},{2,0},{3,0},{4,0}}
ですが、後で変更できるようにしたいので、を使用して連続ブロックを動的に割り当てようとしていますmalloc()。私が作成した:
私の関数は type を返すことができscores_tableます。
これは私のコードです:
問題は、関数が返されるだけ-4で、その理由がわかりません。私は何を間違っていますか?
c++ - 変数はスタック上で連続していますか?
以下のコードの配列 a と b がメモリ内で連続しているかどうか疑問に思っています。
a[0]、a[1]およびa[2]連続して同じである必要がありますが、に関連してどこに割り当てられるbかについての保証はありますか?ba
そうでない場合、強制して互いに隣接させる方法はありますaかb? つまり、スタック内で隣同士に割り当てられるようにします。
arrays - 配列内の連続した数値のフラグメントまたはシーケンスをカウントします
たとえば、[0,1,2, 5,6,7, 9,10,11] のような整数の配列があるとします。理想的な世界では、それらは並べ替えられますが、アルゴリズムが並べ替えられていない状態で機能する場合は、さらに優れています。
このグループにいくつの「フラグメント」があるかを知る必要があります。配列がファイルのバイト配列を構成していると想像してください。このファイルはどの程度断片化されていますか?
上記の例では、3 つのグループ/フラグメントをカウントします。
私の目標は、ディスク上の「ファイル」の総数、次に「フラグメント」の総数を合計してから、断片化を計算することです (1 - (files / fragments)と思います。10 個のファイル、10 個の断片 = 0% の断片化 - ただし、各ファイルが20 個のフラグメントを作る 2 つに分割され、50% のフラグメント化が発生します)。
したがって、私が探しているアルゴリズムでは、int の配列を調べて、連続する数値グループがいくつあるかを計算する必要があります。
何か案は?
c - 連続したメモリ ブロックへのファイルの書き込み
ext4 ファイルシステムのディスクに 100 MB のファイルを継続的に書き込んでいます。ディスクがいっぱいになると、最も古いファイルを削除して新しいファイルを書き込んでいます。ファイルが横に大きくなることはありません。これを行うと、しばらくするとファイルシステムが静かに断片化されます。ext4 のすべてのフォーマット オプションを調べましたが、なぜこのような断片化が発生するのかわかりませんでした。
基本的に、問題を単純化するために、ループで次のことを行います。
連続したブロックでデータをディスクに書き込むようにファイル システムに指示する方法はありますか? 他の記事も見ましたがよくわかりません。fallocate() の代わりに malloc() を使用する必要がありますか?