Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » Performance issues upgrading from 2.6.4 to 3.3.0 on OnCallWindowProcIn Collapse All
Subject Author Date
Mark Hatfield Mar 28, 2017 - 10:51 AM

We’ve recently upgraded our ProfUIS from 2.6.4 to 3.3.0 as part of a technology refresh of our application. We needed to upgrade to support Windows 10 running 64 bit.

After the upgrade, we started noticing significant CPU increase while the application was at idle. Our application is an MDI app, with the capability of opening up to 6 documents simultaneously. With the 32 bit version of our application, running 2.6.4 ProfUIS, with 6 open documents, the CPU usage at idle averaged 0.5%.

The 64 bit version of our application with the same 6 documents opened idles at 17-20% CPU usage. (running on Windows 10 64 bit, intel i7, 2.7Ghx, 16GB ram) This usage is reflected in almost any GUI interaction. Sluggish and delayed dialog interaction, rendering of list controls etc.

Using the Dev Studio 2013 profiler I was able to determine that during idle the software is spending most of its time in this stack. (And several other stacks which end up in the same place)

CExtHookSpy::HookSpyItem_t::SHS_HookCallWindowProcIn    
CExtHookSpy::HSLL_OnCallWindowProcIn    
CExtHookSpy::HookSpyIsRegistered    
CExtHookSpy::HookSpyItem_t::IsRegistered    
CMap<CExtHookSpy * __ptr64,CExtHookSpy * __ptr64,bool,bool>::Lookup    

I had a look at the ProfUIS code and found 4 occurrences of:
HookSpyRegister( __EHSEF_MOUSE_ALL_WITHOUT_WHEEL|__EHSEF_WND_PROC_IN|__EHSEF_PRE_TRANSLATION );

If I rebuild the ProfUIS code and remove _EHSEF_WND_PROC_IN from all 4 calls, (ExtScrollWnd.cpp, ExtResizeableDialog.cpp, ExtComboBox.cpp) then I can get the idle processing down to 2-3%. Still not the 0% it was with 2.6.4.

As a verification that the port to 64 bit didn’t introduce additional issues with our software, I took ProfUIS 3.3.0 source and built a 32 bit version with DevStudio 2005 to test with our current 32 bit version. The same CPU increase can be observed. (Windows 7 32bit, 2.00ghz 4 GB RAM) Upgrading from 2.6.4 to 3.3.0 without any other changes increase the CPU usage ~15%.

Where do I go from here? What’s the next step? I see similar posts recently about performance issues with no replies.

Thank you,
Mark Hatfield