====== Fertigungsmodul Performance ====== ===== Problem Description ===== Find out what is the root of the problems with "Fertigungsmodul". * **-** Ask Torsten which problems they have * **-** How is it possible to see these problems? * JProfiler is under "C:\Program Files\jprofiler13" * Menu * Fertigung * Leitstand * Fertigungsauftrag * Netzplan (Über Menü? Kontextmenü?) * Endprodukt * Zwischenprodukte * Produktionsplanung * Beispiel-Matnum: * .740 (und dann Pfeil-nach-unten drücken) * FB-Nr. 00126472 * 1216 * Groovy Klassen: * SvBoPrdNet * SvBoPrdNetImpl * setBoPrdNetPrdDocQuantityAndReloadSuc() * SvBoPrdNetImplBase * FrBoPrdNet * ''handleElementDataChanged()'' * :946 => ''busObj = svBoPrdNet.setBoPrdNetPrdDocQuantityAndReloadSuc(busObj, boPrdNetPrdDoc, (EFCQuantity) oldval, (EFCQuantity) newval)'' * ''EFCThreadUtil.doLater()'' * -> wird zu oft aufgerufen? * auf die Methode wird gewartet * Torsten meint so soll es auch sein, da es in einem AWT-Thread passiert/passieren soll ===== Found facts ===== * JDBC calls take relatively long time: * the first 10 calls need the most time * ca. 8 seconds with my scenario on the local DB srv07 * ca. 3 minutes on the Zimmer Test-DB, if I move 5-7 entries on the screen "Leitstand Bereich VP" ===== Profilers ===== * [[https://www.ej-technologies.com/products/jprofiler/overview.html|JProfiler]] * [[https://www.ej-technologies.com/resources/jprofiler/help/doc/main/introduction.html|JProfiler Help]] * [[https://www.ej-technologies.com/resources/jprofiler/help/doc/JProfiler.pdf|The definitive giude to JProfiler]] (PDF) * [[https://visualvm.github.io/|VisualVM]] ===== TOP-Selects ===== ==== select 1 ==== * Ursache * ''MdMatMrpBrrRepositoryImpl.getBoFromDb()'' * ''getForObj()'' * ''...'' ===== Misc ===== * to debug html page "graph.html" in Chrome: * add the manual call of ''setData()'' * in ''graph.html'' add the line to the bottom of JavaScript code * ''setData(...)'' * where ''...'' is the JSON code copied from ''GraphView.fillGraph()'' during debugging * find out the URL of "graph.html" * see ''GraphView.getGraphURL()'' * call this URL in Chrome * Maybe we can do something better if we write a better version of ''DcBomDocCompactRepositoryImpl.getMatnumMdBomDoc()'' which uses own "select" statement to select only one record from DB, instead of: ... db = getDao(company, bomdockey, bomdocnum) if (db != null) { return new EFCMatNum(db.bommatnum) } ...