pypy benchmarks pca

Upload: valery-khamenya

Post on 05-Apr-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Pypy Benchmarks Pca

    1/18

    PyPy benchmarks

    in Principal Component Analysis (PCA)(DRAFT)

    Progress is always about changes

    Valery A. Khamenya

    May 19, 2012

    This report is a quick attempt to apply Principal Component Analysis (PCA) tothe benchmarking measurements of the fastest (as of 2012) implementation PyPy ofa quite nice language Python. The targeted audience is anyone, who loves PyPy andperhaps hates statistics ;)

    The factors that influence the variance in benchmarking data are (more powerfultend to go first):

    1. progress with time huge!

    2. 32-vs-64

    3. battle between sympy_expand/sympy_str and twisted_iteration

    4. opposition ai vs spitfire-related tests

    5. crypto_pyaes vs the rest

    6. spectral-norm vs the rest

    7. meteor-contest vs the rest

    8. fannkuch vs the rest

    9. nbody_modified vs the rest

    1

    http://en.wikipedia.org/wiki/Principal_component_analysishttp://en.wikipedia.org/wiki/Principal_component_analysis
  • 7/31/2019 Pypy Benchmarks Pca

    2/18

    1 What is it good for?

    In short, PCA helps to reveal major factors causing variation in the data. This way one coulddo the following:

    1. to guess whats going on in PyPy last year from benchmarking perspective.2. to figure out the biggest hidden games behind the PyPy efforts, what is primarily ad-

    dressed, what are the prios

    3. to find benchmarking tests that are too similar to each other and probably just increaseredundance

    4. to estimate how a test increases the representativity/coverage of benchmarking in relationto others

    5. to decrease redundancy in the set of benchmarking tests that are used to state the finalspeed-up of PyPy over CPython and therefore allow people outside from PyPy world rely

    more on the PyPy speed-up factor http://speed.pypy.org

    6. to see what was the influence of particular source control revision on the factors

    7. to guess what kind of operations are mostly stressed in a new test (a group of simplisticbenchmarking unit-tests would be needed for this though: float arithmetics, integerarithmetics, strings, dictionaries, loops, recursion, flow control, exeption handling, OOP,garbage collection, multiprocessing, multithreading, I/O, arrays, etc)

    Albeit, one should strongly understand that all conclusions about single test are made basedon analysis of variation of its benchmarking measurements, i.e. changes during multiple mea-surements. That is, PCA is like a snake that could miss a cold motionless prey. And of coursethis snake will be effective, if one has a vector of measurements, e.g. multiple measurements fora single benchmarking test from different git-revisions or, alternatively, multiple measurementsfrom different benchmarking tests for a given single git-revision.

    2 Details to skip during 1st reading

    The measurements we analyze represent PyPy progress from Jan 2010 (svn epoch) to May 2012(git epoch). First of all lets read the data into a matrix. To make things simple lets respectand consider only those benchmarking tests that have at least 300 measurements. Then letskick heartlessly those benchmarking rounds, where even one of these respected benchmark tests

    failed to produce a time measurement.Oops, svn epoch seems to be kicked, but we dont worry for moment. Each column of the

    benchmarking data matrix represents measurements for a benchmarking test. Here is, e.g. thetop-left part of the matrix:

    > m[1:5, 1:4]

    ai bm_chameleon bm_mako chaos

    48277:39882f1dfd15-64 0.7149890 0.1392867 0.2094372 0.4828594

    48277:39882f1dfd15 0.7056351 0.1474193 0.2078679 0.4821176

    48354:10f7167b3e98-64 0.7221774 0.1460866 0.2096604 0.4682653

    48354:10f7167b3e98 0.7279082 0.1362366 0.1952811 0.4751145

    48400:adab424acda7-64 0.7506032 0.1451451 0.2010512 0.4759733

    2

    http://speed.pypy.org/http://speed.pypy.org/
  • 7/31/2019 Pypy Benchmarks Pca

    3/18

    The fun with PCA is that we could analyse the data matrix and then ...transpose it and getan alternative point of view. Well discuss it later.

    Currently we get 31 benchmarking tests and 332 benchmarking rounds. This means, in termsof PCA we could dream of 31 factors that we might manage to discover.

    3 Just to feed your interest before we go...

    Statistical analysis is often underestimated. Just to feed the interest of those, who is too faraway from all PCA, ICA, whatever-else approaches. Lets apply PCA to the data matrix withbenchmarking measurements as-is.

    3.1 32 vs 64 an easy Factor Nr. 2

    And here are the first 2 strongest factors that influence the variation in benchmarking measure-ments.

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    5 0 5

    2

    1

    0

    1

    2

    PC1 x PC2

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    32

    32

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    32

    64

    32

    32

    64

    64

    32

    64

    32

    64

    32

    64

    32

    64

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    32

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    64

    64

    32

    32

    64

    32

    32

    64

    32

    64

    32

    64

    32

    64

    6432

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    3232

    32

    64

    32

    64

    64

    32

    64

    64

    32

    64

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    32

    64

    32

    64

    32

    64

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    64

    64

    64

    32

    64

    32

    64

    32

    64

    32

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    64

    32

    64

    3264

    32

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    64

    32

    32

    64

    32

    64

    32

    64

    32

    64

    32

    Each point represents a round of benchmarking measurements for the corresponding PyPysource control revision and CPU-platform. By the way, factors in PCA are often named PrincipalComponents (PC), therefore PC1, PC2, etc.

    To get an idea about the second factor (Y-axis) the benchmarking rounds are marked with64 for 64-bit target platform, and similarly with 32 for 32-bit one. Of course, PCA is notable to interpret factors completely or even magically name them right ;) However it does helpus to sort them by the influence they make on the variances in benchmarking measurements.

    3

  • 7/31/2019 Pypy Benchmarks Pca

    4/18

    The 32-vs-64 was just an easy puzzle about second-strong factor in measurement variance.How strong it is? This graph shows the contribution of each facor in squared variance of thedata:

    Ordered factors, major factors are wellseparated

    Variances

    0

    2

    4

    6

    8

    An important thing to know about this graph is the larger is difference between the factors,the better is algorithmical separation of factors (and more reliable is the interpretation)

    Zoom in first 7:

    4

  • 7/31/2019 Pypy Benchmarks Pca

    5/18

    Ordered factors, major factors are wellseparated (zoom)

    Variances

    0

    2

    4

    6

    8

    3.2 No 64-bit anymore and Factor Nr.1

    OK lets kick 64-bit for simplisity of the next steps. The graphs will be more sparse and easierto find interesting things during our first approaching to the data.

    > m

  • 7/31/2019 Pypy Benchmarks Pca

    6/18

    q

    q

    q q

    q

    q

    q

    q

    q

    q q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    qq

    q

    5 0 5

    2.

    0

    1.

    5

    1.0

    0.

    5

    0.

    0

    0.

    5

    1.

    0

    1.

    5

    PC1 x PC2 (no 3264 anymore)

    48277:39882f1dfd15

    48354:10f7167b3e98

    48400:adab424acda748462:fc37961a668f

    48482:a2b911e61392

    48538:993b01fd53d4

    48572:1847537fd4b5

    48599:a3a5ac0a2daf

    48616:b994f7ec222e

    48630:fb26ce1b9d1b48649:06cddf70488a

    48673:b387640aa6ba

    48675:3150cc438a4248724:7cd8e99541db

    48761:98bf21b80f

    48778:c4dce4f412b1

    48852:9e7c5b33e755

    48885:c07fe33e541d

    49344:73b76d76352b

    49403:913f736ff114

    49458:365410e9e95e

    49500:f46e309f89bd

    49539:7d9e78a91dce

    49556:b64cba156148

    49589:e3fa364982b2

    49647:ddbc82ef4d8f

    49672:d550918b20a6

    49705:0a31d8ef2f8a

    49743:bf59d657e73a

    49823:d9ef0a8f3fa2

    49840:17fd3198ef36

    49857:87f2c234b924

    50029:06acac97ffa5

    50040:e4a0b9e4d23b

    50079:87235ee9b8ab

    50098:03e42e96479d

    50138:4162bc8b5f4c

    50181:0732486f6a76

    50234:33ec28c6d811

    50291:e37e4e6e97b8

    50316:8de6f245c959

    50321:03796662a8a0

    50322:4efbd07c3e55

    50358:969865e9cb30

    50397:6fb87770b5d2

    50452:ef8e9023100e

    50481:b673742c84f1

    50524:5a9a29b9c0ae

    50594:2b3d72c181dd

    50605:10601f705a55

    50621:b3f614a9de14

    50663:16d3f098e8ec

    50701:5467c010ecde

    50718:196c4e9bbd48

    50758:85a5e1fe1ad8

    50792:862207881328

    50819:bb7e012d070a

    50826:f6f8ddc1a2f0

    50834:532130e19935

    50836:819faa2129a8

    50858:44b0e2106e2d

    50886:c8ddbb442986

    50911:94e9969b5f00

    50935:69095778cbfd

    50969:d0d0b1bbbee8

    50979:6a589f1a038a

    51002:ece227c225ab

    51018:5afb4fd1f372

    51078:b67e65d709e1

    51123:7bb8b38d8563

    51216:ca3f367e84af51251:30e3fdc262ca

    51285:b09a9354d977

    51333:eb0269c21eec

    51365:5e43d79c76a7

    51462:c85a96246d2f

    51466:f254dc780358

    51498:7745b3fcec92

    51557:9adc55550ee851616:5aa09e8483d3

    51647:7cd209e0414e

    51701:173aa3e5cde0

    51707:9901f428b3b1

    51738:45af9fa4aed0

    51745:29a811af16dc

    51817:0586c5404983

    51935:cf1a8868cf4e

    52004:32425967effa

    52024:f054c58ba588

    52030:f91dd3570b06

    52056:5bf9a08deeb4

    52113:380432600a53

    52140:646611ce782f

    52207:5b7ecbf87681

    52257:11d854db3e60

    52336:4b90bae5c842

    52382:00b830d7bd6a

    52396:5e6014f89520

    52432:fd14bc0aec12

    52490:30cb1ba90150

    52533:f272bf10ef94

    52573:59a514e97b66

    52576:80d15a9a3932

    52607:0f03693b05ac

    52658:a8321d3e8e9c

    52672:b319183b838d

    52741:48ef6cd6e2df52769:37fb24cc3dde

    52823:f50a42098ae3

    52889:0eaf96f13694

    52943:092ee39048af

    53000:836fcc2fe8d8

    53032:f9f3b57f1300

    53083:49afda04d4ce

    53127:21d7882b8571

    53155:3539e2d663f4

    53215:edd5581881f4

    53240:b608170d963a53248:1dcf738f99a553263:986d17b4a13c

    53274:487174b08100

    53290:76607038e429

    53293:478bc4f20cb7

    53305:81acfc4eadac

    53817:62902925695c

    53841:1c6dc3e6e70c

    53869:65f628f558ca

    53930:d148511060f8

    53958:ea2751a04d47

    71:2a83c08dcb0e

    53975:8ae92dbdda48

    54010:4dcfa3206067

    54037:4d18306a2fb3

    54046:3b48363cff78

    54085:285ff15e1498

    54107:5b9f7aa356a0

    54131:76c5931f64cc54270:41c799d11717

    54279:859f1579f2bd

    54289:ad03b1c52876

    54308:97c57afceef4

    54315:1da1c1632353

    54335:83dbfcb6f927

    54368:57f6dff7fb22

    54440:8ae7413e7b32

    54487:11d96d5e877f

    54509:b58494d41466

    54599:442a3ea22328

    54610:92cfbb56d39e

    54700:7fc6072593dd

    54737:1e469996fdab

    54752:6dffe8f51e7b

    54769:f6fbfecb93fd

    54779:ac3066573611

    54796:8cb0aa4c2211

    54811:cc436eb0a04b

    54836:52324a85becd

    54841:38a19a4dd9f3

    54854:4fc21e56dbc9

    54887:b7558f5630d6

    54891:5e8d21a87161

    54898:629cfca82920

    54915:573a6cacf459

    54951:94956a840d5f

    54978:89ed5aadced0

    54998:d8e00a3ec08d

    55013:8021ff42995c

    What is special about this stand-alone cluster of git-revisions, where e.g. git-revisions 48761:98bf21b80fc5or, say, 48354:10f7167b3e98 are most extrem ? The answer will explain the benchmarking mea-surement variance Factor Nr.1 in terms of git-revisions.

    It looks simply like after revisions in the range near 48277-49500 there was a considerablequalitative speed up, i.e. after Nov/Dec 2011. Well the first 2 factors were not that muchinteresting, but for those, who never saw PCA probably it was fun.

    4 No old data

    Lets kick old data und focus on the recent changes after git-revision 49600.

    > isRecent

    + 49600

    > m

  • 7/31/2019 Pypy Benchmarks Pca

    7/18

    no 64bit data, no old data

    Variances

    0.0

    0.5

    1.0

    1.5

    2

    .0

    7

  • 7/31/2019 Pypy Benchmarks Pca

    8/18

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    qq

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    4 2 0 2 4

    1.0

    0.

    5

    0.

    0

    0.

    5

    1.0

    1.

    5

    2.0

    PC1 x PC2 (no 3264 anymore, no old data)

    49647:ddbc82ef4d8f

    49672:d550918b20a6

    49705:0a31d8ef2f8a

    49743:bf59d657e73a

    49823:d9ef0a8f3fa2

    49840:17fd3198ef3649857:87f2c234b924

    50029:06acac97ffa5

    50040:e4a0b9e4d23b

    50079:87235ee9b8ab

    50098:03e42e96479d

    50138:4162bc8b5f4c

    50181:0732486f6a76

    50234:33ec28c6d811

    50291:e37e4e6e97b850316:8de6f245c959

    50321:03796662a8a0

    50322:4efbd07c3e55

    50358:969865e9cb30

    50397:6fb87770b5d2

    50452:ef8e9023100e

    50481:b673742c84f1

    50524:5a9a29b9c0ae

    50594:2b3d72c181dd

    50605:10601f705a55

    50621:b3f614a9de14

    50663:16d3f098e8ec

    50701:5467c010ecde

    50718:196c4e9bbd48

    50758:85a5e1fe1ad8

    50792:862207881328

    50819:bb7e012d070a

    50826:f6f8ddc1a2f0

    50834:532130e1993550836:819faa2129a8

    50858:44b0e2106e2d

    50886:c8ddbb442986

    50911:94e9969b5f00

    50935:69095778cbfd

    50969:d0d0b1bbbee8

    50979:6a589f1a038a

    51002:ece227c225ab

    51018:5afb4fd1f372

    51078:b67e65d709e1

    51123:7bb8b38d8563

    51216:ca3f367e84af

    51251:30e3fdc262ca

    51285:b09a9354d977

    51333:eb0269c21eec

    51365:5e43d79c76a7

    51462:c85a96246d2f

    51466:f254dc780358

    51498:7745b3fcec92

    51557:9adc55550ee8

    51616:5aa09e8483d3

    51647:7cd209e0414e

    51701:173aa3e5cde051707:9901f428b3b1

    51738:45af9fa4aed0

    51745:29a811af16dc

    51817:0586c5404983

    51935:cf1a8868cf4e

    52004:32425967effa

    52024:f054c58ba588

    52030:f91dd3570b06

    52056:5bf9a08deeb4

    52113:380432600a53

    52140:646611ce782f

    52207:5b7ecbf87681

    52257:11d854db3e60

    52336:4b90bae5c842

    52382:00b830d7bd6a

    52396:5e6014f89520

    52432:fd14bc0aec12

    52490:30cb1ba90150

    52533:f272bf10ef94

    52573:59a514e97b66

    52576:80d15a9a3932

    52607:0f03693b05ac

    52658:a8321d3e8e9c

    52672:b319183b838d

    52741:48ef6cd6e2df

    52769:37fb24cc3dde

    52823:f50a42098ae3

    52889:0eaf96f13694

    52943:092ee39048af

    53000:836fcc2fe8d8

    53032:f9f3b57f1300

    53083:49afda04d4ce

    53127:21d7882b8571

    53155:3539e2d663f4

    53215:edd5581881f4

    53240:b608170d963a

    53248:1dcf738f99a5

    53263:986d17b4a13c

    53274:487174b08100

    53290:76607038e429

    53293:478bc4f20cb7

    53305:81acfc4eadac

    53817:62902925695c

    53841:1c6dc3e6e70c

    53869:65f628f558ca

    53930:d148511060f8

    53958:ea2751a04d47

    53971:2a83c08dcb0e

    53975:8ae92dbdda48

    54010:4dcfa3206067

    54037:4d18306a2fb3

    54046:3b48363cff78

    54085:285ff15e1498

    54107:5b9f7aa356a0

    54131:76c5931f64cc54270:41c799d11717

    54279:859f1579f2bd54289:ad03b1c52876

    54308:97c57afceef4

    54315:1da1c1632353

    54335:83dbfcb6f927

    54368:57f6dff7fb2254440:8ae7413e7b32

    54487:11d96d5e877f

    54509:b58494d41466

    54599:442a3ea22328

    54610:92cfbb56d39e

    54700:7fc6072593dd

    54737:1e469996fdab

    54752:6dffe8f51e7b

    54769:f6fbfecb93fd

    54779:ac3066573611

    54796:8cb0aa4c2211

    54811:cc436eb0a04b

    54836:52324a85becd

    54841:38a19a4dd9f3

    54854:4fc21e56dbc9

    54887:b7558f5630d6

    54891:5e8d21a87161

    54898:629cfca82920

    54915:573a6cacf459

    54951:94956a840d5f

    54978:89ed5aadced0

    54998:d8e00a3ec08d

    55013:8021ff42995c

    The PC1 (X-axis) is rather about time progress, but what abot Y-axis? What are its poles52382:00b830d7bd6a and 54509:b58494d41466 ?

    8

  • 7/31/2019 Pypy Benchmarks Pca

    9/18

    5 Flip-flop!

    As mentioned, we could rotate data matrix to see things from different point of view.

    qqq

    q

    q

    q

    qq

    q

    q

    qq

    qq

    qq

    q

    qq

    q

    q

    q

    qq

    qqq

    q

    0 100 200 300 400 500

    2

    0

    2

    4

    point is a benchmarking test

    aibm_chameleonbm_makochaos

    crypto_pyaes

    django

    fannkuch

    float

    go

    html5lib

    json_bench

    meteorcontestnbody_modified

    pyflatefastraytracesimple

    richardsrietveld

    slowspitfire

    spambayesspectralnorm

    spitfire

    spitfire_cstringio

    sympy_expand

    sympy_integratesympy_str

    sympy_sumtelcotwisted_iterationwisted_namestwisted_pb

    twisted_tcp

    What special about json_bench or html5lib? Nothing much interesting. They always showhigher avg_changed than the others. Lets normalize the avg_changed range for each test.

    9

  • 7/31/2019 Pypy Benchmarks Pca

    10/18

    first factors are wellseparated, huray! But others... :(

    Variances

    0e+00

    2e04

    4e04

    6e04

    8e04

    10

  • 7/31/2019 Pypy Benchmarks Pca

    11/18

    q

    q

    q

    q

    q

    q

    q

    q qq

    q

    q

    q q

    q q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    qq

    0.10 0.08 0.06 0.04 0.02 0.00 0.02 0.04

    0.0

    4

    0.0

    2

    0.0

    0

    0.0

    2

    PC1 x PC2, point is a benchmarking test (Normalized)

    ai

    bm_chameleon

    bm_mako

    chaos

    crypto_pyaes

    django

    fannkuch

    float go

    html5lib

    json_bench

    meteorcontest

    nbody_modifiedpyflatefast

    raytracesimplerichards

    rietveld

    slowspitfire

    spambayes

    spectralnorm

    spitfire

    spitfire_cstringio

    ympy_expand

    sympy_integrate

    sympy_str

    sympy_sumtelco

    twisted_iteration

    twisted_namestwisted_pbtwisted_tcp

    So the main battle of the last PyPy year seems to be between sympy_expand/sympy_strand twisted_iteration.

    The second big opposition is ai vs spitfire-related tests.Well, the problem is that these first two battles are the only well-recognizable

    factors.OK, lets kick these measurements to hear the rest chorus:

    > bigSolo toTake tm

  • 7/31/2019 Pypy Benchmarks Pca

    12/18

    no big solo poles changed a bit, but not much

    Variances

    0.0

    0000

    0.0

    0005

    0.0

    0010

    0.0

    0015

    0.0

    0020

    0

    .00025

    12

  • 7/31/2019 Pypy Benchmarks Pca

    13/18

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    qq qq

    q q

    0.00 0.02 0.04 0.06

    0.0

    1

    0.0

    0

    0.0

    1

    0.0

    2

    0.0

    3

    0.0

    4

    0.0

    5

    PC1 x PC2, no big solo, point is a benchm. (Normalized)

    bm_chameleon

    bm_mako

    chaoscrypto_pyaes

    django

    fannkuch

    float

    go

    html5lib

    json_bench

    meteorcontest

    nbody_modified

    pyflatefastraytracesimple

    richards

    rietveld

    spambayes

    spectralnorm

    sympy_integrate

    sympy_sumtelcotwisted_names

    twisted_pbtwisted_tcp

    Lets kick 3 more tests:

    > backSolo toTake tm

  • 7/31/2019 Pypy Benchmarks Pca

    14/18

    no back solo too poles changed a bit, but not much

    Variances

    0.0

    0000

    0.0

    0004

    0.0

    0008

    0.0

    0012

    14

  • 7/31/2019 Pypy Benchmarks Pca

    15/18

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    0.04 0.03 0.02 0.01 0.00 0.01

    0.

    03

    0.

    02

    0.

    01

    0.

    00

    0.

    01

    0.

    02

    PC1 x PC2, no back solo too, point is a benchm. (Normalized

    bm_chameleon

    bm_mako

    chaos

    django

    fannkuch

    float

    go

    html5lib

    json_bench

    nbody_modified

    pyflatefast

    raytracesimple

    richards

    rietveld

    spambayes

    sympy_integrate

    sympy_sum

    telco

    twisted_names

    twisted_pb

    twisted_tcp

    Lets kick 2 more tests:

    > backSolo2 toTake tm

  • 7/31/2019 Pypy Benchmarks Pca

    16/18

    no back solo2 too poles changed a bit

    Variances

    0e+00

    2e05

    4e05

    6e05

    8e05

    1e04

    16

  • 7/31/2019 Pypy Benchmarks Pca

    17/18

    q

    q

    q

    q

    q

    q

    qq

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    q

    0.02 0.01 0.00 0.010.

    020

    0

    .010

    0.

    000

    0.

    005

    0.

    010

    PC1 x PC2, no back solo2 too, point is a benchm. (Normalized

    bm_chameleon

    bm_mako

    chaos

    django

    float

    go

    html5lib

    json_bench

    pyflatefast

    raytracesimple

    richards

    rietveld

    spambayes

    sympy_integrate

    sympy_sum

    telco

    twisted_names

    twisted_pb

    twisted_tcp

    17

  • 7/31/2019 Pypy Benchmarks Pca

    18/18

    6 Appendix

    An example of non-recognizable PCA factors from the 31*100 matrix of normally distributedrandom data.

    > p plot(p, n = 31, "really a bad case, factors can' t be separated")

    really a bad case, factors can't be separated

    Variances

    0.0

    0.5

    1.0

    1.5

    2.0

    This report is generated using LATEX, Sweave and R.