JMeter-何时不使用Cache编译脚本(如果可用)


问题内容

我想知道勾选Cache compiled script if available复选框的时间

按照最佳实践,在某些情况下不应使用Cache编译脚本,但是未使用的示例${varName}是错误的,我进行了测试,并且它采用的值是的更新值,${varName}而不是第一个值。

使用JSR 223元素时,建议检查“缓存编译的脚本”是否有可用属性,以确保在基础语言支持的情况下缓存脚本编译。在这种情况下,请确保脚本不使用任何使用$
{varName}的变量,因为缓存将仅采用$ {varName}的第一个值。

有人知道真实情况下使用缓存是错误的吗?

编辑

我在脚本中使用$ {varName}进行检查,无论是否进行缓存,都有类似的结果:

我在Jmeter中定义了aa以值1 调用的变量,并创建了一个脚本:

def aa = "2";
aa = "3";
log.info("${aa}");

在两种情况下都返回值1,因此它与缓存无关

还尝试了Beanshell(没有def aa =“ 2”;的非编译语言)得到了相同的结果。


问题答案:

文档的含义是,每当$ {varName}具有不同的值时,新条目就会存储在缓存中,最终将用无用的数据填充它。

因此,在这种情况下,这是错误的,应将$ {varName}替换为

vars.get(“ varName”)

实际上,如果您使用正确的JMeter语法,我看不出取消选中此选项的真正原因

由于上述风险以及“非共识”原因,默认情况下未选中此选项:

至于性能,无论您是否为不支持编译的语言检查它,都与JMeter所做的第一件事就是在使用复选框之前检查“
supportsCompilable”完全相同,请参见: