問題タブ [deterministic]
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.
language-agnostic - 確定的な初期化と依存性注入 (コンストラクター ベース)
私が取り組んでいる私のデモ アプリケーションには、非常に長いスタートアップ ルーチンがあります。私が新しいアイデアに置き換えようとしているアプリケーションは、その間、コンソールに多くのログを記録します (想像してみてください: 「データを読み込んでいます... 網状のスプライン... サードパーティのサービスにログイン...」)。
DI を基本的にゼロから学習するために 1 日を費やした後、コンテナーへの 1 回の呼び出しで (!) オブジェクト グラフ全体を作成するようになりました。ここにいる皆さん、ところで、非常に多くのアイデアと驚くべき答えを提供してくれてありがとう. このコミュニティは揺れます。
しかし今、私がやりたいことは、初期化を再び決定論的にすることです。これにより、ワークフローにログインできます (宣言型のスタイルと、何が起こるかをグラフィックで人々に示すことができるという事実が好きなので、Workflow Foundation 4.0 を使用しています)データをロードするときは、スプラインなどを網状にします。
注入されたオブジェクトの二次初期化メソッドを呼び出す「StartupManager」クラス (現在、私のアーキテクチャで唯一のシングルトンであり、他のすべての「インスタンス ゲッター」を削除しました!) を使用することは、許容されるプラクティスだと思いますか?ここで buildUp() とプロパティベースの DI を使用)?
理由は、ワークフロー アクティビティで長い初期化メソッドを明示的に呼び出したいからです。編集者の見た目はすばらしく、私がそれを提示すると、上司はとても喜んでくれます (彼はそれを求めたわけではありません。週末に何かをするのが私の考えでした。また、とても楽しいと思います)。
random - LR: LoadRunner の疑似乱数を決定論的にすることはできますか?
LoadRunner のシナリオでは、ランダムのソースがいくつかあります。
rand
() 関数- ランダムな思考時間のデルタ (ランタイム設定)
- ランダム ペーシング時間コンポーネント (ランタイム設定)
- ランダム パラメータ (VUGen テストの一部として)
私はそれらの機能を使用しており、それらの疑似ランダム性を受け入れることができました。ただし、これらの機能の少なくとも 1 つを含むすべてのシナリオ実行が疑似ランダムかつ非決定論的に動作するという事実を受け入れることはできません。ペーシングと思考時間)。だから私は2つの実行がまったく同じランダムシーケンスに基づいていることを望みます. つまり、各実行の初期化の一部として、すべての乱数発生器を自分でシードしたいということです。
() を使用srand
して、() のシード値を設定できますrand
。init 時に特定の (ハードコードされた) シード値を設定するとrand
、すべての仮想ユーザーに対して () によって配信されるシーケンスは常に同じになります。VUser ID 番号をシードすると、rand
すべての vuser に対して異なる () シーケンスを取得することさえありますが、ユーザーごとに実行ごとに同じです。
rand
()以外の LR の他の疑似乱数ソースはどうですか? 決定論的なシナリオの動作を得るために、それらすべてをシードする機会はありますか?
それは大いに役立つと思います。
そのようなメカニズムがなければ、結果統計のランダム性を「平均化」するために、非常に長い、および/または非常にトラフィックの多いテストシナリオを計画する必要があります (これに同意しますか?) 私は一日中これを行っています.
sql - SQLクエリが決定論的かどうかを確認するにはどうすればよいですか?
決定論的とは、クエリが常にまったく同じ結果セットを返すということです。これを行う方法はありますか?
ruby-on-rails - レコードをレコード内の番号で並べ替えても、一部のレコードの番号が同じである場合、順序は保証されませんが、ランダムであってはなりませんか?
レコード内の番号でいくつかのレコードを並べ替えている場合を考えてみましょう。
で並べ替えも行わない場合Name
、JohnとPeterの順序は保証されませんが、レコードが変更されない場合はランダムに並べ替えるべきではありませんか?ほとんどの環境で当てはまるはずです(つまり、他に何も変更されておらず、並べ替えは2回行われます)。
つまり、1回並べ替えると、ジョンの前のピーターではなく、2回目はピーターの前のジョンになります。
これは、Ruby on Rails環境で、レコードがDBからフェッチされ、Ruby関数で並べ替えられ、元のページコンテンツとして出力される場合、順序は一方向ですが、後でAJAXを介してデータが要求される場合はソートされた配列要素は、その番号フィールドに同じ番号を持つレコードの場合、順序が異なる可能性があり、それは奇妙に思えます。
更新:データがdbからのものである場合、レコードがフェッチされるときにdbの順序が予測できない可能性があります。しかし、そもそもレコードがプライマリIDでソートされている場合はどうなるでしょうか。また、データがすでにデータ構造内にある場合、毎回異なる並べ替え順序を生成する一般的な並べ替えアルゴリズムはわかりません。つまり、順序は保証されていませんが、ランダムではありません。
c++ - UB によって、複数のシングル スレッド アプリの実行によって異なる出力が生成される可能性はありますか?
次の条件を満たすコードが、同じ入力に対して実行ごとに異なる出力を生成する可能性はありますか?
- コードはシングル スレッドですが、スレッド セーフなランタイム ライブラリにリンクしています。
- rand() または time() またはそれらの仲間への明示的な呼び出しはありません。
- いくつかのヒープ メモリ割り当てがあります。
- 未定義の動作を引き起こす (バグのある) コードが含まれている可能性があります。
java - 決定論的 とはどういう意味ですか?
Java Hashmap のドキュメントを読んでいますが、この文がわかりません。
HashMap の反復順序は非決定論的であることに注意してください。確定的な反復が必要な場合は、LinkedHashMap を使用します。
決定論的 とはどういう意味ですか?
mysql - user-defined-functionを使用したMysqlクエリ-なぜ関数が2回呼び出されたのですか?
テーブルEntityとContactの間に1:1の関係があります(これはオブジェクトの継承に対応します)。fn_match(id)はUDFであり、ブール値を返し、レコードがいくつかの特別な基準(関数内の追加クエリ)に一致する場合はtrueを返します。それはクエリです:
それはうまく機能しましたが、パフォーマンスを劇的に台無しにします。ロギングを追加しましたが、fn_match(id)=trueのエンティティ内のすべてのレコードに対してfn_matchが2回呼び出されたことがわかりました。関数ヘッダーに決定論を追加して修正することはできますが、テーブルのデータにアクセスするすべての関数/ストアドプロシージャは非決定論的であると考えていました。
この問題の正しい解決策は何ですか?
c++ - 非決定論の原因
私のおそらく決定論的なプログラムは、実行ごとにわずかに異なる出力の1つを生成します。入力、コンパイラ、およびコンピューターは変更されません。常に合理的に見えるため、どの出力が正しいかわかりません。
rand() への無駄な呼び出し以外に、どうしてこれが可能になるのでしょうか?
c# - C#での静的クラスの初期化の順序は決定論的ですか?
私はいくつかの検索を行いましたが、次のコードは出力を生成することが保証されていると思います:
これを何度も実行しましたが、常にコード セクションの上に出力が表示されます。確認したかったのですが、変更されますか?文章的にも、クラスA
とクラスB
が再配置されていますか?
静的オブジェクトを最初に使用すると、その静的メンバーの初期化がトリガーされ、続いてその静的コンストラクターがインスタンス化されることが保証されていますか? このプログラムではA.X
、 main で を使用すると の初期化がトリガーされ、次にA.X
が初期化され、 の初期化が終了した後、 に進みます。最後に、BX`を出力します。B.X
B()
A.X
A()
Main()
A.X
c# - プロパティの決定論
プロパティを決定論的としてマークする方法はC#にありますか?
私が尋ねる理由は、プロパティに何度もアクセスするのではなく、ローカル変数を宣言してプロパティを読み込むことがよくあるからです。
コンパイラがそのプロパティへの複数のアクセスを最適化できるように、プロパティを決定論的として装飾する方法はありますか?そのようなシナリオでは、クラスは不変であり、そのように装飾されている必要があると推測しています。
これは存在するものですか、それとも私はストローをつかんでいますか?