问题标签 [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 投票
1 回答
128 浏览

language-agnostic - 确定性初始化和依赖注入(基于构造函数)

我正在处理的演示应用程序有一个很长的启动例程。在此期间,我试图用新想法替换的应用程序大量记录到控制台(想象一下:“现在正在加载数据......网状样条......登录到第三方服务......”)。

在基本上从头开始学习 DI 之后,我现在只需调用容器即可创建整个(!)对象图。顺便说一句,谢谢大家在这里提供这么多的想法和惊人的答案。这个社区摇摇欲坠。

但是现在,我想做的是再次使初始化确定性,这样我就可以登录我的工作流程(我使用的是 Workflow Foundation 4.0,因为我喜欢声明式风格以及我可以用图形向人们展示发生了什么的事实)当我加载数据时,网状样条和所有这些。

你认为拥有一个“StartupManager”是一种可接受的做法吗 - 类(现在我的架构中唯一的单例,我杀死了所有其他“instance getter”!)它将调用它注入的对象的辅助初始化方法(我在这里使用了 buildUp() 和基于属性的 DI)?

原因是我想在我的工作流活动中显式调用长初始化方法。在编辑器中看起来很棒,当我呈现时我的老板会很高兴(他没有要求,这是我的想法,周末做点事情,我觉得这很有趣)。

0 投票
3 回答
2911 浏览

random - LR:我可以使 LoadRunner 中的伪随机数具有确定性吗?

在 LoadRunner 场景中有几个随机源:

  • rand() 功能
  • 随机思考时间增量(运行时设置)
  • 随机起搏时间组件(运行时设置)
  • 随机参数(作为 VUGen 测试的一部分)

我使用这些功能,我可以忍受它们的伪随机性。但是,我不能接受这样一个事实,即包含至少其中一个功能的所有场景运行都是伪随机且不确定的,即对于给定的开始状态(随机种子),我希望两次运行生成完全相同的负载,包括时间(步调和思考时间)。所以我希望两次运行都基于完全相同的随机序列。这意味着我想自己播种所有随机生成器,作为每次运行初始化的一部分。

我可以使用srand() 为 () 设置种子值rand。在初始化时设置一个特定的(硬编码的)种子值总是导致由rand() 传递的相同序列——对于所有虚拟用户。如果我使用 VUser ID 号播种,我什至会rand为每个 vuser 获得不同的 () 序列,而对于每个用户,它们从运行到运行仍然是相同的。

LR 中的其他伪随机源,那些超出rand() 的呢?我是否有机会将它们全部播种,以便获得确定性的场景行为?

我认为这将有很大帮助。

如果没有这样的机制,就必须计划很长时间和/或非常高流量的测试场景,以便“平均”结果统计中的随机性(你同意这一点吗?),我整天都在做。

0 投票
2 回答
2404 浏览

sql - 如何检查 sql 查询是否具有确定性?

我所说的确定性是指查询将始终返回完全相同的结果集。有没有办法做到这一点?

0 投票
2 回答
192 浏览

ruby-on-rails - 如果按记录中的数字对记录进行排序,但有些记录的数字相同,那么顺序不是保证的,但不应该是随机的?

假设我们按记录中的数字对一些记录进行排序:

如果我们也不是按 排序Name,那么 John 和 Peter 的顺序就不能保证,但如果记录从未改变,它不应该是随机的吗?我认为在大多数环境中应该是正确的(也就是说,没有其他任何变化,并且排序进行了两次)。

也就是说,如果我们对它进行一次排序,它不会是 Peter 在 John 之前,第二次是 John 在 Peter 之前。

这是因为在 Ruby on Rails 环境中,如果从 DB 中获取记录,然后通过 Ruby 函数进行排序,并作为原始页面内容打印,则顺序是一种方式,但如果随后通过 AJAX 请求数据,则对于该数字字段中具有相同数字的记录,排序后的数组元素可以具有不同的顺序,这看起来很奇怪。

更新:如果数据来自数据库,那么在获取记录时数据库可能会有不可预测的顺序。但是,如果记录首先按主 ID 排序怎么办?此外,如果数据已经在数据结构中,我不知道任何常见的排序算法每次都会产生不同的排序顺序。也就是说,订单不保证但不是随机的。

0 投票
6 回答
104 浏览

c++ - UB 可以导致多个单线程应用程序运行产生不同的输出吗?

对于相同的输入,满足以下条件的代码是否可以为每次运行产生不同的输出?

  • 该代码是单线程的,尽管它确实链接到一个线程安全的运行时库。
  • 没有明确调用 rand() 或 time() 或它们的朋友。
  • 有一些堆内存分配。
  • 可能有一些(错误的)代码会导致未定义的行为。
0 投票
11 回答
9486 浏览

java - 确定性是什么意思?

我正在阅读 Java Hashmap 文档,但我不明白这句话。

请注意,HashMap 的迭代顺序是不确定的。如果您想要确定性迭代,请使用 LinkedHashMap。

确定性是什么意思?

0 投票
1 回答
472 浏览

mysql - 使用用户定义函数的 Mysql 查询 - 为什么函数被调用两次?

我在表 Entity 和 Contact 之间有 1:1 的关系(对应于 object 的继承)。fn_match(id) 是 UDF,它返回布尔值,如果记录匹配某些特殊条件(函数内的其他查询)则返回 true。这是一个查询:

它工作得很好,但加入会极大地破坏性能。我添加了日志记录,发现对于实体中的每条记录,fn_match 被调用了两次,其中 fn_match(id) = true。我可以修复它,为函数头添加确定性,但我曾经认为访问表数据的每个函数/存储过程都是非确定性的。

这个问题的正确解决方案是什么?

0 投票
12 回答
3452 浏览

c++ - 非确定性的来源

我所谓的确定性程序在不同的运行中产生了几个略有不同的输出之一。输入、编译器和计算机是不变的。我不确定哪个输出是正确的,因为它看起来总是合理的。

除了对 rand() 的杂散调用之外,这怎么可能呢?

0 投票
4 回答
13449 浏览

c# - C#中静态类初始化的顺序是确定的吗?

我做了一些搜索,我认为以下代码可以保证产生输出:

我已经运行了很多次,并且总是在代码部分上方得到输出;我只是想验证它会改变吗?就算在文字上,班级A和班级B都重新安排了?

是否保证第一次使用静态对象会触发其静态成员的初始化,然后实例化其静态构造函数?对于这个程序,A.X在 main 中使用会触发 的初始化,然后A.X依次初始化B.X,然后B()在完成初始化之后A.X,将继续执行A()。最后,Main()将输出A.X和BX`。

0 投票
4 回答
349 浏览

c# - 属性决定论

C# 中有什么方法可以将属性标记为确定性的吗?

我问的原因是我经常发现自己声明一个局部变量并将一个属性读入其中,而不是多次访问该属性。

有什么方法可以将属性装饰为确定性的,以便编译器可以优化对该属性的多次访问?我猜在这种情况下,该类需要是不可变的,并被这样装饰。

这是什至存在的东西还是我在抓着稻草?