# Weak performance on Windows 10 with Igor 7 and Qt-Toolkit

flashbanger

Sun, 07/02/2017 - 02:45 am

i have a new Laptop, which should in general be fast enough to work with Igor Pro 7. (HP-Probook 455 G4, AMD A10 Quadcore, 8 GB DDR4 RAM, SSD, WIN10Pro)

But tragically i recognized that our program written to open AFM-Data is executed much slower than on my previous laptop. (Intel P6200, 4 GB RAM, HDD, Win7Pro). So to find out what slows the new laptop down i have used the benchmark 2.02 and got the following results:

**New Laptop**

```
**** test on Windows 10 Pro6.3.15063 using 7.04 and 121 passes; Quadcore AMD A10 4x3.3 GHz
Create new graph time: 916.78ms, relative speed= 0.33
big data update time: 184.94ms, relative speed= 0.77
curve fit time: 528.52µs, relative speed= 3.57
user curve fit time: 5.73ms, relative speed= 6.19
double complex fft time: 469.70µs, relative speed= 3.14
single complex fft time: 416.66µs, relative speed= 2.85
double real fft time: 202.03µs, relative speed= 2.79
single real fft time: 214.51µs, relative speed= 2.29
5 pass smooth time: 299.36µs, relative speed= 1.81
Sort 8192 points time: 12.54ms, relative speed= 3.05
WaveStats time: 202.21µs, relative speed= 1.32
simple eqn time: 275.26µs, relative speed= 5.07
exp eqn time: 480.39µs, relative speed= 4.18
sqrt eqn time: 384.88µs, relative speed= 4.60
sin eqn time: 373.70µs, relative speed= 3.11
User fit fctn time: 200.05µs, relative speed= 6.46
MatrixOp eqn time: 35.17µs, relative speed= 0.68
us timer overhead time: 11.03ns, relative speed= 13.25
fctn Overhead time: 73.55ns, relative speed= 3.94
Fit Fctn Overhead time: 282.87ns, relative speed= 7.09
Do Loop Overhead time: 74.16ns, relative speed= 3.47
For Loop Overhead time: 64.46ns, relative speed= 3.30
Local var assignment time: 14.86ns, relative speed= 3.66
Double wave assignment time: 186.82ns, relative speed= 3.26
Single wave assignment time: 185.16ns, relative speed= 3.08
Double wave[] read time: 457.91ps, relative speed= 390.94
Double wave read time: 12.23ns, relative speed= 5.59
Single wave[] read time: -727.89ps, relative speed= -1422.28
Single wave read time: 22.07ns, relative speed= 5.81
Add const time: 10.48ns, relative speed= 4.03
Mult loc var time: 11.12ns, relative speed= 3.21
Mult const time: 10.77ns, relative speed= 3.90
MatrixOp overhead time: 29.79µs, relative speed= 0.61
**** done ****
total test time= 158.405
```

**Old Laptop**

```
**** test on Windows 7 Professional Service Pack 16.1.7601 using 7.04 and 121 passes; Intel P6200 2x2.4 GHz
Create new graph time: 176.53ms, relative speed= 1.70
big data update time: 223.27ms, relative speed= 0.64
curve fit time: 816.83µs, relative speed= 2.31
user curve fit time: 9.13ms, relative speed= 3.88
double complex fft time: 710.62µs, relative speed= 2.07
single complex fft time: 639.62µs, relative speed= 1.86
double real fft time: 344.28µs, relative speed= 1.64
single real fft time: 303.08µs, relative speed= 1.62
5 pass smooth time: 192.45µs, relative speed= 2.82
Sort 8192 points time: 17.48ms, relative speed= 2.19
WaveStats time: 213.12µs, relative speed= 1.25
simple eqn time: 613.32µs, relative speed= 2.28
exp eqn time: 801.54µs, relative speed= 2.51
sqrt eqn time: 711.38µs, relative speed= 2.49
sin eqn time: 477.58µs, relative speed= 2.44
User fit fctn time: 405.80µs, relative speed= 3.18
MatrixOp eqn time: 52.87µs, relative speed= 0.45
us timer overhead time: 0.00s, relative speed= inf
fctn Overhead time: 116.14ns, relative speed= 2.49
Fit Fctn Overhead time: 477.67ns, relative speed= 4.20
Do Loop Overhead time: 134.08ns, relative speed= 1.92
For Loop Overhead time: 89.56ns, relative speed= 2.38
Local var assignment time: 19.63ns, relative speed= 2.77
Double wave assignment time: 299.87ns, relative speed= 2.03
Single wave assignment time: 305.57ns, relative speed= 1.87
Double wave[] read time: 1.37ns, relative speed= 131.09
Double wave read time: 24.43ns, relative speed= 2.80
Single wave[] read time: 17.74ns, relative speed= 58.35
Single wave read time: 35.68ns, relative speed= 3.59
Add const time: 12.90ns, relative speed= 3.27
Mult loc var time: 12.79ns, relative speed= 2.79
Mult const time: 12.50ns, relative speed= 3.36
MatrixOp overhead time: 45.19µs, relative speed= 0.40
**** done ****
total test time= 70.4312
```

