問題タブ [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.
c - memchr() は内部でどのように機能しますか?
背景: 私は、C の memchrとほぼ同じ機能の純粋な D 言語実装を作成しようとしていますが、ポインターの代わりに配列とインデックスを使用します。その理由は、 std.string がコンパイル時の関数評価で機能するようにするためです。D に不慣れな方のために説明すると、特定の制限が満たされていれば、コンパイル時に関数を評価できます。1 つの制限は、ポインターを使用できないことです。もう 1 つは、C 関数を呼び出したり、インライン アセンブリ言語を使用したりできないことです。コンパイル時に文字列ライブラリを機能させると、コンパイル時のコード生成ハックに役立ちます。
質問: memchr は内部でどのように動作して、これほど高速に動作するのですか? Win32 では、単純なループを使用して純粋な D で作成できたものはすべて、境界チェックの無効化、ループ展開などの明らかな最適化手法を使用しても、少なくとも 2 倍遅くなります。文字列内の文字を見つけるのと同じくらい簡単なことですか?
d - D プログラミング言語 IRC ライブラリ
D IRC ライブラリを探しています。はい、 dirclibがあることは知っていますが、残念ながら、これは言語のバージョン 1 または 2 と互換性がないようです (もう)。Ubuntu の 2.014 アルファで使用しようとすると、いくつかのエラーがスローされます。
アイデアやアドバイスはありますか?
performance - 小さな純粋関数を並列化するには?
現在の形式ではシングルスレッドであり、このプログラムの外側のループの反復ごとに内側のループで同じ純粋な関数を約 10 ~ 100 回呼び出す D2 プログラムがあります。呼び出し間にデータの依存関係はありません。つまり、他の呼び出しの結果を使用する呼び出しはありません。全体として、この関数は何百万回も呼び出されており、私のプログラムの主なボトルネックになっています。パラメータはほぼ毎回一意であるため、キャッシュは役に立ちません。
一見すると、これは並列化に最適な候補のように見えます。唯一の問題は、関数が呼び出しごとに約 3 マイクロ秒しかかからず、新しいスレッドを作成する待ち時間よりもはるかに短く、タスク プールにジョブを追加するオーバーヘッド (つまり、ミューテックスの取得、メモリの割り当て) をはるかに上回っていないことです。タスクに関する情報を保持し、タスク プールのキューで起こりうる競合に対処するなど)。このきめの細かい並列処理を利用する良い方法はありますか?
matrix - D プログラミング言語用の線形代数ライブラリ
最大約 100 x 100 の行列で行列演算を行うためのパッケージを探しています。
少なくとも、逆数、乗算、転置を行う必要があります。より高いパフォーマンスよりも、よりカプセル化されたインターフェイスを好みます。
file-io - プラットフォームに依存しないファイルロック?
私は非常に計算量の多い科学的な仕事をしていて、時々結果を吐き出します。仕事は基本的に同じことを何度もシミュレートすることなので、異なるOSを使用する複数のコンピューターに分割されます。すべてのコンピューターがNFS/Sambaを介して同じファイルシステムを参照できるため、これらすべてのインスタンスからの出力を同じファイルに送信したいと思います。制約は次のとおりです。
- 安全な同時追加を許可する必要があります。別のコンピューター上の他のインスタンスが現在ファイルに追加している場合は、ブロックする必要があります。
- パフォーマンスはカウントされません。各インスタンスのI/Oは、1分あたりわずか数バイトです。
- シンプルさは重要です。これの全体的なポイントは(純粋な好奇心を除いて)、すべてのインスタンスが異なるファイルに書き込み、これらのファイルを手動でマージするのをやめることができるようにすることです。
- ファイルシステムの詳細に依存してはなりません。NFSまたはSambaマウント上の不明なファイルシステムで動作する必要があります。
私が使用している言語は、重要な場合に備えてDです。私が見たところ、これを行うように見える標準ライブラリには何もありません。D固有の回答と一般的な言語に依存しない回答の両方が完全に受け入れられ、高く評価されています。