Servoy glacially slow - minutes to load a record

Dear all

I have a solution in production which has been working fine for some months, but has been worrying me with its performance, particularly over wan where it can take several minutes to load or scroll a record.

My solution works fine for most forms, but one form in particular an ‘estimate’ has details of the estimate (number, client, totals etc.), and has a tabpanel showing another form called ‘line items’.

The line items form is a table view (locked) form with lines belonging to the estimate. The line items form also has a header part with a combobox showing all the available groups in the estimate. When a parent estimate is selected, the combobox in line items is set to ‘all groups’ but can be changed to various other groups on a value list populated by the groups in the line items themselves. So choosing ‘front room’ or ‘hallway’ or ‘kitchen’ will show only the line items with that group.

Therefore the tabpanel is unrelated, and the selection of ‘all groups’ or a manually selected group performs a sql query on the line items table for lines containing whichever group, or all groups, and loads those lines into the form in the tabpanel.

Each of the line items has the potential of having a few drop down menus of its own, but these are only populated onRecordSelection of that line. It also has a few checkboxes (‘vatable’, and ‘complete’) which are integer, 1 or 0. It also has an html label which is the result of a stored calculation

The tabpanel form has a few aggregations for calculating totals of various columns (about 6), and the main estimate form has some totals of the whole thing, again about 6 columns are totalled. These appear in a footer on that form

There are three media fields in the table, but they contain only a 16 x 16 pixel gif image, ranging from 400bytes to 1030bytes. Not every line has all of these images, although every line has the first one.

All of the calculations in the form are stored.

There are no aggregates in the lines, only in the footer which aggregate across whichever lines are shown

Performance Statistics in Servoy Admin page shows everything is fine (nothing taking much more than 10 or 20ms, and the ones that do take more time are expected (insert image into blob etc.))

However, when I load the solution on my laptop, connecting to the server remotely, and load a particular estimate (a large one which has about 1000 lines), it has just taken 1 minute for the record to load. During this time, my network is saturated at about 200KBps (the speed of my sdsl line). Therefore the server is transferring to me 12 MEGABYTES of data when I try to load a single record. There is no image / blob / media data apart from the 3 small gifs (which would total about 3MB if all lines had all 3 images - which they don’t). When I then try to scroll this list, my network is again maxed out and it loads the lines extraordinarily slowly, taking many minutes to get to the end of the list.

I have submitted this as a case to servoy but was told that there are coding problems in my solution (many of which I have tried to address), but I can’t imagine that having too many application.saveData() in a method (all have been removed anyway) is going to cause the server to send me 12MB of data when I load a record. I have many other solutions, sometimes with thousands of lines of data in a single list and have never seen a problem with speed of loading / scrolling. In fact, in this same solution, I have a form view of all line items across all estimates (5311 lines in total), and over WAN, this loads, and goes to the last record in seconds, and does not saturate my internet connection, this is what I would expect from a servoy solution.

There is something about the fact that I have aggregations, or <3k worth of images per line, or something that causes my solution to spit out megabytes of data when someone loads a record, and I really need to find out what it is.

I am hoping that someone can point me to something that might help. I am at a loss as to what to try.

Thanks

Bevil

Bevil, this is soo specific, I think the only way is, let somebody look with you at the code calc’s queries, stuff like that.
As you say yourself, there must be something that is triggering that many data!

Hey Harjo

I sent it to Servoy as a case, they said that there were no problems, apart from a few coding errors, but nothing specific…

Happy to let anyone log in and have a look (Laurian Vostinar already did this, but we didn’t get anywhere).

