<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>jQuery Grid Plugin - jqGrid - Topic: Grid performance limits</title>
	<link>http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits</link>
	<description><![CDATA[Grid plugin]]></description>
	<generator>Simple:Press Version 5.7.5.3</generator>
	<atom:link href="http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits/rss" rel="self" type="application/rss+xml" />
        <item>
        	<title>OlegK on Grid performance limits</title>
        	<link>http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20660</link>
        	<category>Help</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20660</guid>
        	        	<description><![CDATA[<p>All the experiments just shows that you should do paging on the server side. I can not understand the argument "our back end is already doing some heavy processing". On the server side one implement all operations in compiled and optimized code, so you will have <strong>at least</strong> 1000 times better performance. Moreover the server can cache the results which can improve the performance also very much. With intelligent paging on the server side you will be without any problem be able to work with at least 100000 rows of data.</p>
<p>Best regards<br />Oleg&#160;</p>
]]></description>
        	        	<pubDate>Thu, 04 Nov 2010 00:30:42 +0200</pubDate>
        </item>
        <item>
        	<title>benzocab on Grid performance limits</title>
        	<link>http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20659</link>
        	<category>Help</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20659</guid>
        	        	<description><![CDATA[<p>I did try "gridview=true" setting and it did seem speed up the grid, but not enough to make it usable for large amopunts of data. Not sure if anyone else has any other ideas.</p>
]]></description>
        	        	<pubDate>Wed, 03 Nov 2010 21:42:24 +0200</pubDate>
        </item>
        <item>
        	<title>benzocab on Grid performance limits</title>
        	<link>http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20608</link>
        	<category>Help</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20608</guid>
        	        	<description><![CDATA[<p>Oleg,</p>
</p>
<p>I did not use the gridview=true parameter because the documentation says that it&#39;s not allowed when using subgrids which we&#39;d like to use to show detail rows for each total. I can probably get around that, and will try to implement in the next day or two to see if this flag will make a difference.</p>
<p>As far as the loading all the data on the grid, yes, we can do the aggregation in the back end, but our back end is already doing some heavy processing, and the idea was to get a control that will handle the grouping and summation on its own will all the results there. We understand there&#39;s a limit, but my expectation was that the limit would be in the 10k range and not the 1k range.</p>
<p>Here is the JS code for my app:</p>
<p>-----------------------------------------------------</p>
<p>grid.jqGrid(<br />&#160;&#160;&#160;&#160;&#160; {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; datatype: function(pdata) {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GetGridData(pdata);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; },<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160; grouping: true,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupingView: {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupField: [&#39;Agent&#39;],<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupColumnShow: [true],<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupText: [&#39;Blah [&#60;b&#62;{0}&#60;/b&#62;]&#39;],<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupCollapse: false,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupOrder: [&#39;asc&#39;],<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupSummary: [false],<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; groupDataSorted: true<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //&#160;&#160;&#160;&#160;&#160;&#160;&#160; },<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; colNames: columns,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; colModel: colModel,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; rowNum: 10,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; rowList: [10, 25, 50, 100],<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; pager: jQuery("#GridPager"),<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; sortname: "Agent",<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; viewrecords: true,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; width: 705,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; height: &#39;auto&#39;,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; cellEdit: false,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; gridComplete: function() {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; alert("grid completed loading."); <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; },</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; subGrid: true,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; subGridRowExpanded: function(subgrid_id, row_id) {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // we pass two parameters<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // subgrid_id is a id of the div tag created whitin a table data<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // the id of this elemenet is a combination of the "sg_" + id of the row<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // the row_id is the id of the row<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // If we wan to pass additinal parameters to the url we can use<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // a method getRowData(row_id) - which returns associative array in type name-value<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // here we can easy construct the flowing<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var subgrid_table_id, pager_id;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; subgrid_table_id = subgrid_id + "_t";<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; pager_id = "p_" + subgrid_table_id;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _SubGridToLoad = subgrid_table_id;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $("#" + subgrid_id).html("&#60;table id=&#39;" + subgrid_table_id + "&#39; class=&#39;scroll&#39;&#62;&#60;/table&#62;&#60;div id=&#39;" + pager_id + "&#39; class=&#39;scroll&#39;&#62;&#60;/div&#62;");<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; jQuery("#" + subgrid_table_id).jqGrid({<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //url:"subgrid.php?q=2&#38;id="+row_id,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //datatype: "xml",<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; datatype: function(pdata) {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GetSubGridData(pdata);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; },<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; colNames: columns,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; colModel: colModel,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rowNum: 20,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; pager: pager_id,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sortname: &#39;num&#39;,<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sortorder: "asc",<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; height: &#39;100%&#39;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; });<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; jQuery("#" + subgrid_table_id).jqGrid(&#39;navGrid&#39;, "#" + pager_id, { edit: false, add: false, del: false })<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; },<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; subGridRowColapsed: function(subgrid_id, row_id) {<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // this function is called before removing the data<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //var subgrid_table_id;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //subgrid_table_id = subgrid_id+"_t";<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //jQuery("#"+subgrid_table_id).remove();<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
<p>-----------------------------------------------------</p>
<p>GetGridData() and GetSubGridData() are Ajax calls that return the records from our middle layer. Everything up to that point is pretty fast. The performance issues I&#39;m having are on the grid itself, when sorting, etc. I&#39;ll let you know what my results are with the "gridview=true" setting.</p>
<p>Thanks,</p>
<p>Ben</p></p>
]]></description>
        	        	<pubDate>Mon, 01 Nov 2010 15:47:55 +0200</pubDate>
        </item>
        <item>
        	<title>OlegK on Grid performance limits</title>
        	<link>http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20572</link>
        	<category>Help</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20572</guid>
        	        	<description><![CDATA[<p>Hello Ben,</p>
<p>I don&#39;t agree with you. You should post the code example which you used for tests (including HTML code and the included JavaScripts) and write which web browsers and in which versions you used. Do you used <strong>gridview:true</strong>&#160;parameter for example? Moreover in all realistic examples I see no sense to show the user 1000 or 10k rows <strong>at once</strong>. Moreover if you use SQL Server database you can implement grouping of data of the server side instead of doing it on the client side.</p>
<p>Regards<br />Oleg</p>
]]></description>
        	        	<pubDate>Sat, 30 Oct 2010 01:34:12 +0300</pubDate>
        </item>
        <item>
        	<title>benzocab on Grid performance limits</title>
        	<link>http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20563</link>
        	<category>Help</category>
        	<guid isPermaLink="true">http://www.trirand.com/blog/?page_id=393/help/grid-performance-limits#p20563</guid>
        	        	<description><![CDATA[<p>I haven&#39;t found any documentation on scalability of the jqGrid. I ran some tests and it seems that 5000 + records on the grid make it unusable because of the very very slow response time. From what I saw the maximum number of rows is somewhere between 500 and 1000 rows, to keep the grid usable.</p>
<p>Does anyone have similar experience? Is this expected? Is there any optimization I can do to improve performance? I&#39;m currently using ajax to load the grid from a Sql Server database. I would like to implement subgrids as well. We&#39;re looking to be able to load at least around 10k rows at a time. Paging is not an option because we want the user to be able to compare data using grouping and summary rows.</p>
</p>
<p>Thanks,</p>
<p>Ben</p>
]]></description>
        	        	<pubDate>Fri, 29 Oct 2010 16:59:42 +0300</pubDate>
        </item>
</channel>
</rss>