Based on that results, the new Laptop is faster for nealy everything except "creating new graphs", where the old Laptop is a lot faster. Like the benchmark, our program is creating a lot of graph-windows and so therefore the new Laptop is slowed down significantly by this issue. I tried to change the GUI-Framework back to Navtive-Graphics(GDI or GDI+) but this was not speeding up the process noticeable. I also disabled all Windows10-GUI-Effects (via SystemPropertiesPerformance.exe), but this also was not speeding up the benchmarks results.

Does anyone else recognized the same issue on Windows 10 compared to Windows 7 or is there any trick to speed up the GUI on my machine?

Best regards,

flashbanger

`DisplayHelpTopic "Graphs and High-Resolution Displays"`

July 2, 2017 at 03:12 am - Permalink

Thank you for your fast reply,

i am not sure if my Laptop has a "High-Resolution Display". The native resolution of my screen is 1920x1080 (FullHD). This is higher than my previous Laptop (1366x768), but it is still much lower than 4K or Retina-Displays, for which the Igor HelpTopic article was written.

I found out that switching on the "Fusion-Style"-Option speeds up the IGOR-GUI roughly by a factor of two. This is nice, but it is still 2.5 times slower than on my old machine :-/

New Laptop with Fusion-Style`**** test on Windows 10 Pro6.3.15063 using 7.04 and 121 passes; Quadcore AMD A10 4x3.3 GHz Create new graph time: 430.83ms, relative speed= 0.69 big data update time: 348.96ms, relative speed= 0.41 curve fit time: 537.93µs, relative speed= 3.51 user curve fit time: 6.07ms, relative speed= 5.84 double complex fft time: 481.35µs, relative speed= 3.06 single complex fft time: 437.87µs, relative speed= 2.71 double real fft time: 211.51µs, relative speed= 2.67 single real fft time: 201.52µs, relative speed= 2.44 5 pass smooth time: 298.72µs, relative speed= 1.82 Sort 8192 points time: 13.10ms, relative speed= 2.92 WaveStats time: 223.98µs, relative speed= 1.19 simple eqn time: 285.44µs, relative speed= 4.89 exp eqn time: 499.23µs, relative speed= 4.03 sqrt eqn time: 403.58µs, relative speed= 4.38 sin eqn time: 391.22µs, relative speed= 2.97 User fit fctn time: 202.09µs, relative speed= 6.40 MatrixOp eqn time: 34.07µs, relative speed= 0.70 us timer overhead time: 3.97ns, relative speed= 36.81 fctn Overhead time: 99.97ns, relative speed= 2.90 Fit Fctn Overhead time: 291.47ns, relative speed= 6.88 Do Loop Overhead time: 77.98ns, relative speed= 3.30 For Loop Overhead time: 68.65ns, relative speed= 3.10 Local var assignment time: 15.64ns, relative speed= 3.48 Double wave assignment time: 221.84ns, relative speed= 2.75 Single wave assignment time: 198.03ns, relative speed= 2.88 Double wave[] read time: 643.19ps, relative speed= 278.32 Double wave read time: 12.01ns, relative speed= 5.70 Single wave[] read time: 4.04ns, relative speed= 256.48 Single wave read time: 24.30ns, relative speed= 5.28 Add const time: 11.30ns, relative speed= 3.74 Mult loc var time: 11.44ns, relative speed= 3.12 Mult const time: 11.41ns, relative speed= 3.68 MatrixOp overhead time: 31.21µs, relative speed= 0.58 **** done **** total test time= 119.849`

Best regards,

flashbanger

July 2, 2017 at 04:12 am - Permalink

A little statistical comparison between the laptops in attached graph albeit done in a different stats program so please forgive me.

Couple of things popped out.

The single and double wave[] read times are suspect and in the new laptop are actually negative.

Second when i exclude those two factors and compare the results looking at the relative speed, the new laptop comes out ahead in all but two categories, make a new graph and 5 pass smooth. I think the strange read and these two factors are skewing the results.

Andy

July 2, 2017 at 08:41 am - Permalink

My problem is that programs run faster in Igor6.37 than in Igor 7.

July 3, 2017 at 07:01 am - Permalink

In order to address your particular problem, it would be most helpful if you can contact support@wavemetrics.com with a specific example of something that is much faster in IP6 vs. IP7. Please provide the system information from Igor 7 (either use the Help->Contact Support menu item or open the Help->About dialog, click System Information, and copy that information to your email message). Also provide the version of IP6 you're using.