:(

Bevil

if you clear the performance tab in the admin pages.
Then you go to load your record how many queries are fired?

Hi Johan

I tried this, the log is here: http://www.templeton-smith.com/performance.html

It doesn’t look like anything significant to me, since all the times are so low, perhaps you will see something.

its not about the low sql executing time
When it is slow over a network, its about the number of invokes… And i dont know if that performance log is only for 1 record move
But the counts i see are really high. And thats what makes it slow, there is a latency to the server when working remote, so that i slow are then number of invokes not what an invoke cost. (at least much less)

Are you loading large pk sets somewhere?

That log is completely fresh. I cleared it, logged into solution, selected one (big) record and refreshed the server log window.

I am selecting a PK record here, and using SQL query to load about 1000 lines into another form which shows in a tabpanel on the PK parent form…

Just a note, it also slows right down if I try to scroll my tabpanel list

so clear it at the moment you scroll in the tabpanel, so:
Clear, Scroll once, look at what it has done now on the admin page.

Cleared log, scrolled once, refreshed log, this is it: http://www.templeton-smith.com/performance2.html

thats enormous…
There where about 300 relations being loaded/queried from the server.
You really should look into your solution to see what you are all doing for just that 1 scroll.

Obviously it is the top 5 log entries that are the problem? If so, how do I find out what is triggering them?

What calls the relations when I scroll, is it onLoad?

data you show there as related fields,
calculations that are triggered that touches relations.
if selection changes and you have a onRecordSelection that touches code.
rowBgColor calc or global method.

Brilliant… my solution is now showing ‘could not retrieve more form data’ errors.

Thunder,

you have to learn to debug such situations. Did you follow the suggestions of Johan?
For instance just remove every field from the form (or place beneath the footer, for easy restore) and add them one by one, and see what field/calculation/relation, is generating SO much queries, by checking the perfomance tab with every change.

I’m certain you will find the issue than.

Or get some online help by one of our developers… We are not that expensive! ;-)

Hey Harjo

I did find out what it is, but each calculation is necessary. I don’t know how I could do it any other way.

I have tried to debug it. I have been trying to debug it for months.

how much do you charge :wink:

Bevil

I have send you a PM ;-)

I’m having a similar sort of problem in my solution but it’s already slow in Developer.
Whenever I select a different module it’s loading for 10 seconds on average.
There’s not too many queries fired and their timing is ok, also the invokes number is below 20 for one of them and only 1-2 for the rest of the queries in most of our modules.

This is the server performance output (cleared statistics, selected a module, here’s the output). It’s not so bad, is it?
The count on the top line can go up to 30 for some modules that have many grids (we build the grid fields dynamically) but even if I remove that piece of functionality the speed stays same slow.

