问题标签 [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.

0 投票
22 回答
1909 浏览

c - C(或任何)编译器确定性性​​能

在处理最近的一个项目时,一位客户 QA 代表拜访了我,他问了我一个我以前没有真正考虑过的问题:

您如何知道您使用的编译器生成的机器代码与 c 代码的功能完全匹配并且编译器是完全确定的?

对于这个问题,我完全没有回答,因为我一直认为编译器是理所当然的。它接收代码并输出机器代码。我怎样才能开始测试编译器实际上并没有添加我没有要求的功能?或者更危险地以与我期望的方式略有不同的方式实现代码?

我知道这对每个人来说可能并不是一个真正的问题,实际上答案可能只是......“你已经过了桶并处理它”。但是,在嵌入式环境中工作时,您隐含地信任您的编译器。我如何向自己和 QA 证明我这样做是正确的?

0 投票
10 回答
5385 浏览

algorithm - 有哪些确定性垃圾收集算法?

通过确定性,我含糊其词的意思是可以用于关键的实时软件,如航空航天飞行软件。垃圾收集器(以及与此相关的动态内存分配)是飞行软件中的大禁忌,因为它们被认为是非确定性的。但是,我知道对此正在进行研究,所以我想知道这个问题是否已经解决。

我还在问题中包括了任何对它们的使用方式施加限制的垃圾收集算法。

0 投票
1 回答
1629 浏览

sql - 用户定义的函数 SQL Server 2005 被错误地标记为非确定性?

这个问题相关,我决定检查我的数据仓库中的 UDF(这在很大程度上应该是确定性的),我发现了几个不应该的。

例如:

显示在此查询中:

为什么是这样?

0 投票
6 回答
3020 浏览

sql - SQL Server:在 SQL Server 中确定日期,但保持确定性

(这与在 SQL server 中设置日期有关。)

是否存在确定性表达式来确定 DATETIME?当我将其用作计算列公式时:

在该列上放置索引时出现错误:

无法创建索引,因为键列“EffectiveDate”不确定或不精确。

但是 DATEDIFF 和 DATEADD 根据定义都是确定性函数。问题在哪里?是否可以?

0 投票
2 回答
5415 浏览

sql - 如何确定从 varchar 到 datetime 的转换?

根据这个问题的传统和文档,如何使这个函数具有确定性:

或者这个(因为字符串/日期文字 - 是的,我也试过'1900-01-01'):

0 投票
3 回答
1196 浏览

sql - 为什么 SQL 2005 说这个 UDF 是不确定的?

我有以下功能:

但...

返回(结果转置):

确定性 0

精确 1

IsSystemVerified 1

系统数据访问 0

用户数据访问 0

我尝试多次删除并重新创建该函数,以确保它不是一些缓存问题。CAST 在这里应该是确定性的,因为我将它用于字符串-> 整数。

我完全被难住了,有什么想法吗?

0 投票
4 回答
15286 浏览

sql - “可以以确定的方式使用非确定性用户定义函数”是什么意思?

根据 MSDN SQL BOL (Books Online) page on Deterministic and Nondeterministic Functions,非确定性函数可以“以确定的方式”使用

以下函数并不总是确定性的,但当它们以确定性方式指定时,可用于索引视图或计算列的索引。

非确定性函数可以以确定性方式使用是什么意思?
有人可以说明如何做到这一点吗?你会在哪里这样做?

0 投票
4 回答
4136 浏览

c# - 在 C++ 和 C# 中,多个条件检查是按预定顺序还是随机顺序执行的?

情况:在 C++ 或 C# 中使用许多条件检查条件:

我一直认为执行这些检查的顺序并不能保证。所以不一定是第一个条件1,然后是条件2,然后才是条件3。我在使用 C++ 的时候就学会了它。我想我被告知或在某处读过它。

直到知道我一直编写安全代码来解释以下情况下可能出现的空指针:

所以我在写:

因为我不确定非空检查是否会首先运行,然后才会调用实例方法来执行第二次检查。

现在,我们最伟大的社区人士告诉我,这些检查的执行顺序保证以从左到右的顺序运行。

我很惊讶。C++ 和 C# 语言真的如此吗?

有人听过我以前听过的版本吗?

0 投票
19 回答
121570 浏览

algorithm - 以独特且确定的方式将两个整数映射为一个

想象两个正整数 A 和 B。我想将这两个组合成一个整数 C。

不能有其他整数 D 和 E 与 C 结合。因此将它们与加法运算符结合是行不通的。例如 30 + 10 = 40 = 40 + 0 = 39 + 1 串联也不起作用。例如“31”+“2”=312=“3”+“12”

这种组合操作也应该是确定性的(总是用相同的输入产生相同的结果)并且应该总是在整数的正侧或负侧产生一个整数。

0 投票
7 回答
2954 浏览

c - 什么会导致程序中的非确定性输出?

我在多进程程序中有一个错误。该程序接收输入并立即产生输出,不涉及网络,也没有任何时间参考。是什么让这个错误的原因难以追查是它只是偶尔发生。

如果我不断地运行它,它会产生正确和不正确的输出,没有可辨别的顺序或模式。

什么会导致这种不确定的行为?有没有可以提供帮助的工具?有可能存在未初始化的变量。我如何找到那些?

编辑:问题已解决,感谢任何建议 Race Condition的人。我没有想到它主要是因为我确信我的设计可以防止这种情况发生。问题是我使用了“wait”而不是“waitpid”,因此有时,当某个进程幸运地在我期望的进程之前完成时,事情的正确顺序就会变得疯狂。