<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LoadRunner TnT &#187; TnT Admin</title>
	<atom:link href="http://www.loadrunnertnt.com/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.loadrunnertnt.com</link>
	<description>Performance Testing, LoadRunner Tips &#38; Tricks</description>
	<lastBuildDate>Mon, 08 Mar 2010 07:57:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Do you know you can work on the parameter files directly?</title>
		<link>http://www.loadrunnertnt.com/how-tos/do-you-know-you-can-work-on-the-parameter-files-directly/</link>
		<comments>http://www.loadrunnertnt.com/how-tos/do-you-know-you-can-work-on-the-parameter-files-directly/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 07:57:02 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[How-Tos]]></category>
		<category><![CDATA[LoadRunner]]></category>
		<category><![CDATA[Parameterization]]></category>
		<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=739</guid>
		<description><![CDATA[Do you know you can work on the parameter files manually both on and LoadRunner (LR) and Quick Test Professional (QTP)?  What we are referring to is that you can make changes to the parameter list via the file system instead of going through the Vugen or QTP interface.  Sometimes when you have a huge [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo3.gif"><img class="alignleft size-full wp-image-740" title="company_hp_logo" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo3.gif" alt="" width="64" height="55" /></a>Do you know you can work on the parameter files manually both on and <strong>LoadRunner (LR)</strong> and <strong>Quick Test Professional (QTP)</strong>?  What we are referring to is that you can make changes to the parameter list via the file system instead of going through the Vugen or QTP interface.  Sometimes when you have a huge list of data that you want to test (especially in LoadRunner), it becomes an overwhelming task where you have to manually key in the values into the parameter list.  By knowing how to work with the parameter files directly, you can save a lot of time!<span id="more-739"></span></p>
<p><strong>LoadRunner </strong>– The parameter file is stored in the script directory as .dat file extension.  It can be opened with a simple text editor like Notepad as it is stored in pure text format.  Therefore, you can manipulate the files via the Notepad.  You can also use office applications such as Microsoft Excel or OpenOffice.org Calc to work on the file.  This greatly the amount of work required for maintaining a long list of data.</p>
<p><strong>Quick Test Professional</strong> – The parameter file is also stored in the script directory as an excel file, which will be an .xls file extension.  Being an excel file, it can be opened by office applications like Microsoft Excel.  Again, if you do not have money to purchase a licensed Microsoft product, you can always use open source products like OpenOffice.org Calc as an alternative tool as it is still able to work with .xls files.</p>
<p>We hope that by providing you such tips, you will be able to work efficiently with large list of data (that is especially prevalent in LoadRunner)!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/how-tos/do-you-know-you-can-work-on-the-parameter-files-directly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Planning a Load Test – Part 2</title>
		<link>http://www.loadrunnertnt.com/planning/planning-a-load-test-%e2%80%93-part-2/</link>
		<comments>http://www.loadrunnertnt.com/planning/planning-a-load-test-%e2%80%93-part-2/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:36:03 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Planning]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Bottleneck]]></category>
		<category><![CDATA[Load Testing]]></category>
		<category><![CDATA[Monitoring]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=730</guid>
		<description><![CDATA[Following our previous post on planning a load test, we are throwing in more points that you should consider when planning for a load test.

What is the total user base?  What is the concurrent user base? – Now after working the maths out, do you required a load test.  Example, is a 5 concurrent user [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/planning-150x150.jpg"><img class="alignright size-full wp-image-731" title="planning-150x150" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/planning-150x150.jpg" alt="" width="88" height="88" /></a>Following our previous post on <a href="../planning/planning-for-a-load-test/">planning a load test</a>, we are throwing in more points that you should consider when planning for a load test.<span id="more-730"></span></p>
<ul>
<li><strong>What is the total user base?  What is the concurrent user base?</strong> – Now after working the maths out, do you required a load test.  Example, is a 5 concurrent user base an effective load test?  Is it worth the effort to generate a script that emulates 5 concurrent users?  Your customer may want you to run a load test for 5 users even though it is not effective to run that kind of load test.  However, if it is in the contract, you may have obliged it.  If they are willing to pay for that service, then it’s a plus point!</li>
<li><strong>Do the available load testing tools support your system in a load test?</strong> – A very strange question to ask.  Most tools are unable to support asynchronous application and map applications.  Either you may have to purchase more licenses to run the load test like in LoadRunner, find alternative sources or write scripts to emulate the load.  There are multiple ways to run a load test however may require additional effort (which translates to additional time).  Most tools are useful in coordinating and reporting which your scripts may not be able to achieve.</li>
<li><strong>What is the environment that you will be conducting the load test?</strong> – At times, your load test may be conducted in a scale-down production environment which you may know.  The load test results may not be a good representation of the true performance of the load test.  However, most of the times, running in production is a no-no and it is good to align everyone’s (stakeholders, customers, etc.) expectation of the load test.</li>
<li><strong>Where do you want the load to be generated to?</strong> – For a web application, there are multiple layers that you can access the system.  You can access the normal URL that can be the virtual IP address from a central web server.  You can enter at the load balancer or the web server layer.  Lastly, you can enter at the application server layer.  Where you want the load to enter can help you determine the layer that can be causing the performance problem.  By stepping up from the application layer, you can determine stage-by-stage the layer as the source of bottleneck.</li>
<li><strong>What do you want to monitor?</strong> – There are so many things that you can monitor in an infrastructure.  Which one do you want to focus on your analysis effort on first?  Do you want to monitor all sub-systems or target your effort to the most possible source such as the database?  Setting up monitors takes effort.  What&#8217;s more tedious is the effort required to analyze the monitoring results that you have collected!  Therefore, do take note and factor the duration and effort!</li>
<li><strong>Do you know the backbone network infrastructure?</strong> – This information is usually not available to a load tester.  But if you know this, you can least prepare your team that the load test will bound to meet (or not bound to meet) performance issues during the load test. They can be ineffective load balancing, small bandwidth available, invisible proxy that limits bandwidth, etc.  If you do not know this information, it is best to work on those you know such as the method previously mentioned by running the load test stage-by-stage.</li>
<li><strong>Is your load test conducted in a wireless environment?</strong> -  A wireless environment may be limited by the number of access point and the bandwidth available per wireless network. You need to know if the wireless will become a potential bottleneck in the amount of clients that can be generated into the system before your load test.</li>
<li><strong>Do you have a base set of data to use in a load test?</strong> – Most often after a load test, the data in a database will likely be messed out.  Therefore, it is advisable to create a backup of a working set of data in the database for you to reload after each load test.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/planning/planning-a-load-test-%e2%80%93-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tracking Transaction Response Time in GUI Vuser</title>
		<link>http://www.loadrunnertnt.com/how-tos/tracking-transaction-response-time-in-gui-vuser/</link>
		<comments>http://www.loadrunnertnt.com/how-tos/tracking-transaction-response-time-in-gui-vuser/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 08:22:40 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[How-Tos]]></category>
		<category><![CDATA[GUI Vuser]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=721</guid>
		<description><![CDATA[In our earlier post, we’ve mentioned that Quick Test Professional (QTP) scripts can be used in load testing in LoadRunner.  The scripts are developed in QTP and port into LoadRunner for usage where they are called GUI Vuser.  Executing GUI Vuser in a load test requires the GUI Vuser protocol.  One of the key features [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo2.gif"><img class="alignleft size-full wp-image-724" title="company_hp_logo" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo2.gif" alt="" width="64" height="55" /></a>In our earlier post, we’ve mentioned that <strong><a href="../concepts/using-qtp-with-loadrunner-for-load-testing/">Quick Test Professional (QTP) scripts can be used in load testing in LoadRunner</a></strong>.  The scripts are developed in QTP and port into LoadRunner for usage where they are called GUI Vuser.  Executing GUI Vuser in a load test requires the GUI Vuser protocol.  One of the key features of LoadRunner scripts is the ability to track the timing of your individual transaction in the script and generally, you will want to perform the same tracking in the GUI Vuser script.<span id="more-721"></span></p>
<p>Now, if you are proficient in LoadRunner, you may miss out on the details of how to go creating the start-stop transaction for the GUI Vuser script as the details are actually found in the QTP User Manual under the section, “Measuring Transaction” of HP Quick Test Professional User Guide – Volume 2 instead of LoadRunner manual.  In anyway, this is possible and only achievable via amending the scripts in QTP because Vugen will not be able open (read) QTP scripts.</p>
<p>Two ways you can insert a transaction.</p>
<ul>
<li>Via <strong>Keyword View</strong> – You can use <strong>Start Transaction </strong>icon <strong>&gt; Insert Transaction</strong> at the step that you want the transaction to start measuring.   Subsequently, you will use Stop Transaction icon to stop the measurement.</li>
<li>Via <strong>Expert View</strong> – You can use Services.StartTransaction &#8220;Transaction Name&#8221; and Services.EndTransaction &#8220;Transaction Name&#8221; to encapsulate where the start and end measurement.  “Transaction Name” is the name you give to defined for the transaction and this will appear when you run the GUI Vuser script in LoadRunner.</li>
</ul>
<p>With the above information, you should be slightly more familiar with <strong>Quick Test Professional (QTP)</strong> integrating with <strong>LoadRunner</strong>.  However, again there may be more things that need to be considered and I may have left out.  Do feel free to feedback and experiences and anything that I missed out when using QTP in load testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/how-tos/tracking-transaction-response-time-in-gui-vuser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s QTP?</title>
		<link>http://www.loadrunnertnt.com/products/what%e2%80%99s-qtp/</link>
		<comments>http://www.loadrunnertnt.com/products/what%e2%80%99s-qtp/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 08:20:28 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Products]]></category>
		<category><![CDATA[Licenses]]></category>
		<category><![CDATA[Object Spy]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[VB Script]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=712</guid>
		<description><![CDATA[Quick Test Professional (QTP) is another product from HP/Mercury (originally from Mercury Interactive) that provides automated functional testing capabilities.  The current version at the time of this writing is QTP version 10.0.  Generally, QTP is a record and playback tool similar to LoadRunner.  Although they look similar in terms of record and playback, they differ [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo1.gif"><img class="alignleft size-full wp-image-714" title="company_hp_logo" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo1.gif" alt="" width="64" height="55" /></a>Quick Test Professional (QTP)</strong> is another product from HP/Mercury (originally from Mercury Interactive) that provides automated functional testing capabilities.  The current version at the time of this writing is <strong>QTP version 10.0</strong>.  Generally, QTP is a record and playback tool similar to <a href="../products/whats-loadrunner/">LoadRunner</a>.  Although they look similar in terms of record and playback, they differ greatly in terms of what is recorded and what is playback.  QTP identify and records objects on the windows and rewrite the process of launching the object in a script (VB).  Example, QTP identifies and recognizes the click activity of the button on the web-browser or the web-application.  However, LoadRunner records whatever request made after the button is clicked (although <strong>Web Click &amp; Script protoc</strong>ol supports this).<span id="more-712"></span></p>
<p>During replay, the script will then be replayed like a <a href="http://technet.microsoft.com/en-us/scriptcenter/default.aspx">Windows VB Script</a>, launching the windows and activating the buttons as what is being recorded.  A sound knowledge of VB script is actually helpful in maintaining the scripts however not necessarily needed as QTP is relatively easy to use.  A tip here is you can actually use VB script in Windows to run automation without even using QTP.  It works the same way but a little low-level work is required and you need to understand the various ways the windows and objects are called in the Windows environment.</p>
<p>In QTP, you can add check points to determine if your application response as intended.  You can also use output values similar to the concept of correlation in QTP to handle dynamic data.  The output values are also used to be input values for the next step depending on how the test case is designed.</p>
<p>As for the licenses, they worked in two ways.  Either you use a <strong>Seat license</strong> or a <strong>Concurrent license</strong>.  The seat license is tied to the machine that installed the license while the concurrent license requires a license server to be available for it to retrieve the license information.  The license will decide the type of application you can record; generally called an Add-In.  QTP has various Add-In to suit the needs of the customer.  The common one is Web, Java script and ActiveX.  Other supported technologies that require an Add-In are Java, Oracle, SAP, etc.</p>
<p>Of all the virtues of using QTP, you will still need to be careful on the following and use it correctly:</p>
<ul>
<li><strong>Resolution of the      recording machine and replay machine MUST be the same</strong> – QTP rely on the resolution      of the machines to recognize the coordinates and size of the objects.  Problem will arise when the resolution      of the recording machine and replay machine is different.  Example, the script was recorded in 1024      x 768 resolution while it was replayed in a 1280 x 800 resolution may      result in the script generating error as the objects have changed their      coordinates.</li>
<li><strong>Iteration of the      script requires the start and end point to be the same </strong>– For a script to iterate      successfully, the script should be recorded in a way that the start and      end point are the same.  Example,      the script starts off with the login page and proceeds with login and some      activities then logout to return to the login page.  In this manner, the script will be able      to iterate with the next set of value such as a new login account.</li>
<li><strong>Context</strong>-<strong>sensitive – </strong>Context sensitive menus may require the use of <strong>Object Spy</strong> feature in QTP.  Context sensitive menu such as      mouse-over menu that will show the sub-menu.  This will require pressing “Crtl-Key”      when using the Object Spy and inserting the action (and object) into the      script.  However, we recommend      recording in a lower granularity (in analog) to capture as much objects as      you can before proceeding to use the Object Spy.</li>
<li><strong>Preparation of      initial test data</strong> – Most often people ignored the need for a baseline set of data      for testing.  After each functional      (regression) test, the data needs to be refreshed to a clean set before      the script can work again.</li>
<li><strong>Still dependent      on a well-designed test case – </strong>To make the tool really useful, the tool      still highly depends on a well-designed test case.  Without a well designed test case, the      downstream activities such as recording and modifying may not serve its      purpose well.</li>
</ul>
<p>The information should give you an overview of how <strong>QTP</strong> works and what you should take note after purchase (or even before purchase).  We hope that it will be useful to you and do share with us on anything related to QTP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/products/what%e2%80%99s-qtp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Achieving High Performance Application in Java Coding! – Part 3</title>
		<link>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding-%e2%80%93-part-3/</link>
		<comments>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding-%e2%80%93-part-3/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 15:22:07 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[optimizing]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=694</guid>
		<description><![CDATA[Code with performance in mind!  Follow these next 7 good coding practises that can be easily achieved for high performance!

Beware of “Thread.run()” versus the real intend of “Thread.start()” – We may unknowingly code the thread as “run()”.  This will cause the thread to run sequentially instead of concurrently. Beware of this!  Use “Thread.start()” to allow [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/web_coding_collage-150x150.jpg"><img class="size-full wp-image-698 alignright" title="web_coding_collage-150x150" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/web_coding_collage-150x150.jpg" alt="" width="81" height="81" /></a>Code with performance in mind!  Follow these next 7 good coding practises that can be easily achieved for high performance!<span id="more-694"></span></p>
<ul>
<li><strong>Beware of “Thread.run()” versus the real intend of “Thread.start()”</strong> – We may unknowingly code the thread as “run()”.  This will cause the thread to run sequentially instead of concurrently. Beware of this!  Use “Thread.start()” to allow the thread to run concurrently.</li>
<li><strong>Use “String.length ()  == 0” instead of “String.equals(“”)”</strong> – Both constructs do the same thing of comparing if any characters exists for the string. However, the first construct, “String.length() == 0” is more efficient than the latter one.</li>
<li><strong>Avoid calling “String.toCharArray()”</strong> – “toCharArray()” method is inefficient as the method reallocates the entire array stored in the string.  However, sometimes this is necessary.  Therefore, as a rule, avoid using “toCharArray()” method if possible.  If not possible, do use it with care.</li>
<li><strong>Place “try/catch/finally” block outside loop &#8211; </strong>Placing &#8220;try/catch/finally&#8221; blocks inside loops can slow down the execution of code. Do take note that moving the &#8220;try/catch/finally&#8221; block outside the loop can change program behaviour. An exception that has the “try/catch/finally” block outside the loop will terminate early.  On the other hand, the &#8220;try/catch/finally&#8221; block inside the loop may cause the program to continue iterating over the loop even after an exception has occurred.</li>
<li><strong>Use “StringBuffer.Append ()” instead of “+=” operators for concatenating strings </strong>– “Append()” has better improvement over “+=” operators and its recommended to use it instead of “+=” operators for concatenating strings.</li>
<li><strong>Do not use “StringBuffer” as constants </strong>– Dynamically resizable strings are unnecessary for constant strings (as they do not change).  Instead, use “String” for non-modifiable string constants.</li>
<li><strong>Do not open or close JDBC connections in loops </strong>– It is inefficient to open and close a connection in loop.  Instead, the connection should be opened before the loop and closed after the loop to avoid redundant calls make to the database.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding-%e2%80%93-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using QTP with LoadRunner for Load Testing</title>
		<link>http://www.loadrunnertnt.com/concepts/using-qtp-with-loadrunner-for-load-testing/</link>
		<comments>http://www.loadrunnertnt.com/concepts/using-qtp-with-loadrunner-for-load-testing/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 07:01:53 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[FAQs]]></category>
		<category><![CDATA[GUI Vuser]]></category>
		<category><![CDATA[LoadRunner]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[QTP]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=682</guid>
		<description><![CDATA[In this post, we shall cover the basic knowledge of using Quick Test Professional (QTP) for load testing with LoadRunner.   Unlike conventional protocols in LoadRunner where you record in Vugen, modify, port into Controller and run the execute button, you will need to do a few more stuff in order to get the setup right [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo.gif"><img class="alignleft size-full wp-image-684" title="company_hp_logo" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/02/company_hp_logo.gif" alt="" width="64" height="55" /></a>In this post, we shall cover the basic knowledge of using <strong>Quick Test Professional (QTP) </strong>for load testing with <strong>LoadRunner</strong>.   Unlike conventional protocols in LoadRunner where you record in Vugen, modify, port into Controller and run the execute button, you will need to do a few more stuff in order to get the setup right and running.   This knowledge will aid you in planning, budgeting, finding resources and minimizing any hiccups when setting up for such load test.<span id="more-682"></span></p>
<ul>
<li><strong>QTP scripts are developed in QTP not in LoadRunner Vugen</strong> – You won’t be able to record and replay a QTP script in Vugen.  All the recording and modification has to be done on QTP.  Once the modification of the QTP script is completed, it will be ported into LoadRunner Controller as GUI Vuser for load testing.</li>
<li><strong>QTP is required to install in the Load Generators (LG) </strong>– The load generators will be required to install QTP as they are used to run the scripts.</li>
<li><strong>Load Generators will be required to set the same resolution to the machine that developed the QTP script </strong>– As QTP is object sensitive, the resolution of the LG is required to be the same with the machine that was initially used to develop the QTP script to avoid any problems arising from missing objects (due to a different resolution)</li>
<li><strong>[1] GUI Vuser license is required for LoadRunner and QTP concurrent license is required for QTP </strong>– This is the 1<sup>st</sup> setup approach and budgeting for your licenses.  The total amount of Vuser that you wanted to generate will be the same for both LoadRunner and QTP.  Meaning, if you want to run 50 concurrent users using GUI Vuser protocol, you will need 50 GUI Vuser license and 50 QTP Concurrent license.  In this setup, the LG will create 50 instances of QTP to run the GUI Vuser.  This is described in “What licenses are required to run a scenario with GUI Vusers” from <a href="http://support.openview.hp.com/support.jsp">HP Software Support</a>.</li>
<li><strong>[2] GUI Vuser license is required for LoadRunner, QTP seat/concurrent license is required for QTP and Windows Terminal License is required for Windows </strong>– This is the 2<sup>nd</sup> setup approach and budgeting for your licenses.   For a 50 concurrent user load test, you will need 50 GUI Vuser protocol, <em>50 Windows Terminal License</em> and 1 QTP license.  In this setup, the QTP license is merely used to develop the script.  The LG will create 50 remote desktop connections and each of these connections will run 1 GUI Vuser.  This setup utilizes remote desktop functionality to emulate the virtual users.  I believed that HP Support does not really state about the licenses required from Windows Terminal and this is additional cost for you to factor if you are going though this mode.  Personally, I experimented using Windows Server 2003 (that is capable of 3 remote connections by default) with this approach and it works for me.  On the server, the remote connections are established and the QTP script launches the browser for testing.  (I wonder if this is permissible in the first place and like to know if anyone else is doing it.  If you got some input on this, please feel free to shout it here!)</li>
</ul>
<p>With the above information, you should be slightly more familiar with <strong>Quick Test Professional (QTP)</strong> integrating with <strong>LoadRunner</strong>.  However, there may be more things that need to be considered and I may have left out.  Do feel free to feedback and experiences and anything that I missed out when using QTP in load testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/concepts/using-qtp-with-loadrunner-for-load-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Achieving High Performance Application in Java Coding! – Part 2</title>
		<link>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding-%e2%80%93-part-2/</link>
		<comments>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding-%e2%80%93-part-2/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 07:25:01 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[finalize]]></category>
		<category><![CDATA[garbage collection]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[optimizing]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[reflection]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=666</guid>
		<description><![CDATA[Following our high performance application in java coding:

Handle the appropriate exceptions (checked); do not leave it to the unchecked exceptions – When an exception is thrown, the runtime system will exhaustively search all the methods on the call stack for the appropriate exception handler.  This is expensive and thus we want to minimize the search [...]]]></description>
			<content:encoded><![CDATA[<p>Following our <a href="../coding/achieving-high-performance-application-in-java-coding/">high performance application in java coding</a>:<a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/web_coding_collage-150x1502.jpg"><img class="alignright size-full wp-image-702" title="web_coding_collage-150x150" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/web_coding_collage-150x1502.jpg" alt="" width="71" height="71" /></a><span id="more-666"></span></p>
<ul>
<li><strong>Handle the appropriate exceptions (checked); do not leave it to the unchecked exceptions</strong> – When an exception is thrown, the runtime system will exhaustively search all the methods on the call stack for the appropriate exception handler.  This is expensive and thus we want to minimize the search in the call stack in finding the appropriate exception handler to improve performance which can be achieved by throwing and catching the appropriate exceptions (checked exceptions).  Do not leave exception handling as an after-thought or code-as-you-go during development.</li>
<li><strong>Do not incorporate exception handling as control flow</strong> – As mentioned earlier, exceptions are expensive and should only be used for abnormality (planned and unplanned).  An if-then-else construct will perform better without the exception handling as there is no need to transfer control to locate the appropriate exception handling.   As such, review the codes and remove any throw statements from the coding that are used in an if-then-else construct.</li>
<li><strong>Avoid and remove the use of Reflection API in the codes</strong> – Reflection involves types that are dynamically resolved, which restricts optimization in certain JVMs.  Consequently, reflective operations have slower performance than non-reflective counterparts.  Therefore, unless there is a dire need for reflection to be used in the java program, it is best to leave it out if you need a high performance program.</li>
<li><strong>Let the system decide the garbage collection</strong> – If possible, remove any attempt to call system.gc(). system.gc() triggers a full collection , which includes tracing all live objects in the heap and sweeping and compacting the old generation. This can be a lot of work. In general, it is better to let the system decide when it needs to collect the heap, and whether or not to do a full collection.  Note: system.gc() merely signals (marks) the java program to do garbage collection, but it will not be an immediate garbage collection taking place.</li>
<li><strong>Reduce memory by avoiding the use of finalizers </strong>– An object is in the <em>finalized</em> state if it is still unreachable after running the finalize method, if any, has been run.  The finalized object is then awaiting deallocation and deallocation will not take place until the finalizer is run which is dependent on the VM.  The use of finalizer will extend the lifetime of the <em>finalized</em> object and it can be counter-intuitive when no deallocation takes place and when you intended to have the object being short-lived.   In order to avoid these short-lived objects being extended during the lifetime of the heap memory, it is best to consider the use of finalizers or free the resources explicitly.   (Source: <a href="http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html">Appendix A, The Truth About Garbage Collection</a> and <a href="http://www.ibm.com/developerworks/library/j-jtp01274.html">Java theory and practice: Garbage Collection and Performance</a>)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding-%e2%80%93-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Planning for a Load Test</title>
		<link>http://www.loadrunnertnt.com/planning/planning-for-a-load-test/</link>
		<comments>http://www.loadrunnertnt.com/planning/planning-for-a-load-test/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 07:13:20 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Planning]]></category>
		<category><![CDATA[Bottleneck]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[Load Testing]]></category>
		<category><![CDATA[LoadRunner]]></category>
		<category><![CDATA[probe]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=662</guid>
		<description><![CDATA[Seldom, we discuss about the planning and implementation of the load test in our site.  As such, we are taking a change in this and will be touching on some considerations you as a performance tester/test manager/consultant should be thinking for every load test.  These considerations enable you to smooth up the process of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/planning.jpg"><img class="alignleft size-thumbnail wp-image-663" title="planning" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/planning-150x150.jpg" alt="" width="89" height="89" /></a>Seldom, we discuss about the planning and implementation of the load test in our site.  As such, we are taking a change in this and will be touching on some considerations you as a performance tester/test manager/consultant should be thinking for every load test.  These considerations enable you to smooth up the process of the entire load test and reduce any load test risks associated with it.   More than often, we focus on gathering the customers requirements for the load test such as user amount to generate, how long the load test will be conducted, where will it be conducted, the location that the virtual users will generate from, etc… That is basic information.  However, additional information will be required to smoothen the load test project and below are some of the additional considerations, you as a performance tester/test manager/consultant should be asking yourself or client.<span id="more-662"></span></p>
<ol>
<li><strong>Do you have sufficient hardware</strong>? – How may load generators are      required for the entire load test?  Refer      to this document from HP Support, <em><a href="http://support.openview.hp.com/selfsolve/document/KM767319">“Is resource      (cpu and memory) footprint information available to help in estimating the      load generators required for load testing with LoadRunner?”</a> </em>for      estimating the load generators required by multiplying the observations      with the total number of virtual users generated in the test.   In addition to the processor      utilization recommended in the document, do watch the memory and network      consumption of the load generators.        The network interface card (NIC) can become a bottleneck for load      generation.  A 1GB NIC will      definitely generate and receive more load than a 100MB NIC.  Therefore, do a check on the machines      assuming the load generator roles and make appropriate measures to prevent      the NIC in becoming the bottleneck.        With the above, you will get a rough gauge of the required resource      for your test.</li>
<li><strong>Do you need spare hardware?</strong> – Do cater some spare machines if      additional load generators are required, such as an additional of 5 load      generators.  This is to stand by in      the event of increasd virtual users and machine malfunction.</li>
<li><strong>Remember that it’s a team effort!</strong> – Can you secure human resources      for the load test?  You will need      the web, application and database server teams to be around to observe the      system behavior during the test or to assist in any reboot or refresh      activities for the system.  Network      and firewall/security team may be required to ensure that connectivity is      allowed for the load test.    Therefore, in the planning, you have to      get the relevant parties to commit the human resources!</li>
<li><strong>Installation of LoadRunner</strong> – This require administrative or      power users privileges in order for installation to be successful.  That raise another set of questions:      Will you be able to install LoadRunner in the premises?  Who can you look for to install the      LoadRunner program?  Do you need      clearance for installation?  Is the      system being hardened to prevent installation?</li>
<li><strong>Offshore Installation </strong>– Is offshore installation required      for the load test setup?  Can you      perform the installation via remote connection or do you require someone      from the site to assist in the installation?</li>
<li><strong>Running of JVM/.NET Probes for      Diagnostics</strong> – This      will require installation and instrumentation on the application server,      meaning it will be intrusive to the system as a whole.  Do you require additional permissions      for such installation?</li>
<li><strong>Post-installation</strong> – Do remember to test if the      installation is complete and the programs are working before moving on to      the next phase.  Remember to do a      connectivity check between the load generators to the controller to ensure      they communicate prior the load test.</li>
<li><strong>Working in different environments </strong>– Are you required to work in      different stages of a load test project?       Example, you are required to run the test in (A) the  data center followed by (B) the local      client segment and lastly (C) the remote client segment?  In this context, how do you ensure the      scripts worked from A to C?  It will      be easy if it is a change of hostnames and URL addresses that is being      used in these environments as it can be achieved through      parameterization.  But what if there      are additional authentication mechanism introduced in environment B and      C?  Authentication mechanisms such      as additional cookie in the clients are added into the URL or 2-factor      authentication can render the scripts developed in environment A      useless!  How do you go about      it?  Should you cater more time to      re-script for the worst scenario or is it better to disable the      authentication mechansim during the load test?</li>
</ol>
<p>These are some basic considerations we usually asked our ourselves and clients.  Hope it will be useful in your planning.  What are other considerations make for a load test for you?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/planning/planning-for-a-load-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find Offending SQL Bottlenecks!</title>
		<link>http://www.loadrunnertnt.com/analyze/find-offending-sql-bottlenecks/</link>
		<comments>http://www.loadrunnertnt.com/analyze/find-offending-sql-bottlenecks/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 07:54:30 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Analyze]]></category>
		<category><![CDATA[Bottleneck]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[SQL Statements]]></category>
		<category><![CDATA[Stored Procedures]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=650</guid>
		<description><![CDATA[After the tune-able parameters are changed for optimal performance, your system still fails miserably with a poor response time.  The most likely step you should take is to do a deep diagnostics on the system.  Break the system up into different components such as application server where diagnostics using probes is required, database servers where [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/ms_sql_logo1.gif"><img class="alignleft size-full wp-image-674" title="ms_sql_logo" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/ms_sql_logo1.gif" alt="" width="178" height="87" /></a>After the tune-able parameters are changed for optimal performance, your system still fails miserably with a poor response time.  The most likely step you should take is to do a deep diagnostics on the system.  Break the system up into different components such as application server where diagnostics using probes is required, database servers where SQL statements and stored procedures become the next to be scrutinized, etc…<span id="more-650"></span></p>
<p>In this post, we will not be covering on the diagnostics of the application server, but we will cover the basic signs of database bottlenecks at the <strong>SQL statement</strong> level.  The 1<sup>st</sup> symptom is a collective symptom that the application server (and all other servers) with the exception of the database server in the architecture are performing reasonably well.  E.g. memory available is well maintained without any exception decrease of this value, the processor % time is always low for the servers.<br />
<!--adsensestart--><br />
The 2<sup>nd</sup> symptom is a constant high utilization of the processor % time and low memory usage (page faults, page reads and available memory) in the database server.  This provides a tell-tale sign that the database server is processing some instructions, likely to be SQL statement that is taking too long.  It would not be the database buffer or SQL buffer that utilizes the memory as the consumption is low meaning reuse of the buffer is high.</p>
<p>Now with these two symptoms, you are ready to go down deeper.  Access MS SQL and run the following query:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> scheduler_id<span style="color: #66cc66;">,</span> current_tasks_count<span style="color: #66cc66;">,</span> runnable_tasks_count<br />
<span style="color: #993333; font-weight: bold;">FROM</span> sys<span style="color: #66cc66;">.</span>dm_os_schedulers <span style="color: #993333; font-weight: bold;">WHERE</span> scheduler_id <span style="color: #66cc66;">&lt;</span> <span style="color: #cc66cc;">255</span></div></div>
<p>This query will <strong>sys.dm_os_schedulers</strong> will give you information of how many runnable tasks that exists.  Values other than zero indicate that tasks are waiting to run, and high values are an indication that the CPU is bottlenecking your performance.  Another query that directly targets at SQL statement is the following:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> TOP 50 SUM<span style="color: #66cc66;">&#40;</span>qs<span style="color: #66cc66;">.</span>total_worker_time<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> total_cpu_time<span style="color: #66cc66;">,</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#91;</span>TEXT<span style="color: #66cc66;">&#93;</span> <span style="color: #993333; font-weight: bold;">FROM</span> sys<span style="color: #66cc66;">.</span>dm_exec_sql_text<span style="color: #66cc66;">&#40;</span>plan_handle<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
SUM<span style="color: #66cc66;">&#40;</span>qs<span style="color: #66cc66;">.</span>execution_count<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> total_execution_count<span style="color: #66cc66;">,</span><br />
COUNT<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> number_of_statements<span style="color: #66cc66;">,</span> qs<span style="color: #66cc66;">.</span>plan_handle<br />
<span style="color: #993333; font-weight: bold;">FROM</span> sys<span style="color: #66cc66;">.</span>dm_exec_query_stats qs<br />
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> qs<span style="color: #66cc66;">.</span>plan_handle<br />
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> SUM<span style="color: #66cc66;">&#40;</span>qs<span style="color: #66cc66;">.</span>total_worker_time<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DESC</span></div></div>
<p>This query shows which batches or procedures are consuming the most CPU and will also include the actual SQL statement. The query aggregates by a specific plan handle. If the plan handle contains more than one SQL statement you must drill into each statement to determine where the greatest CPU contribution comes from.</p>
<p>Codes illustrated in this post are taken from <a href="http://sql.dotnetbob.com/?p=96">DotNet Bob on SQL</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/analyze/find-offending-sql-bottlenecks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Achieving High Performance Application in Java Coding!</title>
		<link>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding/</link>
		<comments>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 07:20:14 +0000</pubDate>
		<dc:creator>TnT Admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[memory leaks]]></category>
		<category><![CDATA[optimizing]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[substring]]></category>

		<guid isPermaLink="false">http://www.loadrunnertnt.com/?p=620</guid>
		<description><![CDATA[High performance web sites and applications can start from the design coding level.  Most of the time, performance tuning we view comes at the later stage of the development life cycle, in particular at the deployment stage.  What can we do by deployment stage?  We can only tune start up parameters, add more hardware, or [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/web_coding_collage.jpg"><img class="alignleft size-thumbnail wp-image-633" title="web_coding_collage" src="http://www.loadrunnertnt.com/wp-content/uploads/2010/01/web_coding_collage-150x150.jpg" alt="" width="86" height="86" /></a>High performance web sites and applications can start from the design coding level.  Most of the time, performance tuning we view comes at the later stage of the development life cycle, in particular at the deployment stage.  What can we do by deployment stage?  We can only tune start up parameters, add more hardware, or add more network components in the architecture.  But what if the problem is in the JVM where you diagnose it to be poor application performance due to coding?  Changing codes at this stage will be more expensive and difficult unlike when you are in the development stage!<span id="more-620"></span></p>
<p>How can we build a high performance web site through coding then?  Here are some basic tips you should note during development which should not be a big hassle for you to make changes anytime!<strong> </strong></p>
<p><strong>1. Remove any unused      variables – </strong>The first thing and most simple thing you can do is to avoid      creating unused variables.  Use      static code analysers and look for variables that are initialized but not      used.  Sometimes, in the midst of      development, we leave out variables that aren’t used anymore and this can      be removed to converse memory.<strong></strong></p>
<p><strong>2. Free all resources – </strong>All created resources      and variables should be released once they are not used.  This helps converse memory.  This will help optimize the memory usage      and thus reduce the need for garbage collection cycle to take place.  Resources such as database connections      and files are simple examples that you should close and release the      resources.<strong></strong></p>
<p><strong>3. Free all resources in      the ‘finally’ block – </strong>Similar to [2], we want to free all      resources.  However, this is catered      to “unhappy” flow of the program code.       Free all resources that are used when exception arises if applicable.<strong></strong></p>
<p><strong>4. Avoid calling methods in loops – </strong>This can be circumvented when the compiler optimizes the code.  However, if it doesn’t the loop condition will be calculated for each iteration during the loop</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// bad practise</span><br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MethodInLoop <span style="color: #009900;">&#123;</span><br />
<span style="color: #000066; font-weight: bold;">void</span> method <span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Avector+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Vector</span></a> vector<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">int</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> vector.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #666666; font-style: italic;">// do something</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// good practise</span><br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MethodOutOfLoop <span style="color: #009900;">&#123;</span><br />
<span style="color: #000066; font-weight: bold;">void</span> method <span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Avector+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Vector</span></a> vector<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #000066; font-weight: bold;">int</span> size <span style="color: #339933;">=</span> vector.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">int</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> size<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #666666; font-style: italic;">// do something</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p><strong>5. Avoid methods that may      cause memory leaks – </strong>Methods such as split(java.lang.String),      split(java.lang.String, int), substring(int), substring(int,int),      nextElement(), nextToken(), nextToken(java.lang.String), group() and      group(int) are candidates of memory leak.       There are quite a fair bit of search results on the methods that      causes memory leaks.  You can refer      to <a href="http://eyalsch.wordpress.com/2009/10/27/stringleaks/">“Strings      and Memory Leaks”</a> from The Java Explorer for some information.  Avoid such methods whenever      possible.  If not, do use it with      care.</p>
<p>More to come on coding for high performance applications!  Share with us on your performance coding tips here too! <img src='http://www.loadrunnertnt.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.loadrunnertnt.com/coding/achieving-high-performance-application-in-java-coding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
