WPF giving slow performance on a particular win 8 machine - c#

I have a WPF application utilizing Dotnet framework 4.0 client profile.
The application is running perfectly on any windows 8.0 Dell touch screen machine.
I am trying to run the application on a machine having Intel HD Graphics 4600. The application run is very slow and even the transition effect takes longer.
As I have seen somewhere suggested to try Disabling Hardware Acceleration - I din find any registry key named :
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration
I have updated the Graphics Driver and all the windows updates are done.
Can anybody please tell me how can I find / change the Hardware Acceleration / Rendering Mode ?
Or is there anything else that need to be checked ?
Update: I have tried setting RenderOption forcefully to SoftwareOnly and result was still the same.
Some more info about the application:
- Its a multi threaded application - doin some checks in the background.
- We are using some of Telerik controls [Telerik UI fro WPF] and version is 2014.1.00331.40
- System details :
Processor : Intel Core(TM) - i5 -4200M CPU #2.50 GHz
RAM : 8GB
Pen and Touch : Full windows touch pints with 10 touch points
Please suggest anything why its working this much slow for this particular machine.

Related

Performance of WPF Application on Windows 8 tablet

I have a WPF application developed on a Windows 7 - 32 bit desktop. The app runs fine in the development system. It also runs smoothly on Windows 8 32 & 64 bit desktops.
When I run the same application on a tablet with Windows 8 - 32 bit, the application UI responds very slowly and runs very slowly. This application is actually used to monitor data received over UDP.
The tablet I am using is an HP ElitePad 900 which has Intel Atom Z2760 / 1.8 GHz (Dual Core), 2GB RAM.
I don't think the hardware is what is causing the problem.
I tried setting the ProcessRenderingOption as
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
in the application startup. But still no change. I need some suggestions/answers as to what the problem maybe.
FYI the tablet has Windows 8 not RTM, so it allows desktop applications also to run.
If there is no difference when you set ProcessRenderMode = SoftwareOnly, it is helpful to investigate the cause of problem.
Situation 1
If your app uses effects that can't be handled by GPU,
it is always rendered by CPU regardless ProcessRenderMode setting.
Thus, ProcessRenderMode is implicitly set SoftwareOnly.
So when you set the setting SoftwareOnly explicitly, it has no effect.
In this case, your app's performance depends on CPU throughput.
ATOM may be poor than your desktop CPU, the result can be explained.
Situation 2
If your tablet's GPU has not enough to render WPF effects,
some effects are rendered by CPU. This causes performance down.
You can check WPF GPU capability with System.Windows.Media.RenderCapability class.
Conclusion
The cause is
CPU throughput because your app is always rendered by software. Or
poor GPU capability to render WPF rich effects.

Memory consumption on Windows Phone 8 is 3 times what is on Windows Phone 7

I'm developing an app that runs on both WP7 and WP8. After I finished it I started running the Performance analysis to improve the app overall performance.
The app is written for WP7, but I have some projects that run over WP8 to add features like in-app-purchase, lockscreen and so on.
When I ran the memory analysis on WP7, the app averaged 50mb of ram throughout execution, an acceptable value, the weird thing was when I ran the same xap on a WP8 device the app uses on average 150mb of ram.
I searched around the web and found nothing related to this issue.
I used a Lumia 800 and lumia 510 to make the analysis on the WP7., and use a Lumia 520, 820 and 925 to make the analysis on WP8 devices.
I'm using Visual Studio 2012.
I also considered that it could be a bug on VS2012, but the app crashes on the lumia 520 (with out of memory, after a while) but never crashes on the lumia 800 or 510.
The app is heavy on images, but all of them are the exact size that is used on the phone (never more than 50 100x100 jpg pictures are displayed in the app at the same time).
Any suggestions and solutions are welcome.
EDIT: The memory differences that I'm talking about is just by running the Home view, my performance analysis test is simply, launch the app swipe some controls (I have a pivot with 2 items) and close the session. There is no navigation involved. I'm using a RadDataboundListBox, but already tried to change to Listbox and LongListMultiSelector without any significant memory consumption change

Read GPU temperature in C#

