It's been a long time since I've built a SAS/AF program, but to circumvent these issues I always used pre-compiled/stored macro libraries.
FriedEgg your are right. There is something strange in Quentins installation.
Taking ca 5 seconds for macro compilation there must be several hundreds of macro-s being called.
With a number in the tenth's of macro-s I never have experienced that long response times. No problem to accept the advantage of avoiding a maintenance process for compilations.
What is causing that slow response it could be:
- bad IO tuning *buffers sizing alignment"
- VFB Virtual frame buffer when you are using a Unix based environment.
I found this note at IBM, the explanation there sounds to me applicable to all kind of graphics usage.
IBM Knowledge Center http // www-01.ibm.com/support/knowledgecenter/ssw_aix_53/com.ibm.aix.aixwnpgd/doc/aixwnpgd/xvfb.htm%23xvfb?lang=en
- Wait on IO in the network. Is very dependent to the OS.TCP delayed acknowledgment - Wikipedia, the free encyclopedia
- delay in the process SAS going to the webserver. It can sometimes not getting the close signal and by that the release/close is done by a time-out
Ok the topic/subject is moving into performance and concepts of solutions.
What I am seeing you are doing is bulk processing. Another word for that is batch.
One of the issues you will facing when trying to do that interactive is time-outs. The browser the webserver the SAS SP-server firewalls all have their time out settings.
Expect values of 30 seconds 5 minutes 30 minutes 2 hours. And the connection will be lost by some timeout.
You could try to optimize your processing so it will not reach one of those limits. Using a SP server for this will possible build up some locking events as one process can be busy for a long time.
Changing the html stream this being send to the browser is possible when the browser is supporting building up the screens while these are coming in.
One html page should have one top / one bottom as envelop. It will work (possibly) when you send multiple of those.
The weakness on this approach is that it is a trial (and error) for getting it working maybe trusting wrong features that will be closed some day.
Structural options:
- Scheduling (that one is intended for batch)
+ Real batch scheduling could be too complicated but you have java scheduling. Scheduling in SAS(R) 9.4
+ detaching a batch job from you SP that will generate a message or mail the results.
- AJAX That is the message queue approach within http using XMLHttpRequest functionality. It is disconnecting the updating process of the webpage from the user action.
As a pitty there is very little at SAS for this. http://www2.sas.com/proceedings/forum2007/201-2007.pdf and http://support.sas.com/resources/papers/proceedings10/014-2010.pdf
Maybe it is seen not always as safe because you are needing a webservice that can be called indepently as in the Win-gadgets http://support.sas.com/resources/papers/proceedings11/280-2011.pdf
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.