How can we help you today? How can we help you today?
dene.boulton
Hello, There are two likely reasons for the difference in timings that you are seeing when explicitly comparing a 32bit build under profile to a 64bit build under profile. Firstly is the performance of the profiler itself due to memory addressing of pointers, pointers for 64bit are twice as large (more memory used, larger cache consumption); this can cause some deviation when compared to 32bit if you are comparing absolute timing values. Another reason is when using a profiling mode of type 'Line Level timings...'; using these profiling modes mean the profiler has to make far more methods calls - with the 32bit profiler we can explicitly use the __fastcall calling convention as these methods are small. In comparison the 64bit profiler only has access to the one calling convention, that is similar to __fastcall but not quite (writes more to registers, writes to the stack). So in real terms this can add a significant difference to timings as we have to make large amounts of these method calls when recording line level data. The short of it would be if comparing 32/64bit builds where you think there is a performance problem in one then look to percentages as they will be a better indication. Even better would be to do a quicker validation check by looking at a comparison using Sampling mode first, then if you think it is needed to delve deeper with the more intrusive/detailed profiling modes. Also when comparing sessions remember there will be environmental conditions to consider, i.e. the load of the the machine due to other processes. Hope that helps. / comments
Hello, There are two likely reasons for the difference in timings that you are seeing when explicitly comparing a 32bit build under profile to a 64bit build under profile. Firstly is the performanc...
0 votes