Total Time (mm:ss:ms)	Count	Avg Time (mm:ss:ms)	Type	Action
00:00:024	6	00:00:004	Find	select idSystem_GridFieldAttributes from System_GridFieldAttributes where idSystem_GridAttributes = ? and idSystem_Organization = ? order by idSystem_GridFieldAttributes asc
00:00:015	4	00:00:003	Relation	select idPhone, phoneNumber, extension, countryCode, phoneType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, areacode from Phone where (idCustomerContact = ? and isDefault = ? and phoneType = ?) and idSystem_Organization = ? order by idPhone asc
00:00:013	4	00:00:003	Relation	select idPhone, phoneNumber, extension, countryCode, phoneType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, areacode from Phone where (isDefault = ? and idCustomerContact = ? and phoneType = ?) and idSystem_Organization = ? order by idPhone asc
00:00:012	3	00:00:004	Relation	select idSystem_GridFieldAttributes, idSystem_GridAttributes, fieldName, isVisible, fieldWidth, fieldHeight, locationX, locationY, sortOrder, sequenceNumber, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, titleText, dataProvider, displayType, format, tooltip, horizontalAlignment, onAction, onDataChange, onFocusGained, onFocusLost, onRightclick, valueList, editable, isTotaled from System_GridFieldAttributes where idSystem_GridAttributes = ? and idSystem_Organization = ? order by idSystem_GridFieldAttributes asc
00:00:012	4	00:00:003	Relation	select idWebSite, webSiteAddress, idLookUp_WebsiteType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from WebSite where (idCustomerContact = ? and isDefault = ?) and idSystem_Organization = ? order by idWebSite asc
00:00:011	4	00:00:002	Relation	select idCustContactHasCustPerson, idCustomerContact, idCustomerPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault, thePosition from CustContact_has_CustPerson where (isDefault = ? and idCustomerContact = ?) and idSystem_Organization = ? order by idCustContactHasCustPerson asc
00:00:011	4	00:00:002	Relation	select idCustContactHasCustSite, idCustomerContact, idCustomerSite, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault from CustContact_has_CustSite where idCustomerContact = ? and idSystem_Organization = ? order by idCustContactHasCustSite asc
00:00:011	4	00:00:002	Relation	select idCustContactHasLkpJobType, idCustomerContact, idLookUp_JobType, idLookUp_Department, idLookUp_Priority, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from CustContact_has_Lkp_JobType where idCustomerContact = ? and idSystem_Organization = ? order by idCustContactHasLkpJobType asc
00:00:011	4	00:00:002	Relation	select idCustomerContactHasAddress, idCustomerContact, idAddress, isBillingAddress, isDefaultAddress, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, idLookUp_AddressType from CustomerContact_has_Address where (isBillingAddress = ? and idCustomerContact = ?) and idSystem_Organization = ? order by idCustomerContactHasAddress asc
00:00:011	4	00:00:002	Relation	select idCustomerContactHasAddress, idCustomerContact, idAddress, isBillingAddress, isDefaultAddress, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, idLookUp_AddressType from CustomerContact_has_Address where (isDefaultAddress = ? and idCustomerContact = ?) and idSystem_Organization = ? order by idCustomerContactHasAddress asc
00:00:011	4	00:00:002	Relation	select idCustomerContactHasAddress, idCustomerContact, idAddress, isBillingAddress, isDefaultAddress, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, idLookUp_AddressType from CustomerContact_has_Address where idCustomerContact = ? and idSystem_Organization = ? order by idCustomerContactHasAddress asc
00:00:011	4	00:00:002	Relation	select idCustomerContactHasDocument, idCustomerContact, idDocument, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from CustomerContact_has_Document where idCustomerContact = ? and idSystem_Organization = ? order by idCustomerContactHasDocument asc
00:00:011	4	00:00:002	Relation	select idCustomerContactHasEmployee, idCustomerContact, idEmployee, isDefault, idLookUp_JobType, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from CustomerContact_has_Employee where idCustomerContact = ? and idSystem_Organization = ? order by idCustomerContactHasEmployee asc
00:00:011	4	00:00:002	Relation	select idEmail, emailAddress, idLookUp_EmailType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from Email where (idCustomerContact = ? and isDefault = ?) and idSystem_Organization = ? order by idEmail asc
00:00:011	3	00:00:003	Relation	select idPhone, phoneNumber, extension, countryCode, phoneType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, areacode from Phone where (isDefault = ? and phoneType = ? and idPerson = ?) and idSystem_Organization = ? order by idPhone asc
00:00:010	4	00:00:002	Aggregate SQL	select count(idCustContactHasCustPerson) as numContact from CustContact_has_CustPerson where (isDefault = ? and idCustomerContact = ?) and idSystem_Organization = ?
00:00:008	3	00:00:002	Custom	SELECT queryvalue FROM system_query WHERE queryname = ?
00:00:007	2	00:00:003	Relation	select idPhone, phoneNumber, extension, countryCode, phoneType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, areacode from Phone where (phoneType = ? and isDefault = ? and idPerson = ?) and idSystem_Organization = ? order by idPhone asc
00:00:007	3	00:00:002	Find	select idSystem_GridAttributes from System_GridAttributes where (isConfigurationActive = ? and idSystem_User = ? and formName = ?) and idSystem_Organization = ? order by idSystem_GridAttributes asc
00:00:006	3	00:00:002	Find	select idSystem_GridAttributes from System_GridAttributes where idSystem_Organization = ? order by idSystem_GridAttributes asc
00:00:005	2	00:00:002	Aggregate SQL	select count(idCustomerPerson) as customerpersonCount from CustomerPerson where idCustomerPerson = ? and idSystem_Organization = ?
00:00:004	1	00:00:004	Insert	insert into System_AuditKey (idSystem_AuditKey, idSystem_Audit, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, auditKey, idSystem_AuditTableKey, idSystem_Organization) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
00:00:004	2	00:00:002	Relation	select idCustomerPerson, idLookUp_Department, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from CustomerPerson where idCustomerPerson = ? and idSystem_Organization = ? order by idCustomerPerson asc
00:00:004	2	00:00:002	Relation	select idCustomerSite, notes, idAddress_SITE, idAddress_BILLING, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, siteName, siteCode, siteReference from CustomerSite where idCustomerSite = ? and idSystem_Organization = ? order by idCustomerSite asc
00:00:004	1	00:00:004	Relation	select idPhone, phoneNumber, extension, countryCode, phoneType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, areacode from Phone where (phoneType = ? and idPerson = ? and isDefault = ?) and idSystem_Organization = ? order by idPhone asc
00:00:003	1	00:00:003	Custom	SELECT a.idemployee, a.employeecode, b.firstname, b.lastname FROM employee a, person b WHERE a.idperson = b.idperson and a.idsystem_organization = ? and a.idsystem_organization = b.idsystem_organization and a.datefinished is null
00:00:003	1	00:00:003	Insert	insert into System_Audit (idSystem_Audit, auditType, notes, rec_modificationUser, rec_modificationDate, rec_creationUser, rec_creationDate, idSystem_Organization) values (?, ?, ?, ?, ?, ?, ?, ?)
00:00:003	1	00:00:003	Aggregate SQL	select count(idCustomerContact) as customerCount from CustomerContact where idSystem_Organization = ?
00:00:003	1	00:00:003	Relation	select idAddress, street, city, theState, postcode, mapReference, country, notes, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from Address where idAddress = ? and idSystem_Organization = ? order by idAddress asc
00:00:003	1	00:00:003	Load foundset	select idCustomerContact from CustomerContact where idSystem_Organization = ? order by idCustomerContact asc
00:00:003	1	00:00:003	Load foundset	select idCustomerContact, idLookUp_AccountStatus, idLookUp_CostCentre, idLookUp_CustomerType, idLookUp_LaborType, idLookUp_PaymentType, idLookUp_TaxCode, idLookUp_Industry, idLookUp_PaymentTerms, idLookUp_ServiceCode, jobCustReference, isInvoiceBillable, isPartsPrintable, isLaborPrintable, isEquipmentPrintable, isJobOrderNumberCompulsory, sellingPriceMethod, discountApplied, creditLimit, defaultServiceFee, customerName, notes, jobNotes, abn, idLookUp_Source, idlookup_servicearea, customercontactcode, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, idLookUp_ProductPriceCode, idEmployee, idLookUp_TaxCode_Labour, idLookUp_TaxCode_Parts, idLookUp_ProductLocation, idLookUp_EmployeeGroup from CustomerContact where idCustomerContact in (?, ?, ?, ?) and idSystem_Organization = ?
00:00:003	1	00:00:003	Relation	select idCustomerSiteHasCustomerPerson, idCustomerSite, idCustomerPerson, idSystem_Organization, rec_creationDate, rec_creationUser, rec_modificationDate, rec_modificationUser, isDefault from CustomerSite_has_CustomerPerson where (idCustomerSite = ? and isDefault = ?) and idSystem_Organization = ? order by idCustomerSiteHasCustomerPerson asc
00:00:003	1	00:00:003	Relation	select idEmail, emailAddress, idLookUp_EmailType, isDefault, idCustomerContact, idPerson, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from Email where (idPerson = ? and isDefault = ?) and idSystem_Organization = ? order by idEmail asc
00:00:003	1	00:00:003	Load foundset	select idInvoice, invoiceNumber, datePrinted, datePosted, dateinvoicedue, deliveryamountcurrency, otheramountcurrency, servicefeecurrency, deliveryamount, otheramount, servicefeeamount, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isOnHold, invoicedate, idLookUp_TaxCode, idInvoiceBilling, isClosed, isAmountsIncludeTax, invoiceComment, idCustomerContact, invoiceReference, totalIncTaxOwing, lockedInvoiceAmount, invoiceNumberPrefix, invoiceNumberSuffix from Invoice where idInvoice in (?, ?, ?) and idSystem_Organization = ?
00:00:003	1	00:00:003	Load foundset	select idLookUp_AccountStatus, accountStatusId, accountStatusDescription, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, statusAction, isDefault from LookUp_AccountStatus where idLookUp_AccountStatus in (?, ?) and idSystem_Organization = ?
00:00:003	1	00:00:003	Load foundset	select idLookUp_PaymentType, paymentTypeId, paymentTypeDescription, detailType, cardType, creditCardFeePartNumber, creditCardFeeSurcharge, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault from LookUp_PaymentType where idLookUp_PaymentType in (?, ?, ?) and idSystem_Organization = ?
00:00:003	1	00:00:003	Load foundset	select idLookUp_Priority, priorityId, priorityDescription, officeHoursStart, officeHoursEnd, responseTime, estimatedDuration, serviceFee, minCharge, escalationFirstWarning, escalationSecondWarning, escalationFinalWarning, workOnSaturday, workOnSunday, isChargeParts, isChargeLabor, isIgnoreMinimumCharge, isIgnoreServiceFee, idLookUp_LaborType, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault from LookUp_Priority where idLookUp_Priority = ? and idSystem_Organization = ?
00:00:003	1	00:00:003	Load foundset	select idLookUp_ProductPriceCode, productPriceCodeId, productPriceCodeDescription, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, seq, isDefault, defaultMarkup from LookUp_ProductPriceCode where idLookUp_ProductPriceCode in (?, ?, ?) and idSystem_Organization = ?
00:00:003	1	00:00:003	Relation	select idPerson, firstname, lastname, idLookUp_PersonTitle, notes, birthday, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser from Person where idPerson = ? and idSystem_Organization = ? order by idPerson asc
00:00:002	1	00:00:002	Custom	SELECT idinvoice FROM invoice a JOIN invoicebilling b ON a.idinvoicebilling = b.idinvoicebilling WHERE b.idcustomercontact = ?
00:00:002	1	00:00:002	Load foundset	select idInvoice from Invoice where idSystem_Organization = ? order by idInvoice asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_AccountStatus from LookUp_AccountStatus where idSystem_Organization = ? order by idLookUp_AccountStatus asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_CostCentre from LookUp_CostCentre where idSystem_Organization = ? order by idLookUp_CostCentre asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_CostCentre, costCentreId, costCentreDescription, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault from LookUp_CostCentre where idLookUp_CostCentre in (?, ?, ?, ?, ?) and idSystem_Organization = ?
00:00:002	1	00:00:002	Load foundset	select idLookUp_CustomerType from LookUp_CustomerType where idSystem_Organization = ? order by idLookUp_CustomerType asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_CustomerType, customerTypeId, customerTypeDescription, calloutFee, idLookUp_LaborType, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault from LookUp_CustomerType where idLookUp_CustomerType in (?, ?) and idSystem_Organization = ?
00:00:002	1	00:00:002	Load foundset	select idLookUp_Industry from LookUp_Industry where idSystem_Organization = ? order by idLookUp_Industry asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_JobType from LookUp_JobType where idSystem_Organization = ? order by idLookUp_JobType asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_PaymentTerms from LookUp_PaymentTerms where idSystem_Organization = ? order by idLookUp_PaymentTerms asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_PaymentType from LookUp_PaymentType where idSystem_Organization = ? order by idLookUp_PaymentType asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_Priority from LookUp_Priority where idSystem_Organization = ? order by idLookUp_Priority asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_ProductPriceCode from LookUp_ProductPriceCode where idSystem_Organization = ? order by idLookUp_ProductPriceCode asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_ServiceCode from LookUp_ServiceCode where idSystem_Organization = ? order by idLookUp_ServiceCode asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_Source from LookUp_Source where idSystem_Organization = ? order by idLookUp_Source asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_Source, sourceId, sourceDescription, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault from LookUp_Source where idLookUp_Source in (?, ?) and idSystem_Organization = ?
00:00:002	1	00:00:002	Load foundset	select idLookUp_TaxCode from LookUp_TaxCode where idSystem_Organization = ? order by idLookUp_TaxCode asc
00:00:002	1	00:00:002	Load foundset	select idLookUp_TaxCode, taxCodeId, taxCodeDescription, rate, notes, idSystem_Organization, rec_creationDate, rec_modificationDate, rec_creationUser, rec_modificationUser, isDefault from LookUp_TaxCode where idLookUp_TaxCode in (?, ?, ?) and idSystem_Organization = ?
00:00:001	1	00:00:001	Custom	SELECT job.idjob FROM job JOIN jobcustomer ON job.idjobcustomer = jobcustomer.idjobcustomer WHERE jobcustomer.idcustomercontact = ?

I checked my calculations, they’re not even executed at module load time.
There’s only up to 10 records in each module, so it’s not a heavy data load issue.
I debugged onLoad(), onRecordSelection and other methods that might have something in them but found nothing that slows the solution down.

Could it be how CSS is implemented? We have new styles but it’s already been slow before that…

I am stuck.
Could anyone come up with more suggestions please?

Cheers,
Maria

What else is triggered during startup?
Do you touch a lot of forms?

Which version of Servoy are you using and - depending on that - did you use the profiler to find out how much time your code actually needs to run?

Um… I removed the stylesheet from my forms in one of the modules and the loading speed increased dramatically.
But we need our styles.
What can be wrong with them? Is it normal that they load so long?
css pictures are only small jpegs that are usually stretched and used as backgrounds.

Cheers,
Maria