JMeter的 - 当不使用缓存编译脚本(如果可用)
我想检查Cache compiled script if available
复选框是错误的,当知道,JMeter的 - 当不使用缓存编译脚本(如果可用)
以下Best practices也有一些情况下是高速缓存编译脚本不应该使用,但不是的例子使用${varName}
是错误的,我做了一个测试,它所取的值是更新后的值${varName}
而不是第一个值。
当使用JSR 223元,建议检查缓存编译 脚本(如果可用)属性,以确保脚本编译 如果底层语言支持它的缓存。在这种情况下,请确保 脚本不使用任何使用$ {varName}的变量,因为缓存 仅取得$ {varName}的第一个值。
有人知道一个真实的案例使用缓存是错误的吗?
EDIT
我检查使用$ {的varName}在脚本和有类似的结果有/无缓存:
我在的JMeter限定可变称为aa
具有值1,并且创建了一个脚本:
def aa = "2";
aa = "3";
log.info("${aa}");
值1是复选框的这两种情况下的回报,因此它不涉及到缓存
也尝试过与Beanshell(不编译语言没有def aa =“2”;)并得到相同的结果。
文档的含义是,每当$ {varName}具有不同的值时,新的条目将被存储在缓存中,最终会用无用的数据填充它。
因此,在这种情况下,它是错误的,$ {varName的}应与
瓦尔替换。获得(“varName的”)
其实我没有看到真正原因取消选中此选项提供你使用了正确的JMeter语法
该选项默认为未选中由于以上,也说明风险对于 “非共识” 的原因:
- https://bz.apache.org/bugzilla/show_bug.cgi?id=56554
- http://mail-archives.apache.org/mod_mbox/jmeter-dev/201212.mbox/%3CCAH9fUpZ7dMvuxq9U5iQYoBtVX7G-TqOx4aJjjOnPcp%3D5Fc%3D8Qw%40mail.gmail.com%3E
- http://mail-archives.apache.org/mod_mbox/jmeter-dev/201301.mbox/%3CCAH9fUpbnde3mnyKmHXwoQeL-SqZUA0Wt1%3D%3D-XMxQWq3ZAS6Pvw%40mail.gmail.com%3E
至于性能,它是完全一样的羯羊或不是你检查它不支持编译为第一件事JMeter的作用是使用复选框前的检查“supportsCompilable”一语,请参阅:
所以没有理由?此选项默认未选中 – user7294900
我通过编辑我的答案来回答。 –
当你使用一个脚本引擎,如果编译脚本不支持缓存你不应该使用缓存。由于只有Groovy是能够编制脚本,你应该勾选此框Groovy和勾去掉了其他引擎
Well-behaved Groovy engine should(代码块,没有任何意义将每个脚本将被调用时触发):
- 在运行时编译脚本,以避免解释每次
- 缓存编译脚本,以避免重新编译
- 重新编译脚本,如果任何变化正在向它提出的更新缓存。
将JMeter函数和变量内联到脚本中对于任何语言来说都有点危险,因为它可能会导致编译失败甚至更糟糕的结果,而这些结果并不是你期望的。如果Groovy JMeter变量与Groovy GString template的语法冲突
因此内联变量会导致在每次调用脚本时重新编译脚本的开销。
所以,请继续下面的JMeter的最佳实践,并记住一个多一点提示:避免脚本在可能为无脚本选项的性能表现一样快,Java那样,退房Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!指南。
当我查看其他语言支持缓存时,请参阅https://commonss.apache.org/,查看https://stackoverflow.com/questions/45708631/jmeter-script-engine-which-allow-caching-and-compilation查看jexl https://commons.apache.org/适当/公地JEXL/apidocs /组织/阿帕奇/公/ jexl3 /脚本/ JexlScriptEngine.html – user7294900
对不起,我还是没有得到它的时候是错的。看到我的**编辑**似乎$ {varName}的情况是不相关的 – user7294900
你读过我更新的答案吗?即使它起作用,它也会导致缓存中出现一个新条目 –
我添加了为什么它是这样的参考 –