Source code file content
web-content / trunk / dev / reviews / opinions_91559.html
Size: 5565 bytes, 1 line
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1"> <title>Code Completion Responsiveness</title> <META NAME="AUTHOR" CONTENT="Vladimir Voskresensky"> </head> <body LANG="en-US" > <h1>Architecture Review Opinion</h1> <dl> <dt><b>Issue:</b> <a href="http://www.netbeans.org/issues/show_bug.cgi?id=915559">91559</a></dt> <dt><b>Submitter:</b> <a href="mailto:vv159170@netbeans.org">Vladimir Voskresensky</a></dt> <dt><b>History:</b><a href="http://www.netbeans.org/source/browse/cnd/www/dev/reviews/opinions_91559.html">in CVS</a> <dt><b>Date:</b> Dec 26, 2006</dt> <dt><b>Reviewers:</b> </dt> </dl> <hr/> <dl> <dt><b>Contents</b></dt> <dd> <ul> <li><a href="#summary">Summary</a></li> <li><a href="#decision">Decision</a></li> <li><a href="#opinion">Opinion</a></li> <li><a href="#minority">Minority Opinion</a></li> <li><a href="#advisory">Advisory Information</a></li> <li><a href="#appendices">Appendices</a> <ul> <li><a href="#TCRs">Appendix A: TCRs</a></li> <li><a href="#TCAs">Appendix B: TCAs</a></li> <li><a href="#references">Appendix C: Reference Material</a></li> </ul> </li> </ul> </dd> </dl> <hr/> <h2><a name="summary">Summary</a></h2> <p> Responsiveness tests for Code completion show the following results: <ul> <li> 2-6s (Intel/AMD) </li> <li> 3-12s (Sparc) </li> </ul> </p> <p> <b>The goal is to improve code completion response performance to 2 seconds or less.</b> </p> <h2><a name="decision">Decision</a></h2> <p> </p> <!-- <p>[Keep this short; details will be given in <a href="#opinion">Opinion</a> section. Mark one of three outcomes:</p> <ul> <li><b>Accepted</b> (Go to implement or commit, based on phase of review)</li> <li><b>Accepted with change requests</b> (Go to implement or commit with completed Technical Change requests)</li> <li><b>Rejected</b> (No, go back and do it again.)</li> </ul> <p>]</p> --> <h2><a name="opinion">Opinion</a></h2> <h2>Overview of problem</h2> <p> The following picture shows respone time distribution between layers: </p> <img src="91559/cc-summary.png" alt="cc-summary"/> <h2>Issue details</h2> <h3>Collect data</h3> <h4>Base Level</h4> <p> Now recalculated each invocation: <ul> <li> Local scope elements </li> <li> Project elements </li> <li> Used Libraries elements </li> </ul> </p> <h4>Tasks</h4> <p> <b>Action item:</b> Change used code completion SPI(from 4.0 to recent SPI) to support different code completion providers and modern drawing infrastructure </p> <p> <b>Action item:</b> Separate code completion providers by scope: <ul> <li> Local scope elements </li> <li> Project elements </li> <li> Used Libraries elements </li> </ul> <b>Action item:</b> Separate code completion providers by element types: <ul> <li> macros </li> <li> variables declarations </li> <li> classes/structures/enums </li> </ul> </p> <p> <b>Action item:</b> Analyze and remove unnecessary calls to expensive name resolver </p> <p> <b>Action item:</b> Cache and reuse unchanging data like Libraries elements </p> <h3>Calculate display size of data & Display data</h3> <h4>Base Level</h4> <p> Now recalculated each time and dummy drawing for each element is done to return prefered size. </p> <h4>Tasks</h4> <p> <b>Action Item:</b> providers of unchanged data should do work only once. </p> <p> <b>Action Item:</b> use new SPI approach by returning number of elements and prefered size. Do not spend time in calculating for each element. </p> <h3>Code Snippets</h3> <p> </p> <h2><a name="minority">Minority Opinion</a></h2> <p> </p> <pre> </pre> <p> </p> <h2><a name="advisory">Advisory Information</a></h2> <p>[List any non-blocking issues and suggestions for improvement.]</p> <h2><a name="appendices">Appendices</a></h2> <h3><a name="TCRs">Appendix A: Technical Changes Required</a></h3> <p>[File all TCRs in Issuezilla with P1 or P2 priority and make the issue representing this review depend on them.]</p> <h3><a name="TCAs">Appendix B: Technical Changes Advised</a></h3> <p>[File all TCAs in Issuezilla with P3 to P5 priority and make the issue representing this review depend on them.]</p> <h3><a name="references">Appendix C: Reference Material</a></h3> <p>[List additional materials relevant to reviewed case]</p> </body> </html>