YOUR FEEDBACK
Iterators in C#: Nothing Beats the Foreach Loop
Darryl wrote: I'm with Dave, screw your crappy pop-ups.
AJAXWorld RIA Conference
$300 Savings Expire July 25
Register Today and SAVE!


2007 West
GOLD SPONSORS:
Active Endpoints
Your SOA Needs BPEL for Orchestration
BEA
Virtualized SOA: Adaptive Infrastructure for Demanding Applications
Nexaweb
Overcoming Bandwidth Challenges with Nexaweb
TIBCO
What is Service Virtualization?
SILVER SPONSORS:
WSO2
Using Web Services Technologies and FOSS Solutions
Click For 2007 East
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
POWERBUILDER LINKS YOU MUST CLICK ON


The Lost Art of Performance

Digg This!

Page 2 of 2   « previous page

  • Compile your application into "machine code" if you perform a lot of looping operations in your application code. The performance gain may be up to 4,000% (depending on what operations you are performing)!
  • Use the DataWindow to generate HTML, XML, and JavaScript. It's normally much more efficient than hand coding it yourself.
  • Never code any working code in either a Constructor or Open event. Always create a PostOpen or PostConstructor event where intensive initialization logic is coded.
  • Try to use continuous feedback mechanisms where long processing tasks cannot be avoided. That could be in the form of a simple progress bar or using a polling technique in a Web page to let the user know when something has completed.
  • Break complex transactions down into small steps and guide the user through the sequence while confirming each step as you go along (continuous interaction gives the user the impression of excellent response time).
  • Retrieve only the information needed to satisfy the current transaction. For example, if the employee address is required, do not select employment history, pension information, current projects, etc., just because you think they make take that route next in your application (don't laugh, I've seen that coded).
  • Don't save up multiple row updates. Update each row as the user changes the data and focus. This also helps prevent deadlocks - however, you may have to change your database design to accommodate this technique.
  • Use "dirty" reads to force "no locking" operations for read-only transactions. This instructs your DBMS to bypass tracking row, page, and table locks, which is a very CPU-intensive operation.
  • In EAServer, use "Connection Caches" tuned for their functionality, for example, a CC for BLOB processing where packet sizes can be optimized for heavy DataStreams.
  • Update your software to the latest versions to help gain access to new O/S features and performance/stability options.
  • Set up a separate a "performance and stress testing environment" that mirrors your production environment as close as possible.
  • Use products like WinRunner, Robot, JMeter, etc., to drive both thorough functionality and load testing on your application system's various components throughout the SDLC.
  • Sort your data on the client or application server. Adding an "Ordered By" clause on your SQL forces the result set to be written to disk.
  • Never name a stored procedure beginning with "SP_" as it forces an MS-SQLServer or ASE DBMS to access the "Master" database each time (weird but true).
  • Use PowerBuilder's multi-threading features by utilizing the SharedObject methods.
I hope you are able to use some of these suggestions in your next development (re-factoring) project. There are a lot more things that I could cover, but not for this short editorial. I just wanted the reader to get a feeling for some of the considerations you need to address - that the average application will face. Even for smaller applications it can make a difference with the longest transaction completing in 1-2 seconds versus 15-30 seconds. Last, but not least, if you get the chance to talk to your local university or college, ask them to reinstate or develop a "Designing for Performance" course and introduce it into their curriculum (like the good old days) instead of buying more hardware. I would suggest to vendors and educational establishments that holding contests that award prizes for completing a transaction in the fastest time, with the least amount of code, with the least amount of I/O, etc., is a really "Cool" idea!


Page 2 of 2   « previous page

About Chris Pollach
Chris Pollach is the president of Software Tool & Die Inc. (a consulting company based in Ottawa, Ontario, Canada) and has been using PB since November 1989 (version 0.8). When not developing in PB, Chris enjoys fishing and martial arts.

PBDJ LATEST STORIES . . .
Adobe's Kevin Lynch and Microsoft's Scott Guthrie to Keynote AJAX World RIA Conference & Expo
Two of the biggest launches in Rich Internet Application history took place in 2007/2008 when Adobe launched AIR 1.0 in February '08 and Microsoft launched Silverlight (September '07). At the 6th International AJAXWorld RIA Conference & Expo in October SYS-CON Events is delighted to be
A Technology Leap for PowerBuilder Developers
Sybase has just released the latest version of its premier .NET development tool in PowerBuilder version 11.2. I am proud to say that I haven't missed a beta since November 1989 (version 0.8) and that includes PocketBuilder and InfoMaker too. I need to thank the people at Sybase for co
PowerBuilder and EAServer: Uniting the .NET and J2EE Communities
In PowerBuilder 11.2, .NET meets J2EE head-on with the capability to deploy .NET Windows Forms and Web Forms applications (as well as assemblies and Web Services) that access Enterprise JavaBeans (EJBs) in Sybase's own EAServer. As you'll see over the course of this article, integratin
HarPB Tool Review
HarPB is a specialized utility for checking PowerBuilder source objects in and out of AllFusion Harvest. It handles the special requirements of checking objects out to PowerBuilder Libraries (PBLs) and checking objects in from PBLs. These operations are non-standard to most source cont
PowerBuilder Editorial: The State of the State
Back in 2002, Sybase announced their four-phase approach toward adding .NET support to PowerBuilder. Phase 1 was the implementation of web services in PB9 and Phase 2 was the release of DataWindow.NET, which was packaged with PB 10. Phases 3 and 4 were the more significant phases. In P
PowerBuilder History - When Did Sybase Develop PB and How Did It Evolve?
I have been asked many times by various clients, students, and the IT curious about PowerBuilder: When did Sybase develop the product and how did it evolve? I keep telling this story and answering e-mails on the subject. I am now to the point where I have decided that I should have PBD
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE
BREAKING POWERBUILDER / SYBASE NEWS
Sybase Reports Record Second Quarter Results, Driven by 15% Revenue Growth
Sybase, Inc. (NYSE:SY), the largest enterprise software and services company exclusively