chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Windows vs Linux Performance, windows host 4-6x slower than linux gu


From: Mark Fisher
Subject: Re: Windows vs Linux Performance, windows host 4-6x slower than linux guest vm
Date: Mon, 6 Sep 2021 20:24:48 +0100

That performance discrepancy is kinda surprising, specially considering
that Linux is running as a guest on a VM on Windows.

Maybe profiling can help spot what is causing the performance
difference?

You'll have to bear with me here, as I haven't tried adding profiling before.

I think I've got it done, but it only outputs at the function level, and the profile between the two platforms just seems to mirror a general difference in being slower on one platform.

In the output, the top function is the main run method, then everything goes through "time-op" to grab timings.
Then the biggest time after that is just the one that takes the longest, day4 part2, which is doing md5 of lots of strings through the method "direct-hashing":

  (define (direct-hashing match length)
    (let ([n 0]
          [prim (md5-primitive)])
      (do-until (substring=? (message-digest-string prim (conc secret n)) match 0 0 length)
                (set! n (add1 n)))
      n))

And scanning down the other functions, they're all invoked the same number of times between both platforms, but just slower in windows.

Is it possible to get the profiling to tell me more than this?

Here's the output from Windows:
reading `PROFILE.18380' ...

procedure                                  calls  seconds  average  percent
---------------------------------------------------------------------------
advent2015::run                                1   11.862   11.862  100.000
time-op                                        8   11.850    1.481   99.898
aoc2015day04#direct-hashing                    2   10.716    5.358   90.338
aoc2015day04#aoc2015day04::part2               1    8.561    8.561   72.171
aoc2015day04#aoc2015day04::part1               1    2.155    2.155   18.167
aoc2015day03#stream-to-location-set            3    0.579    0.193    4.881
aoc2015day03#aoc2015day03::part2               1    0.490    0.490    4.130
aoc2015day03#aoc2015day03::part1               1    0.199    0.199    1.677
aoc2015day02#aoc2015day02::part1               1    0.193    0.193    1.627
aoc2015day02#aoc2015day02::part2               1    0.187    0.187    1.576
aoc2015day01#aoc2015day01::part1               1    0.034    0.034    0.286
aoc2015day01#floor-level                       1    0.034    0.034    0.286
aoc2015day01#aoc2015day01::part2               1    0.031    0.031    0.261
aoc2015day01#floor-level-matched               1    0.031    0.031    0.261
aoc2015day02#paper                          1000    0.006    0.000    0.050
aoc2015day03#negate                         8193    0.004    0.000    0.033
aoc2015day03#loc-east                       4184    0.004    0.000    0.033
aoc2015day03#loc-north                      3962    0.003    0.000    0.025
aoc2015day03#loc-south                      4136    0.002    0.000    0.016
aoc2015day03#loc-west                       4102    0.002    0.000    0.016
aoc2015day02#ribbon                         1000    0.001    0.000    0.008
aoc-files#aoc-resource-stream                  6    0.000    0.000    0.000
aoc2015day03#direction-to-location-stream      3    0.000    0.000    0.000
aoc2015day02#lwh-stream-transformer            2    0.000    0.000    0.000
aoc-files#lines                                2    0.000    0.000    0.000
aoc-files#aoc-resource-stream-lines            2    0.000    0.000    0.000
aoc-files#breakon                              2    0.000    0.000    0.000
aoc2015day03#stream-unzip                      1    0.000    0.000    0.000
aoc2015day01#floor-levels                      1    0.000    0.000    0.000


Here's the output from Linux:
reading `PROFILE.220061' ...

procedure                                  calls  seconds  average  percent
---------------------------------------------------------------------------
advent2015::run                                1    3.033    3.033  100.000
time-op                                        8    3.030    0.378   99.901
aoc2015day04#direct-hashing                    2    2.758    1.379   90.933
aoc2015day04#aoc2015day04::part2               1    2.247    2.247   74.085
aoc2015day04#aoc2015day04::part1               1    0.511    0.511   16.848
aoc2015day03#stream-to-location-set            3    0.168    0.056    5.539
aoc2015day03#aoc2015day03::part2               1    0.151    0.151    4.978
aoc2015day03#aoc2015day03::part1               1    0.049    0.049    1.615
aoc2015day02#aoc2015day02::part1               1    0.033    0.033    1.088
aoc2015day02#aoc2015day02::part2               1    0.027    0.027    0.890
aoc-files#aoc-resource-stream                  7    0.006    0.000    0.197
aoc-files#aoc-resource-stream-lines            3    0.006    0.002    0.197
aoc2015day03#loc-west                       4102    0.004    0.000    0.131
aoc2015day03#loc-south                      4136    0.003    0.000    0.098
aoc2015day03#loc-east                       4184    0.002    0.000    0.065
aoc2015day02#ribbon                         1000    0.002    0.000    0.065
aoc2015day03#negate                         8193    0.001    0.000    0.032
aoc2015day03#loc-north                      3962    0.000    0.000    0.000
aoc2015day02#paper                          1000    0.000    0.000    0.000
aoc2015day03#direction-to-location-stream      3    0.000    0.000    0.000
aoc-files#breakon                              2    0.000    0.000    0.000
aoc2015day02#lwh-stream-transformer            2    0.000    0.000    0.000
aoc-files#lines                                2    0.000    0.000    0.000
aoc2015day03#stream-unzip                      1    0.000    0.000    0.000
aoc2015day01#floor-levels                      0    0.000    0.000    0.000
aoc2015day01#floor-level-matched               0    0.000    0.000    0.000
aoc2015day01#floor-level                       0    0.000    0.000    0.000
aoc2015day04#info                              0    0.000    0.000    0.000
aoc2015day01#aoc2015day01::part2               0    0.000    0.000    0.000
aoc2015day01#aoc2015day01::part1               0    0.000    0.000    0.000


Compilation output for both were of the form:

csc -I ..\\ -s -d1 -profile -accumulate-profile ..\\advents\\2015\\aoc2015day01.scm -j aoc2015day01 -emit-types-file aoc2015day01.types -o aoc2015day01.so
csc -I ..\\ -s -d1 -profile -accumulate-profile aoc2015day01.import.scm
csc -I ..\\ -s -d1 -profile -accumulate-profile ..\\advents\\2015\\aoc2015day02.scm -j aoc2015day02 -emit-types-file aoc2015day02.types -o aoc2015day02.so
csc -I ..\\ -s -d1 -profile -accumulate-profile aoc2015day02.import.scm
csc -I ..\\ -s -d1 -profile -accumulate-profile ..\\advents\\2015\\aoc2015day03.scm -j aoc2015day03 -emit-types-file aoc2015day03.types -o aoc2015day03.so
csc -I ..\\ -s -d1 -profile -accumulate-profile aoc2015day03.import.scm
csc -I ..\\ -s -d1 -profile -accumulate-profile ..\\advents\\2015\\aoc2015day04.scm -j aoc2015day04 -emit-types-file aoc2015day04.types -o aoc2015day04.so
csc -I ..\\ -s -d1 -profile -accumulate-profile aoc2015day04.import.scm
csc -I ..\\ ..\\advents\\2015\\advent2015.scm -profile -accumulate-profile  -o advent2015


reply via email to

[Prev in Thread] Current Thread [Next in Thread]