You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Vitaly Smyk (JIRA)" <de...@myfaces.apache.org> on 2007/01/25 12:51:49 UTC

[jira] Reopened: (TOMAHAWK-855) dataTable sortable too slow

     [ https://issues.apache.org/jira/browse/TOMAHAWK-855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vitaly Smyk reopened TOMAHAWK-855:
----------------------------------


ok i testing it
result:
perfomance increase but rows not sorted
200000 simple rows sorded 10 seconds on AMD 2800+
use MyFaces 1.1.5 snapshot and tomahawk 1.1.5 snapshot also use ajax4jsf

see configurations, jsp and class
<%@taglib prefix="jsf" uri="http://java.sun.com/jsf/core" %>
<%@taglib prefix="html" uri="http://java.sun.com/jsf/html" %>
<%@taglib prefix="t" uri="http://myfaces.apache.org/tomahawk" %>
<%@taglib prefix="a4j" uri="https://ajax4jsf.dev.java.net/ajax" %>
<%--
  Date: 24.01.2007
  Time: 22:57:02
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<jsf:view>
<html>
  <head><title>Simple jsp page</title></head>
  <body>
    <html:form>
       <a4j:repeat value="#{Test.list}" var="var">
           <html:outputText value="#{var}"/>
       </a4j:repeat>


        <t:dataTable var="var" value="#{Test.list}" rows="20" id="table">
            <t:column sortable="true">
                <jsf:facet name="header">
                    <html:outputText value="text"/>
                </jsf:facet>
                <html:outputText value="#{var}"/>
            </t:column>
        </t:dataTable>
        <t:dataScroller for="table"/>
        <%--<html:outputText value="#{Test.testValue}" id="test"/>--%>
        <%--<a4j:commandButton reRender="test" value="Ajax Submit Button"/>--%>
       <%--<t:inputHtml allowEditSource="true"/>--%>
    </html:form>
  </body>
</html>
</jsf:view>

<faces-config>
     <managed-bean>
         <description>test</description>
         <managed-bean-name>Test</managed-bean-name>
         <managed-bean-class>test.TestBean</managed-bean-class>
         <managed-bean-scope>session</managed-bean-scope>
     </managed-bean>
</faces-config>

package test;

import java.util.List;
import java.util.ArrayList;

/**
 * Date: 24.01.2007
 * Time: 23:24:28
 */
public class TestBean {
    private String testValue;
    public String testAction() {
        return null;
    }

    public String getTestValue() {
        return testValue;
    }

    public void setTestValue(String testValue) {
        this.testValue = testValue;
    }

    public List getList() {
        List l = new ArrayList();
        for(int i=0;i<25000;i++) {
            l.add(""+i);
        }
        return l;
    }

}

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <filter>
        <display-name>Ajax4jsf Filter</display-name>
        <filter-name>ajax4jsf</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
        <init-param>
            <param-name>forceparser</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>ajax4jsf</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

    <filter>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>maxFileSize</param-name>
            <param-value>20m</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <url-pattern>/faces/*</url-pattern>
    </filter-mapping>


    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <!--<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>-->
        <servlet-class>test.ServletWrapper</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
</web-app>

> dataTable sortable too slow
> ---------------------------
>
>                 Key: TOMAHAWK-855
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-855
>             Project: MyFaces Tomahawk
>          Issue Type: Improvement
>          Components: Extended Datatable
>    Affects Versions: 1.1.3, 1.1.4-SNAPSHOT, 1.1.5-SNAPSHOT
>            Reporter: Vitaly Smyk
>         Assigned To: Catalin Kormos
>             Fix For: 1.1.5-SNAPSHOT
>
>
> when i use sortable column and many records any sort has too many time and CPU to 100%
> after code review i found where is problem:
> in class SortableModel subclass private final class Comp
> medhod compare too slow becouse it invoke:
> getPropertyValue(_prop);
> i has change it to:
> PropertyUtils.getProperty(_model.getRowData(),_prop);
> and perfomanse increase !!!10 times!!!
> my impovements request:
> or change code or add functionality to setup Comparator themself (better choise)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.