問題タブ [d]
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.
performance - What's the most efficient way to compare two blocks of memory in the D language?
I need a comparison function for blocks of memory for doing binary searches on arrays of bytes in the D programming language. It does not need to have any useful semantics. It only needs to be fast and be a valid comparison function (one that produces a total ordering). The blocks of memory to be compared are already known to be the same length.
C's memcmp
is actually pretty slow because it tries to preserve useful string comparison semantics, which I don't need. Below is the best I've come up with so far. Does anyone know of anything better, preferably w/o dipping into non-portable CPU-specific instructions?
Edit: I've read up on SSE and I don't want to use it for 3 reasons:
- It's not portable.
- It requires programming in ASM.
- The comparison instructions assume your data is floating points, which might be problematic if some data happens to match the pattern for a NaN.
static - 静的ifを持つD以外の言語はありますか?
static if
Dは興味深い言語機能だと思います。それは私の質問を促します.コンパイラがコードの強い概念を持ち、それらにアクセスするための言語機能があるコンパイル済み言語の他の例はありますか?
たとえば、次のコードはrepr
Pythonと同様のものを提供します。
これは、このような機能と比較して、コードをより動的にするための裏返しの方法である、オーバーロードが行うことに対する別のより一般的なアプローチを可能にするため、これはクールだと思います。たとえば、コンパイラはクラスに含まれるフィールドの数を認識していますが、ほとんどの言語では、コードがコンパイル時にその情報にアクセスする方法がありません。
警告: 最後の段落には意見が含まれていましたが、論争を誘発するのではなく、私の質問の動機と説明を提供するつもりです。他のコンパイル済み言語にそのような機能があるかどうかを知りたいだけです。
c++ - テンプレートのインスタンス化の肥大化が実際に問題になるのはいつですか?
静的にコンパイルされ、テンプレートのメタプログラミングが一般的な手法である C++ および D 言語では、テンプレートのインスタンス化の肥大化についてかなりの懸念があるようです。非常にリソースに制約のある組み込みシステムを除いて、それは主に理論的な問題のように思えます。埋め込まれた空間の外では、それが実際に問題であったことを誰かが証明できたという例をまだ聞いたことがありません.
テンプレートのインスタンス化の肥大化が実際に重要であり、測定可能で実質的に重大な悪影響があった例を、リソースが大幅に制限された組み込みシステム以外で提供できる人はいますか?
performance - D での低レベル ライブラリの実装に関するアドバイス (C/C++ ではなく)
プロジェクト用の D プログラミング言語の選択についてアドバイスが必要です。このプロジェクトは、多くの連想コンテナなどを含むデータベースに似た低レベルのライブラリです。したがって、効率は私にとって非常に重要です。
C++ や Python などの他の言語との互換性のために、ライブラリに C API を提供する必要があります。また、パフォーマンスを調整するために一部のセクションをプレーン C で記述する必要があることも予想されます。
D はこの仕事に非常に魅力的です。これらの要件を考慮する際に注意すべき落とし穴はありますか? D コンテナーのパフォーマンスは std::(map、vector、unordered_map など) と比較して、手動のパフォーマンス チューニングを考慮してどのようになりますか (たとえば、検索/挿入に std::map::lower_bound を使用するなど) )。
d - Dプログラミング言語用のゲーム/グラフィックエンジンはありますか?
Dプログラミング言語用のゲーム/グラフィックエンジンはありますか?
iphone - DプログラミングとiPhone
I've just started learning "D Programming". I'd like to deploy my programs on an iPhone. which has me wondering; is is possible to develop for a Mac or iPhone using D?. I'd like the application to be completely written D or at least minimal objective-c. Am I starting a hopeless battle by choosing D over the other mainstream languages (c/c++/java/objective-c/c#)?
memory-management - スピンロックはメモリアロケータに適していますか?
D プログラミング言語ランタイムの保守担当者に、メモリ アロケータ/ガベージ コレクタが通常の OS クリティカル セクションの代わりにスピンロックを使用するように何度か提案しました。これはあまり普及していません。スピンロックの方が優れていると私が考える理由は次のとおりです。
- 少なくとも私が行った合成ベンチマークでは、メモリ アロケータ/GC ロックの競合がある場合、OS クリティカル セクションよりも数倍高速です。編集:経験的に、スピンロックを使用しても、シングルコア環境では測定可能なオーバーヘッドさえありませんでした。おそらく、メモリアロケーターでロックを短時間保持する必要があるためです。
- メモリの割り当てや同様の操作には、通常、タイムスライスのごく一部、さらにはコンテキスト スイッチにかかる時間のごく一部しかかからないため、競合が発生した場合にコンテキストを切り替えるのはばかげています。
- 問題の実装でのガベージ コレクションは、とにかく世界を停止します。コレクション中に回転することはありません。
メモリ アロケータ/ガベージ コレクタの実装でスピンロックを使用しない正当な理由はありますか?
d - D 言語に関する最高のリソースはどこで入手できますか?
D 言語に関する最高のリソースはどこで入手できますか?
api - Valgrind内部の詳細なドキュメント
ValgrindのクライアントリクエストAPIへのDインターフェースを作成することを考えています。ヘッダーファイルをいじくり回してコンパイルを解除することで、最終的にはそれが何をしているのかを理解することができましたが、それらがどのように機能するかについての信頼できるドキュメントであるかどうか疑問に思います。(ところで、私はすでにこのドキュメントを見つけましたが、十分な情報がありません)
私が探しているのは、次のような質問に答えるでしょう。32ビットのマシンワードを返し、64ビットのfloatをとる関数をラップ/呼び出すためのマクロを生成するにはどうすればよいですか?