当我们使用JMeter / Response数据处理进行密集负载测试时,我们可能会非常小心我们选择的后处理器/脚本语言的类型。
在这篇文章中,我想说明这些后处理器/脚本语言如何影响测试的整体性能。

我们将比较以下后处理器和脚本语言。

  • BeanShell PostProcessor
  • BSF PostProcessor - Beanshell
  • BSF PostProcessor - Javascript
  • BSF PostProcessor - Groovy
  • JSR223 PostProcessor - Beanshell
  • JSR223 PostProcessor - Javascript
  • JSR223 PostProcessor - Groovy

测试计划:

正如我们在这篇文章中所做的那样,  我们将使用一个简单的测试计划,没有任何外部依赖/定时器等,如下所示,准确地分析这些后处理器的性能。

我使用JMeter 3.0进行此测试。

所有Latency和ResponseTime模拟都已设置为0。

我们使用虚拟采样器来模拟硬编码响应。[对于响应数据,我将文档放在此页面的文本中。它有超过56000个单词]。我们会做一个后处理器,在后处理器中,我们会使用这个分隔符“”将巨大的响应数据字符串拆分成一个数组。我们将迭代数组中的所有元素并调用toUpperCase()方法。[我知道这听起来很愚蠢。这里的目的是做一些非常耗时的操作]。

线程组循环计数设置为1000。我们将重复此过程1000次并测量所需的时间。

Beanshell PostProcessor:

我在测试中添加了Beanshell后处理器,如下所示。我跑了测试。测试花了50秒才完成。

BSF PostProcessor - 语言:Beanshell

我删除了Beanshell后处理器并添加了BSF Post处理器并选择了Beanshell语言。我跑了测试。测试花了54秒完成。

BSF PostProcessor - 语言:Javascript

使用Javascript,测试大约需要  46秒才能完成。

BSF PostProcessor - 语言:Groovy

使用Groovy,测试大约需要  24秒才能完成。

JSR223 PostProcessor

我使用JSR223 PostProcessor对Beanshell,Javascript和Groovy等不同语言进行了相同的测试。

结论:

在重复相同的测试几次之后,我得到如此处所示的结果。

从上面的结果来看,与Beanshell和Javascript相比,Groovy似乎表现得更好。我之前总是使用Beanshell进行前/后处理。 我在此之后修改了我的测试以使用Groovy引擎。  如果您的测试计划在前/后处理活动中消耗更多时间,则您获得的性能结果不可靠。如果我们使用这种方法来测试应用程序性能,使用不同的处理器/脚本语言,我们将为应用程序提供完全不同的性能指标。为了更好地执行JMeter测试/更准确的性能指标,建议使用Groovy。

JMeter - 后处理器/脚本语言 - 比较的更多相关文章

  1. Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)

    1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...

  2. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安

    CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...

  3. Jmeter(十七) - 从入门到精通 - JMeter后置处理器 -上篇(详解教程)

    1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...

  4. 后半部分样式和JS前半部分脚本语言

    样式 剩余样式: 1.<div style=display:"none"></div>:nono 是隐藏该元素内容,block是显示该元素内容 2.< ...

  5. Jmeter录制后的脚本调优

    当我们通过badboy或者HTTP代理服务器的方式录制的脚本,会发现脚本杂乱无章,图片.css.html以及各种我们不关心的脚本,因此就需要针对录制后的脚本进行调优 1.去除图片.html/css等不 ...

  6. Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)

    1.简介 前置处理器是在发出“取样器请求”之前执行一些操作.如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行.前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取 ...

  7. TCL脚本语言基础介绍

    Tcl简介(一):Tcl 语法 Tcl 语法 Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦,这片文章对 Tcl有很好的描述和说明.如 ...

  8. 一个Java编写的小玩意儿--脚本语言解释器(一)

    今天开始想写一个脚本语言编译器.在这个领域,我还是知道的太少了,写的这个过程肯定是艰辛的,因为之前从来没有接触过这类的东西.写在自己的博客里,算是记录自己的学习历程吧.相信将来自己有幸再回过头来看到自 ...

  9. Jmeter介绍以及脚本制作与调试

    目录 Jmeter介绍 Jmeter安装 Jmeter主要测试组件 Jmeter元件作用域与执行顺序 Jmeter运行原理 Jmeter脚本制作 Jmeter脚本调试 Jmeter介绍 Jmeter ...

随机推荐

  1. 【leetcode刷题笔记】N-Queens II

    Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe ...

  2. freeMarker(二)——模板开发指南之入门

    学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 模板开发指南-入门  1.模板+数据模型=输出 假设在一个在线商店的应 ...

  3. rsync 端口更换(默认873)

    一般使用默认端口的话, 在服务端的启动命令为: /usr/bin/rsync --address=192.168.1.23 --daemon 如果在客户端需要换另外的端口侦听, 则使用 /usr/bi ...

  4. docker 容器内服务自启动

    centos6/7 有区别先说6 centos6: 方式一:rc.local + 容器内的启动脚本 1.chkconfig docker on #docker开机自启动2.[root@master y ...

  5. Centos6.5 安装pip

    1.下载 sudo wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 2.安装  python get-pip.py 参 ...

  6. 百度地图设置div样式宽高为百分比不显示地图

    如题,不显示地图只要在样式代码里面加以 position:absolute; 代码就可以了 <style type="text/css"> body, html,#al ...

  7. Azure xplate cli创建虚拟机

    Azure的管理工具多种多样.其中Portal和PowerShell是经常使用的. 但用MAC和Linux的同学最喜欢的还是Bash环境. Azure也提供了跨平台的命令行工具:Azure xplat ...

  8. MySQL on Azure高可用性设计 DRBD - Corosync - Pacemaker - CRM (一)

    MySQL迁移到Azure上后,由于云的特性,在自建数据中心的MySQL的HA的方法在云上很多都不能部署. 这主要是因为,目前Public Cloud不支持:1. 共享存储:2. Multicast: ...

  9. [转]升级Flash Builder 4.6中的Flash Player版本

    Adobe自发布Flash Builder 4.6后,就暂停了Flash Builder新版本的发布.但AIR和FlashPlayer版本仍然保持不断的更新.在下载新的AIRSDK并覆盖到Flash ...

  10. C++中的构造函数小结

    对象的初始化 对象时类的实例,类是不占用空间的,对象是占用空间的. 因为类是抽象的,不占用空间的,所以我们不能再定义类的时候对对象进行初始化操作的. 但是,我们可以定义一个函数,在类实例化一个对象的时 ...