問題タブ [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.
c - C (または任意の) コンパイラの決定論的パフォーマンス
最近のプロジェクトに取り組んでいるときに、顧客の QA 担当者が訪ねてきて、以前はあまり考えていなかった質問をしてきました。
使用しているコンパイラが C コードの機能と正確に一致するマシン コードを生成し、コンパイラが完全に決定論的であることをどのように確認しますか?
この質問に対して、私は常にコンパイラーを当然のことと思っていたので、まったく答えられませんでした。コードを取り込み、マシンコードを吐き出します。コンパイラが要求していない機能を実際に追加していないことをテストするにはどうすればよいですか? または、私が期待するものとはわずかに異なる方法でコードを実装するさらに危険なことはありますか?
これはおそらくすべての人にとって問題ではないことを認識しており、実際、答えは...「あなたはバレルを超えているので、それに対処する」だけかもしれません。ただし、組み込み環境で作業する場合は、コンパイラを暗黙のうちに信頼します。自分が正しいことを自分自身と QA に証明するにはどうすればよいですか?
algorithm - 確定的なガベージ コレクション アルゴリズムにはどのようなものがありますか?
決定論的とは、航空宇宙飛行ソフトウェアのような重要なリアルタイム ソフトウェアで使用できることを漠然と意味しています。ガベージ コレクター (および動的メモリ割り当て) は、非決定論的と見なされるため、飛行中のソフトウェアでは絶対にダメです。ただし、これについては進行中の研究があることを知っているので、この問題はまだ解決されているのでしょうか。
また、使用方法を制限するガベージ コレクション アルゴリズムも質問に含めています。
sql - SQL Server: SQL サーバーで日付をフロアしますが、確定性を維持します
(これはSQL Server の Floor a date に関連しています。)
DATETIME を無効にする決定論的式は存在しますか? これを計算列の数式として使用すると、次のようになります。
その列にインデックスを配置するとエラーが発生します。
キー列 'EffectiveDate' が非決定論的または不正確であるため、インデックスを作成できません。
ただし、DATEDIFF と DATEADD はどちらも、定義上は決定論的関数です。キャッチはどこですか?出来ますか?
sql - SQL 2005 がこの UDF が非決定的であると言うのはなぜですか?
私は次の機能を持っています:
しかし...
戻り値 (転置された結果):
IsDeterministic 0
正確 1
システム検証済み 1
システムデータアクセス 0
ユーザーデータアクセス 0
キャッシングの問題ではないことを確認するために、関数を数回削除して再作成しようとしました。CAST は、文字列 -> 整数に使用しているため、ここでは決定論的である必要があります。
私は完全に困惑しています、何かアイデアはありますか?
sql - What does it mean by "Non-deterministic User-Defined functions can be used in a deterministic manner"?
According to MSDN SQL BOL (Books Online) page on Deterministic and Nondeterministic Functions, non-deterministic functions can be used "in a deterministic manner"
The following functions are not always deterministic, but can be used in indexed views or indexes on computed columns when they are specified in a deterministic manner.
What does it mean by non-deterministic functions can be used in a deterministic manner?
Can someone illustrate how that can be done? and where you would do so?
c# - C++ と C# では、複数の条件チェックが所定の順序またはランダムな順序で実行されますか?
状況: C++ または C# での多くの基準による条件チェック:
私は常に、これらのチェックが実行される順序は保証されていないと信じてきました。したがって、必ずしも最初に condition1、次に condition2、次に condition3 というわけではありません。私は C++ の時代にそれを学びました。そう言われたか、どこかで読んだ気がします。
知るまでは、次の状況で発生する可能性のある null ポインターを考慮して、常に安全なコードを作成してきました。
だから私は書いていた:
not-null チェックが最初に実行され、その後インスタンス メソッドが呼び出されて 2 番目のチェックが実行されるかどうか確信が持てなかったためです。
現在、私たちの最高のコミュニティの心は、これらのチェックが実行される順序は左から右の順序で実行されることが保証されていると言っています.
とても驚いています。C++ 言語と C# 言語の両方で本当にそうなのでしょうか?
私が以前に聞いたバージョンを他の誰かが聞いたことがありますか?
algorithm - 一意かつ決定論的な方法で、2 つの整数を 1 つにマッピングする
2 つの正の整数 A と B を想像してください。これら 2 つを 1 つの整数 C に結合したいと考えています。
C に結合する他の整数 D と E は存在しません。したがって、これらを加算演算子で結合しても機能しません。例: 30 + 10 = 40 = 40 + 0 = 39 + 1 連結も機能しません。例: "31" + "2" = 312 = "3" + "12"
この組み合わせ演算も決定論的である必要があり (常に同じ入力で同じ結果が得られる) 、常に整数の正または負の側で整数を生成する必要があります。
c - プログラムで非決定論的な出力を引き起こす原因は何ですか?
マルチプロセスプログラムにバグがあります。プログラムは入力を受け取り、即座に出力を生成します。ネットワークは関与せず、時間参照もありません。このバグの原因を突き止めるのが難しいのは、たまにしか起こらないということです。
常に実行すると、正しい出力と誤った出力の両方が生成され、識別可能な順序やパターンはありません。
何がそのような非決定論的な振る舞いを引き起こす可能性がありますか?役立つツールはありますか?初期化されていない変数が使用されている可能性があります。どうすればそれらを見つけることができますか?
編集:問題は解決しました 。競合状態を提案してくれた人に感謝します。私のデザインがこれを防ぐと確信していたので、私はそれを考えませんでした。問題は、「waitpid」の代わりに「wait」を使用したことでした。そのため、あるプロセスが幸運にも期待していたプロセスよりも前に終了した場合、正しい順序が乱れることがありました。