I want to create a program that monitors my GPU's temperature (AMD ATI HD) and if it goes below say 50C to send me an email.
I know how to send an email - I just have no idea on how to get the temerature :/
Any help would be awesome!
Running Visual Studio - for Windows Forms (or Java works too!)
Andy
I I suggest that you have a look at the OpenHardwareMonitor Project over here
The Open Hardware Monitor is a free open source software that monitors temperature sensors, fan speeds, voltages, load and clock speeds of a computer.
The Open Hardware Monitor supports most hardware monitoring chips found on todays mainboards. The CPU temperature can be monitored by reading the core temperature sensors of Intel and AMD processors. The sensors of ATI and Nvidia video cards as well as SMART hard drive temperature can be displayed. The monitored values can be displayed in the main window, in a customizable desktop gadget, or in the system tray. The Open Hardware Monitor software runs on 32-bit and 64-bit Microsoft Windows XP / Vista / 7 and any x86 based Linux operating systems without installation.
They are open source and you should be able to check out their code and have a look there.
Check out the Overdrive API in the AMD Display Library. They have a C# example but you'll have to add the hook to the temperature library yourself.
AMD Display Library
Specifically: ADL2_Overdrive6_Temperature_Get (ADL_CONTEXT_HANDLE context, int iAdapterIndex, int *lpTemperature)
For NVIDIA users...
I tried Open Hardware Monitor, and it worked, but sometimes it would get in a state when it was causing high CPU usage while pulling the GPU temperature (this problem would go away if I had it pulling only the CPU temperature).
I ended up using this NuGet package to pull the temperature directly from NVAPI.
https://github.com/falahati/NvAPIWrapper
Some sample code looks like...
PhysicalGPU[] gpus = PhysicalGPU.GetPhysicalGPUs();
foreach (PhysicalGPU gpu in gpus)
{
Console.WriteLine(gpu.FullName);
foreach (GPUThermalSensor sensor in gpu.ThermalInformation.ThermalSensors)
{
Console.WriteLine(sensor.CurrentTemperature);
}
}

No suitable graphics card is found error in Visual Studio 2010 debug mode

When i try to run my program i get this error:
"No suitable graphics card is found. Could not find a Direct3D device
that supports the XNA Framework Hi-Def profile. Verify that a suitable
graphics device is installed. Make sure your desktop isn't locked, and
that no other application is running in full screen mode. Avoid
running under Remote Desktop or as a Windows service. Check the
display properties to make sure hardware acceleration is set to Full."
I tryied to search: i can't set Rearch profile because i have to use Hi-Def libraries. I tryied to uninstall and install XNA 4.0 and .NET 4.5 but it doesn't work.
What i should do?
My laptop:
Pentium (R) Dual-Core CPU 2.2GHz
RAM: 4GB
Windows 7 Ultimate 32 bit
DirectX 11
Mobile Intel(R) 4 Series Express Chipset Family
Intel Graphics Media Accelerator (GMA) 4500MHD
Your graphics card does not meet the XNA requirements. Why do you have to use Hi-Def? Your DirectX sounds up to date, but those are still very low end cards. Read the exact specifications on Shawn Hargreaves blog for more information.
You can set your XNA project settings in the corresponding tab to target Reach profile, not the HD one. This will probably let you run the app, but beware the performance may be very low.
You may still be able to reference the HD libs and call their methods. Try to solve specific problems you have with that approach instead.
But really get a discrete graphics card if you want high performance and less problems.

WPF on Rendering Tier 2 machine still using Software Rendering

I have a WPF application in which I put a check for the rendering tier and on my dev machine it reports Tier 2 every time. As far as I know this means that it has full hardware rendering capability. Which it should, it's a new system running an Nvidia 550M chip. But when I check with WPFPerf, it shows that the entire app is rendering in software mode! What can I check to figure out what is causing this?
One thought is could it be that I have AllowTransparancy set to True? (It's a borderless window, so I had to use it).
NVidia 555M? That sounds like Optimus issue. I had this issue with some games - the GPU-chooser doesn't detect a performance intensive application and runs it on the GPU integrated in CPU.
I never had this issue with a WPF app though (I think the integrated GPU should be tier 2 as well, at least it appears to be on my Core i7).
Try going to NVidia Control Panel -> Manage 3D Settings -> add your application there. If you are using VS debugger, add the X.vshost.exe as well.

Categories

Resources