Prestanda och code cleanup Innehåll Generellt... 2 Nya funktioner... 2 Visa arbetstidtransaktioner för operation... 2 Tidreg., frånvaroreg., Ej reg. Tid och återställ öppen transaktion i Personallistan... 2 Code cleanup... 3 Kod är omskriven för SQL C/AL... 3 Prestanda test... 4 Op.status uppdaterar Op.följdstatus, INTE tvärtom... 6 Buggfix... 7 R12007100 måste finnas anställd för kopplad kapacitet... 7 Dimensionskod 10->20... 7 2011-06-19 Sida 1 av 7
Generellt Nya funktioner Visa arbetstidtransaktioner för operation Visa arbetstidtransaktioner för markerad operation, istället för markerad order. Bild Tidreg., frånvaroreg., Ej reg. Tid och återställ öppen transaktion i Personallistan Tidreg., frånvaroreg., Ej reg. Tid och återställ öppen transaktion i Personallistan 2011-06-19 Sida 2 av 7
Code cleanup Nyheter i PRO-Tid 7.0 (140817) för NAV2013 Kod är omskriven för SQL C/AL Följande har ändrats i koden för att vara lämpligare SQL och därmed ge bättre prestanda. Från kod Till kod kommentar FIND( - ) ISEMPTY För test om post finns FIND( - ) FINDSET För att loppa igenom ett recordset framåt FIND( - ) FINDFIRST För att läsa endast första posten inte ett recordset FIND( + ) FINDLAST För att läsa sista posten och även när man ska loppa bakåt. IF Var.FIND( - ) THEN REPEAT Var.MODIFY UNTIL Var.NEXT = 0; IF Var.FIND( - ) THEN REPEAT Var.MODIFY UNTIL Var.NEXT = 0; IF Var.ISEMPTY THEN EXIT; Var.FINDSET; REPEAT VarCopy.GET(Var.PrimaryKey) VarCopy.MODIFY; UNTIL VAR.Next = 0; IF Var.ISEMPTY THEN EXIT; Var.FINDSET(TRUE); REPEAT Var.MODIFY; UNTIL VAR.Next = 0; Ändra värde på en kopia variabel, istället för att ändra på samma variabel som man loopar med. FINDSET(TRUE) har ibland använts istället. 2011-06-19 Sida 3 av 7
Prestanda test Hämta och importera fobben PT700_140817_TestPROTimePerformance.zip från Partnerwebben. Testa prestandatest genom att köra Codeunit 50095 Test PRO-Tid performance, innan och efter uppgradering till version PT700.140817. Testen kan tömma alla transaktioneri NAV, skapar x antal prod.ordrar, stämplar in personal, startar alla operationer, autostopp/startar operationer, stämplar ut personal och autostoppar arbete, för att stämpla in personal igen dagen efter. Denna process upprepas x antal dagar, för att sen avslutas med en presentation av testkörningen. Duration per Execution step anger ett jämförbart värde mellan olika körningar. Denna prestanda test får absolut inte installeras i DRIFT miljö hos kund, eftersom ALLA transaktioner raderas! Table, Page, codeunit 50095 ska tas bort efter test är genomförd. Ni måste sätta fast variabler och konstanter i början av codunit 50095, för det företag som ni kör testen i. TestParameters sätter parametrar, Testrun kör testen och TestResult visar resultatet. Exempel för att köra test för anställd 3100 10 dagar med schema TEST, närvarokod 100 och frånvarokod 1. Skapa 2 prod.ordrar med 4 operationer var som ska autostoppas/startas 1 gång för att sen stämpla ut anställd. Utflödeflödesantal 2st vid varje stopp av operationer. Ändra I OnRun till: TestParameters('100','1','3100','TEST','02','1000','',WORKDATE,2); TestRun(10,2,1,TRUE); Testresult; 2011-06-19 Sida 4 av 7
De tester som jag kört visar på drygt 50% ökning av prestandan. Total execution ms/step ms/step Prestanda ökning ms Prestanda ökning% steps PT700.130121.131023 PT700.140817 280 189 126 63 50% 880 98 76 22 29% 1520 60 47 13 28% 1760 123 80 43 54% 3040 74 47 27 57% 3520 152 95 57 60% 6080 93 55 38 69% 7040 214 126 88 70% 12160 124 76 48 63% 14080 316 204 112 55% 16120 15 10 5 50% 24320 181 116 65 56% 128240 23 12 11 92% 432360 48 28 20 71% Totalsumma 1710 1098 612 56% 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% Prestandaökning% Prestandaökning% Linjär (Prestandaökning%) 2011-06-19 Sida 5 av 7
Op.status uppdaterar Op.följdstatus, INTE tvärtom Innan uppdaterades Op.Status när operation bokfördes i c22 och manuell ändring av Op.följdstatus i op.följdlistan. Op.Status var redan uppdaterad och därför har nu denna uppdatering eliminerats. Vilket ger bättre prestanda och mindre problem med fel status av Op.Status/op.följdstatus. 2011-06-19 Sida 6 av 7
Buggfix R12007100 måste finnas anställd för kopplad kapacitet Hoppade över om anställd saknade kopplad kapacitet, vilket gav följdfel när man senare skulle avsluta prod.order. Dimensionskod 10->20 Ändrat till 20 tkn 2011-06-19 Sida 7 av 7