Tag: 性能测试

性能问题:“java.text.MessageFormat.format”vs“StringBuilder”

我想知道MessageFormat或StringBuilder类的比较。 假设一个例子我有一个字符串。 对于性能明智的哪一个很快: java.text.MessageFormat.format或StringBuilder(“Test “).append(“Hello “) ? String txt = java.text.MessageFormat.format(“Test {0}”,” Hello”) String txt1= new StringBuilder(“Test “).append(“Hello “) 我只是想知道在最佳实践或性能明智的情况下使用哪一个

在什么情况下Java性能会随着内存的增加而降低?

我们正在DEV环境中加载测试Java 1.6应用程序。 JVM堆分配为2Gb,-Xms2048m -Xmx2048m。 在负载测试下,应用程序运行平稳,从不使用超过1.25Gb的堆,垃圾收集完全正常。 在我们的UAT环境中,我们使用相同的参数运行负载测试,唯一的区别是JVM,它分配了4Gb,-Xms4096m -Xmx4096m,否则,硬件与DEV完全相同。 但是在负载测试期间,性能非常糟糕,应用程序几乎吞噬了整个堆,并且垃圾收集运行猖獗。 我们一遍又一遍地运行这些测试,消除了可能影响性能的所有可能症状,但结果是一样的。 在什么情况下可以这样呢?

静态块与静态方法 – 初始化静态字段

出于好奇,我测量了静态块和静态方法初始化器之间的性能。 首先,我在两个独立的java类中实现了上述方法,如下所示: 第一: class Dummy { static java.util.List lista = new java.util.ArrayList(); static { for(int i=0; i < 1000000; ++i) { lista.add(new Integer(i)); } } } public class First { public static void main(String[] args) { long st = System.currentTimeMillis(); Dummy d = new Dummy(); long end = System.currentTimeMillis() – st; System.out.println(end); } } 第二: […]

处理时间,延迟和响应时间的含义和计算公式

任何人都可以从下图中validation处理时间,延迟和响应时间公式。我对响应时间公式有一些疑问。 如果您与我的这些公式有冲突,请给我certificate参考。

等待页面元素(xpath)在Selenium Webdriver中显示的最有效方法是什么?

我正在使用Java和Selenium Webdriver来测试单页Web应用程序的function。 因此,很明显,元素会动态地从DOM中注入和删除。 我知道我可以使用类似的代码使用WebDriverWait等待一个元素出现在DOM中(非常简洁的模板我写了稍微改变的GitHub ): public void waitForElement() throws Exception { /* Inject the following snippet in any web page to test the method Press me */ System.setProperty(“webdriver.gecko.driver”, “C:\\Program Files (x86)\\Mozilla Firefox\\geckodriver.exe”); WebDriver driver = getDriver(); WebDriverWait wait = new WebDriverWait(driver, 10); // 10 can be reduced as per Test Specifications driver.get(“http://www.google.com”); WebElement response = […]

如何在1秒钟内发送4000多个请求?

我有一个HTTP GET request 。 我需要在1秒内将请求发送到应用程序服务器超过4000次。 我正在使用JMeter发送这些请求。 每次使用嗅探器工具( Wireshark )进行每次测试时,我都会采用空灵痕迹。 我试图从一台机器,多台机器(并行)甚至分布式模式实现这一目标。 实际上,JMeter的结果不是我关注的问题。 此测试的关注点是在嗅探器工具上看到4000请求在一秒内命中服务器。 在使用以下JMeter测试计划时,我在1 sec的空灵痕迹中发现了近2500请求。 Number of Threads= 4000 Ramp-Up Periods = 0 (Though it is depricated) Loop count= 1 当我使用线程数为2500 ,我在空灵跟踪中的一秒内得到了近2200 request命中服务器。 服务器对该请求的响应不是我关注的问题。 我只是想确保JMeter发送的4000请求在一秒钟内到达应用服务器。 更新: 案例1:(4000个主题) Number of Threads= 4000 Ramp-Up Periods = 0 Loop count= 1 案例1的输出: JMeter(查看表中的结果) :启动4000个请求2.225秒。 虚拟跟踪 :4000个请求命中服务器4.12秒。 案例2:(3000个主题) JMeter(查看表中的结果) :1.83秒启动3000个请求。 […]

如何解读分析结果?

我使用NetBeans和VisualVM运行内存Profiler并收到了结果但是没有线索如何分析其结果,我研究了这篇文章,但它没有教导或提供如何解释结果的线索。 我还发现了这篇关于在Netbeans 4上解释结果的文章,但我正在寻找一篇包含更多细节的文章,或者是一种解释以下结果的方法。

if(null check)-else vs try catch(NullPointerException)哪个更有效?

以下哪三项function更有效; public String getmConnectedDeviceName1() { if(null != mServerDevice) { return mServerDevice.getName(); } else { return null; } } public String getmConnectedDeviceName2() { return mServerDevice == null ? null : mServerDevice.getName(); } public String getmConnectedDeviceName3() { try{ return mServerDevice.getName(); } catch(NullPointerException e) { return null; } } 请回复具体可接受的逻辑。

Java – System.out对性能的影响

我已经看到了这个问题 ,它有点类似。 我想知道它是否真的是影响我的应用程序性能的一个重要因素。 这是我的情景。 我有这个Java Web应用程序可以从电子表格上传数千个数据,每个行从上到下读取。 我正在使用System.out.println()在服务器端显示应用程序当前正在读取的行。 – 我知道创建一个日志文件。 实际上,我正在创建一个日志文件,同时在服务器的提示符下显示日志。 是否还有其他方法可以在提示符下打印当前数据?

服务时间与线程数成正比

我的系统是带有超线程的i5-Dual核心。 Windows向我展示了4个处理器。 当我一次由单个线程运行单个优化的cpu绑定任务时,其服务时间始终显示为35ms。 但是,当我将2个任务同时切换到2个线程时,他们的服务时间显示为70毫秒。 我想问我的系统有4个处理器,那么为什么在2个线程运行teir任务的情况下服务时间是70,而2个线程应该在2个处理器上运行而没有任何调度开销。代码如下。 CPU绑定任务如下。 import java.math.BigInteger; public class CpuBoundJob implements Runnable { public void run() { BigInteger factValue = BigInteger.ONE; long t1=System.nanoTime(); for ( int i = 2; i <= 2000; i++){ factValue = factValue.multiply(BigInteger.valueOf(i)); } long t2=System.nanoTime(); System.out.println("Service Time(ms)="+((double)(t2-t1)/1000000)); } } 运行任务的线程如下。 public class TaskRunner extends Thread { CpuBoundJob job=new CpuBoundJob(); public […]