We sometimes get reports like this from users. In the cases where the user provides a specific example of the problem, we often find that Igor 7 is actually faster than Igor 6, though that's not always the case. As ChrLie pointed out, drawing on high-DPI displays can be significantly slower under certain situations.

If you can provide a specific example that demonstrates the problem, we can try running your example with a profiler to see whether there are any bottlenecks in Igor's code that can be eliminated.

July 3, 2017 at 09:27 am - Permalink

Igor 6.37:

*** test on Windows 8 Professional (Build 9200)6.2.9200 using 6.37 and 21 passes; Dual 2 GHz PowerPC G5 Mac Pro

Create new graph time: 113.33ms, relative speed= 2.64

big data update time: 43.56ms, relative speed= 3.29

curve fit time: 567.32µs, relative speed= 3.32

user curve fit time: 3.84ms, relative speed= 9.24

double complex fft time: 440.13µs, relative speed= 3.35

single complex fft time: 290.70µs, relative speed= 4.09

double real fft time: 278.34µs, relative speed= 2.03

single real fft time: 149.90µs, relative speed= 3.28

5 pass smooth time: 138.60µs, relative speed= 3.92

Sort 8192 points time: 5.62ms, relative speed= 6.80

WaveStats time: 71.95µs, relative speed= 3.71

simple eqn time: 142.38µs, relative speed= 9.80

exp eqn time: 272.28µs, relative speed= 7.38

sqrt eqn time: 197.62µs, relative speed= 8.95

sin eqn time: 214.71µs, relative speed= 5.42

User fit fctn time: 121.99µs, relative speed= 10.60

MatrixOp eqn time: 24.26µs, relative speed= 0.98

** done ****

total test time= 5.93806

Igor 7:

**** test on Windows 10 Pro6.3.14393 using 7.04 and 21 passes; Dual 2 GHz PowerPC G5 Mac Pro

Create new graph time: 252.28ms, relative speed= 1.19

big data update time: 76.43ms, relative speed= 1.87

curve fit time: 220.42µs, relative speed= 8.56

user curve fit time: 3.29ms, relative speed= 10.79

double complex fft time: 342.25µs, relative speed= 4.30

single complex fft time: 310.54µs, relative speed= 3.83

double real fft time: 164.53µs, relative speed= 3.43

single real fft time: 153.49µs, relative speed= 3.21

5 pass smooth time: 107.97µs, relative speed= 5.03

Sort 8192 points time: 6.66ms, relative speed= 5.75

WaveStats time: 57.99µs, relative speed= 4.60

simple eqn time: 153.61µs, relative speed= 9.09

exp eqn time: 241.64µs, relative speed= 8.32

sqrt eqn time: 205.26µs, relative speed= 8.62

sin eqn time: 178.74µs, relative speed= 6.51

User fit fctn time: 115.38µs, relative speed= 11.20

MatrixOp eqn time: 24.04µs, relative speed= 0.99

**** done ****

total test time= 8.40098

This speed diffenrence between Igor 6 and Igor 7 (~4/3) is always there in my case.

However, Gizmo performance in Igor7 is quite superior to that in Igor 6.

July 4, 2017 at 04:14 am - Permalink

If you try to reproduce these tests, make sure that you close the Data Browser before you run the tests. The tests take a bit longer with the Data Browser open.

Here are some results (all are 21 passes of the "Run Display Only" button of the benchmark 2.02.pxp that ships with Igor) :

## Machine 1 (Windows 7, standard DPI display)

## IP 6

Create new graph time: 103.45ms, relative speed= 2.89

big data update time: 61.22ms, relative speed= 2.34

**** done ****

total test time= 4.27719

## IP 7.04

Create new graph time: 268.44ms, relative speed= 1.12

big data update time: 135.93ms, relative speed= 1.05

**** done ****

total test time= 9.42458

## IP 7.05

Create new graph time: 177.68ms, relative speed= 1.68

big data update time: 130.17ms, relative speed= 1.10

**** done ****

total test time= 7.2723

## Machine 2 (Windows 10, high DPI display)

## IP 6

Create new graph time: 170.91ms, relative speed= 1.75

big data update time: 202.49ms, relative speed= 0.71

**** done ****

total test time= 8.84801

## IP 7.04

Create new graph time: 259.77ms, relative speed= 1.15

big data update time: 231.01ms, relative speed= 0.62

**** done ****

total test time= 11.5585

## IP 7.05

Create new graph time: 174.60ms, relative speed= 1.71

big data update time: 227.45ms, relative speed= 0.63

**** done ****

total test time= 9.44496

July 6, 2017 at 03:17 pm - Permalink

Can you say what version of the Qt library was used for the update?

July 12, 2017 at 01:52 pm - Permalink

It identifies itself as 5.6.3, though 5.6.3 hasn't officially been released yet.

July 12, 2017 at 02:51 pm - Permalink