Hi, I am trying to bind a datatable to ultragrid via C# in an windows application. The datatable contains 60,000 rows and 20 columns. The binding time (in milliseconds) for 32 BIT (2 GB RAM) and 64 BIT (4GB RAM, same processors) systems is as given below:
As is evident from the data, though the system configuration of 32 bit machine is inferior to the 64 bit machine, time taken for 64 bit machine is more. Is it because I am using a 32 BIT Infragistics dll for the 64 BIT system. Is there any 64 bit dll for infragistics? Please Help.....
Normal 0 false false false MicrosoftInternetExplorer4
TRIAL #
64BIT
32 BIT
1
812
453
2
796
421
3
781
4
687
5
437
6
7
8
AVG.
765.125
429.000
Do you get similar results when binding to a .NET DataGridView? I recall seeing some performance benchmarks a while back related to the fact that much of the performance increase was actually in the .NET code that the particular application used through binding, though since this was a while ago, I'm afraid that I don't remember the specifics. There are no 64bit-specific versions of NetAdvantage, but you could certainly target your application to compile for 64bit; furthermore, I do not believe that any of the .NET DLLs themselves are compiled for a x64. As a final note, since 32bit applications will run through the WOW64 emulation layer on an x64 machine, it is expected that there may be a performance hit (though these numbers seem rather high to attribute to that).
-Matt
Hi Matt, Thanks for your reply.
I tested the same with a .NET DataGridView, and the comparison of time in milliseconds to databind the datatable (60000 rows and 20 columns) to the datagridview is given below.
So the performance of datagridview on 64 bit system is better than that for 32 bit system. But we need the ultragrid for our project as it supports the multi band structure. Please advise....
Unfortunately, I don't really have any suggestions on how to speed this up on a 64bit machine. It's possible that compiling the NetAdvantage DLLs to target an x64 OS will speed the application up, but I do not know this for sure. Your best option is to submit a small sample to Developer Support so that they can have someone look into it.
You actually don't need to explicitly target x64 when compiling a .NET assembly. The assemblies are compiled into MSIL code which will then be "compiled" for a particular processor or architecture dynamically when they are loaded. You can verify this by looking at c:\windows\assembly on your comptuer using a command window. Notice that there are a few different folders - GAC, GAC_32, GAC_64, GAC_MSIL. The Infragistics assemblies will be in GAC_MSIL since they're compiled for use on "ANY" platform.
As for performance differences, there could be a lot of reasons. The x64 compiler may be slower than the x86 compiler. It may be the larger spaces of unused memory. It could be the longer time it takes to do simple arithmatic with the larger memory address spaces, etc. While X64 improves performance in some scenarios it's real benefit is allow us to pass the previous memory barrier we were facing with a 32 bit architecture. I believe 4GB of ram was the most you would get out of a x86 architecture since the memory address over 4GB becomes longer than 32bytes in length.
If you google x64 vx. x86, you'll see lots of posts about how apps run slower on x64. The main reason you're seeing perf improvements is because you've doubled your ram on your x64 box. Had you done that on the x86 machine, I think you probably would have seen similar results.
Hope this helps,
-Tony