Last active
February 4, 2020 11:55
-
-
Save cawa-93/20332d77ec4af35564771b0b467fb0e2 to your computer and use it in GitHub Desktop.
Тестирование работы V8 — https://habr.com/ru/post/486162/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| module.exports = function(keys) { | |
| for (let key of keys) this[key] = 42; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const createObject = require('./createObject.js'); | |
| const getKeys = require('./getKeys.js'); | |
| const {performance} = require('perf_hooks'); | |
| module.exports = function dynamicTest(length = 1000) { | |
| for (let i = 0; i < length; i++) { | |
| const entries = getKeys(); | |
| performance.mark('start'); | |
| const obj = new createObject(entries); | |
| performance.mark('end'); | |
| performance.measure(`${length}`, 'start', 'end'); | |
| } | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const makeid = require('./makeid.js'); | |
| module.exports = function getKeys(length = 20) { | |
| let keys = []; | |
| for (let i = 0; i < length; i++) { | |
| keys[i] = makeid(); | |
| } | |
| return keys; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const {promises} = require('fs'); | |
| const path = require('path'); | |
| const {fork} = require('child_process'); | |
| function getPromise(fork) { | |
| return new Promise((resolve, reject) => { | |
| fork.on('exit', code => { | |
| if (code) { | |
| reject(code); | |
| } else { | |
| resolve(); | |
| } | |
| }); | |
| }); | |
| } | |
| let res = {}; | |
| function onData({iterations, time, type}) { | |
| console.log({type, iterations, time}); | |
| if (!res[iterations]) { | |
| res[iterations] = {[type]: time}; | |
| return; | |
| } | |
| res[iterations][type] = time; | |
| } | |
| async function worker(start, end, step, type) { | |
| for (let i = start; i <= end; i += step) { | |
| const child = fork('./test.js'); | |
| child.on('message', onData); | |
| const promise = getPromise(child); | |
| child.send({count: i, type}); | |
| await promise; | |
| } | |
| } | |
| (async () => { | |
| await worker(100, 10_000, 100, 'dynamic'); | |
| await worker(100, 10_000, 100, 'mixed'); | |
| await worker(100, 10_000, 100, 'static'); | |
| const rows = []; | |
| for (let i in res) { | |
| rows.push([i, res[i].static, res[i].mixed, res[i].dynamic].join(',')); | |
| } | |
| const resPath = path.resolve(__dirname, 'result.csv'); | |
| await promises.writeFile(resPath, rows.join('\n'), {flag: 'w', encoding: 'utf8'}); | |
| })(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| module.exports = function makeid(length = 20) { | |
| let result = ''; | |
| var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzЙЦУКЕНГШЩЗХЪЁЭЖДЛОРПАВЫФЯЧСМИТЬБЮйцукенгшщзхъёэждлорпавыфячсмитьбю1234567890'; | |
| var charactersLength = characters.length; | |
| for (var i = 0; i < length; i++) { | |
| result += characters.charAt(Math.floor(Math.random() * charactersLength)); | |
| } | |
| return result; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const createObject = require('./createObject.js'); | |
| const getKeys = require('./getKeys.js'); | |
| const {performance} = require('perf_hooks'); | |
| module.exports = function mixedTest(length = 1000) { | |
| const staticKeys = getKeys(10); | |
| for (let i = 0; i < length; i++) { | |
| const keys = [...staticKeys, getKeys(10)]; | |
| performance.mark('start'); | |
| const obj = new createObject(keys); | |
| performance.mark('end'); | |
| performance.measure(`${length}`, 'start', 'end'); | |
| } | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 1 | 0.070516 | 0.074512 | 0.078131 | |
|---|---|---|---|---|
| 2 | 0.020479 | 0.03387 | 0.057106 | |
| 3 | 0.009605 | 0.017182 | 0.052582 | |
| 4 | 0.007616 | 0.01342 | 0.044155 | |
| 5 | 0.007051 | 0.015202 | 0.042519 | |
| 6 | 0.006862 | 0.011752 | 0.048664 | |
| 7 | 0.007956 | 0.011936 | 0.043132 | |
| 8 | 0.006844 | 0.01076 | 0.042017 | |
| 9 | 0.007012 | 0.011615 | 0.043953 | |
| 10 | 0.007691 | 0.012169 | 0.04688 | |
| 11 | 0.007136 | 0.010599 | 0.063022 | |
| 12 | 0.009965 | 0.013751 | 0.043428 | |
| 13 | 0.006768 | 0.010658 | 0.040818 | |
| 14 | 0.006374 | 0.010481 | 0.064483 | |
| 15 | 0.006754 | 0.01126 | 0.047264 | |
| 16 | 0.00649 | 0.010241 | 0.041625 | |
| 17 | 0.006418 | 0.010402 | 0.047642 | |
| 18 | 0.006423 | 0.010414 | 0.044126 | |
| 19 | 0.006504 | 0.010284 | 0.044458 | |
| 20 | 0.006577 | 0.013739 | 0.086163 | |
| 21 | 0.00627 | 0.010542 | 0.043992 | |
| 22 | 0.006734 | 0.010396 | 0.043683 | |
| 23 | 0.006606 | 0.010394 | 0.060491 | |
| 24 | 0.006275 | 0.010369 | 0.04887 | |
| 25 | 0.006137 | 0.010769 | 0.046446 | |
| 26 | 0.006625 | 0.0138 | 0.040876 | |
| 27 | 0.006063 | 0.02414 | 0.048217 | |
| 28 | 0.006204 | 0.041077 | 0.044125 | |
| 29 | 0.00645 | 0.014503 | 0.041934 | |
| 30 | 0.006209 | 0.012044 | 0.045942 | |
| 31 | 0.006031 | 0.015589 | 0.039576 | |
| 32 | 0.006267 | 0.011065 | 0.039907 | |
| 33 | 0.006434 | 0.010771 | 0.049029 | |
| 34 | 0.006162 | 0.014278 | 0.043955 | |
| 35 | 0.006402 | 0.011084 | 0.039943 | |
| 36 | 0.006419 | 0.010562 | 0.048466 | |
| 37 | 0.006015 | 0.010607 | 0.039335 | |
| 38 | 0.006581 | 0.014728 | 0.044637 | |
| 39 | 0.006055 | 0.010574 | 0.038907 | |
| 40 | 0.006094 | 0.010221 | 0.037453 | |
| 41 | 0.006022 | 0.010699 | 0.068153 | |
| 42 | 0.006065 | 0.014031 | 0.038619 | |
| 43 | 0.005999 | 0.010205 | 0.038532 | |
| 44 | 0.006175 | 0.013359 | 0.043943 | |
| 45 | 0.00611 | 0.010492 | 0.038878 | |
| 46 | 0.006448 | 0.027557 | 0.041499 | |
| 47 | 0.006001 | 0.013473 | 0.041018 | |
| 48 | 0.006276 | 0.011702 | 0.038071 | |
| 49 | 0.006049 | 0.015167 | 0.04198 | |
| 50 | 0.006247 | 0.010455 | 0.041792 | |
| 51 | 0.006173 | 0.010156 | 0.03814 | |
| 52 | 0.00616 | 0.010627 | 0.042273 | |
| 53 | 0.006551 | 0.010762 | 0.04575 | |
| 54 | 0.006689 | 0.010018 | 0.043447 | |
| 55 | 0.006077 | 0.010257 | 0.040493 | |
| 56 | 0.006056 | 0.013623 | 0.045899 | |
| 57 | 0.005943 | 0.012145 | 0.046196 | |
| 58 | 0.006345 | 0.010042 | 0.043093 | |
| 59 | 0.006348 | 0.010504 | 0.044705 | |
| 60 | 0.00645 | 0.01095 | 0.046662 | |
| 61 | 0.00623 | 0.013279 | 0.045054 | |
| 62 | 0.006058 | 0.010696 | 0.04844 | |
| 63 | 0.005912 | 0.010148 | 0.040374 | |
| 64 | 0.006226 | 0.014169 | 0.047138 | |
| 65 | 0.006155 | 0.014124 | 0.044725 | |
| 66 | 0.00634 | 0.010195 | 0.041987 | |
| 67 | 0.006393 | 0.010631 | 0.043145 | |
| 68 | 0.006329 | 0.01006 | 0.045764 | |
| 69 | 0.006131 | 0.010202 | 0.040506 | |
| 70 | 0.006211 | 0.009904 | 0.043146 | |
| 71 | 0.00635 | 0.010045 | 0.04558 | |
| 72 | 0.006313 | 0.012921 | 0.044262 | |
| 73 | 0.006262 | 0.011154 | 0.045277 | |
| 74 | 0.006423 | 0.010128 | 0.04262 | |
| 75 | 0.006 | 0.01073 | 0.044064 | |
| 76 | 0.006062 | 0.009976 | 0.046093 | |
| 77 | 0.005908 | 0.01008 | 0.043238 | |
| 78 | 0.006218 | 0.009569 | 0.039595 | |
| 79 | 0.006118 | 0.010088 | 0.045791 | |
| 80 | 0.006443 | 0.010004 | 0.046145 | |
| 81 | 0.00611 | 0.010205 | 0.043394 | |
| 82 | 0.005986 | 0.010184 | 0.043677 | |
| 83 | 0.005899 | 0.009571 | 0.045742 | |
| 84 | 0.005929 | 0.01266 | 0.045922 | |
| 85 | 0.005944 | 0.009807 | 0.040106 | |
| 86 | 0.006694 | 0.009545 | 0.061924 | |
| 87 | 0.005987 | 0.009924 | 0.046457 | |
| 88 | 0.005928 | 0.009695 | 0.04199 | |
| 89 | 0.006082 | 0.009702 | 0.046261 | |
| 90 | 0.005872 | 0.00986 | 0.039748 | |
| 91 | 0.005982 | 0.009889 | 0.038427 | |
| 92 | 0.005895 | 0.00978 | 0.044389 | |
| 93 | 0.006053 | 0.013343 | 0.039946 | |
| 94 | 0.005971 | 0.011072 | 0.03962 | |
| 95 | 0.006 | 0.009652 | 0.045866 | |
| 96 | 0.005916 | 0.010476 | 0.038063 | |
| 97 | 0.006083 | 0.010548 | 0.04228 | |
| 98 | 0.005793 | 0.009845 | 0.042403 | |
| 99 | 0.006056 | 0.009727 | 0.068 | |
| 100 | 0.005919 | 0.009484 | 0.097835 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 100 | 0.746334 | 1.28602 | 4.749314 | |
|---|---|---|---|---|
| 200 | 1.367427 | 2.3701 | 8.68656 | |
| 300 | 2.516429 | 3.587406 | 14.475089 | |
| 400 | 3.094934 | 4.766019 | 17.590636 | |
| 500 | 4.050165 | 5.967468 | 21.27615 | |
| 600 | 4.700201 | 7.146879 | 25.526627 | |
| 700 | 5.078174 | 8.512543 | 30.168137 | |
| 800 | 4.82584 | 9.671826 | 33.899309 | |
| 900 | 5.312768 | 10.824226 | 37.934505 | |
| 1000 | 6.335683 | 12.056051 | 39.113308 | |
| 1100 | 7.085298 | 12.41659 | 43.738001 | |
| 1200 | 6.966162 | 14.979097 | 48.206768 | |
| 1300 | 8.045883 | 14.613864 | 53.556167 | |
| 1400 | 8.57082 | 16.491824 | 57.199703 | |
| 1500 | 8.957278 | 17.880392 | 59.348648 | |
| 1600 | 9.483584 | 18.071832 | 64.718858 | |
| 1700 | 10.148022 | 18.850772 | 71.58447 | |
| 1800 | 10.41871 | 19.829112 | 75.16745 | |
| 1900 | 11.44134 | 20.068933 | 80.241606 | |
| 2000 | 11.210945 | 22.095337 | 83.294692 | |
| 2100 | 11.825698 | 22.778076 | 86.617296 | |
| 2200 | 12.842728 | 23.717162 | 91.657715 | |
| 2300 | 12.211329 | 24.472508 | 93.570758 | |
| 2400 | 12.084739 | 24.895062 | 96.196754 | |
| 2500 | 11.967634 | 26.910906 | 102.088493 | |
| 2600 | 13.457991 | 27.831991 | 105.812472 | |
| 2700 | 15.081118 | 28.010473 | 126.713938 | |
| 2800 | 15.129705 | 28.164192 | 151.925003 | |
| 2900 | 15.797326 | 28.981119 | 129.303417 | |
| 3000 | 16.406157 | 32.823417 | 152.482452 | |
| 3100 | 16.454162 | 31.46171 | 158.807887 | |
| 3200 | 16.858241 | 32.644069 | 132.169779 | |
| 3300 | 17.149584 | 32.149721 | 136.451894 | |
| 3400 | 18.111303 | 33.965343 | 169.015973 | |
| 3500 | 18.503657 | 34.367465 | 142.175513 | |
| 3600 | 15.941716 | 35.957534 | 148.437537 | |
| 3700 | 16.357307 | 36.109945 | 151.691485 | |
| 3800 | 17.162691 | 36.531456 | 158.63412 | |
| 3900 | 18.809379 | 41.623622 | 159.575129 | |
| 4000 | 18.406013 | 39.63293 | 163.566926 | |
| 4100 | 20.675249 | 55.775127 | 168.030241 | |
| 4200 | 19.856078 | 48.395186 | 172.826546 | |
| 4300 | 20.612909 | 79.505245 | 182.16897 | |
| 4400 | 20.300609 | 61.090867 | 188.181415 | |
| 4500 | 20.654471 | 54.548554 | 206.812246 | |
| 4600 | 20.505822 | 67.101701 | 190.751202 | |
| 4700 | 20.254685 | 47.057305 | 195.252113 | |
| 4800 | 19.279691 | 56.526382 | 201.754623 | |
| 4900 | 20.198436 | 46.422286 | 201.528683 | |
| 5000 | 21.701091 | 47.008542 | 210.057374 | |
| 5100 | 23.45207 | 51.927668 | 215.20178 | |
| 5200 | 22.294861 | 46.974469 | 213.856039 | |
| 5300 | 23.016526 | 48.73407 | 222.10545 | |
| 5400 | 24.083761 | 48.697516 | 217.843559 | |
| 5500 | 26.948069 | 49.479517 | 227.511143 | |
| 5600 | 29.870365 | 50.066914 | 225.342229 | |
| 5700 | 27.283051 | 53.294128 | 236.454041 | |
| 5800 | 25.184811 | 53.026884 | 249.019075 | |
| 5900 | 25.721527 | 52.461297 | 251.653526 | |
| 6000 | 27.58663 | 61.229427 | 246.522381 | |
| 6100 | 26.35897 | 57.006252 | 256.445066 | |
| 6200 | 26.94551 | 62.549175 | 262.948402 | |
| 6300 | 26.658132 | 61.517989 | 259.249039 | |
| 6400 | 26.916074 | 78.661619 | 270.334309 | |
| 6500 | 27.218135 | 80.236457 | 270.948293 | |
| 6600 | 27.84208 | 73.981696 | 275.419066 | |
| 6700 | 28.537935 | 59.952568 | 288.423357 | |
| 6800 | 29.630254 | 61.821303 | 294.49305 | |
| 6900 | 29.349273 | 67.720427 | 287.394301 | |
| 7000 | 28.89699 | 67.56924 | 296.622703 | |
| 7100 | 29.175293 | 63.46472 | 304.723181 | |
| 7200 | 29.520907 | 65.659488 | 312.744592 | |
| 7300 | 30.044577 | 81.780671 | 315.794409 | |
| 7400 | 30.950321 | 89.544344 | 320.921789 | |
| 7500 | 31.596396 | 92.506289 | 314.001592 | |
| 7600 | 31.361302 | 104.521908 | 321.744349 | |
| 7700 | 30.107738 | 93.589571 | 326.175583 | |
| 7800 | 31.150362 | 75.893319 | 336.930927 | |
| 7900 | 32.058823 | 86.320825 | 341.49997 | |
| 8000 | 32.641055 | 86.688438 | 355.843624 | |
| 8100 | 33.249796 | 82.033383 | 350.565772 | |
| 8200 | 35.155293 | 73.758274 | 358.853134 | |
| 8300 | 33.166279 | 72.924312 | 367.489579 | |
| 8400 | 35.830797 | 76.658705 | 374.630028 | |
| 8500 | 34.259911 | 90.109449 | 370.657868 | |
| 8600 | 33.855245 | 110.521979 | 370.300604 | |
| 8700 | 35.132415 | 117.446192 | 377.795957 | |
| 8800 | 36.796464 | 107.185078 | 387.742946 | |
| 8900 | 36.149213 | 115.338647 | 381.470536 | |
| 9000 | 36.564622 | 118.842288 | 385.727076 | |
| 9100 | 35.810603 | 123.174832 | 391.647376 | |
| 9200 | 38.526223 | 106.360383 | 393.981079 | |
| 9300 | 38.011408 | 124.443577 | 411.950764 | |
| 9400 | 37.407888 | 124.962288 | 434.616664 | |
| 9500 | 37.538268 | 108.462239 | 423.044489 | |
| 9600 | 37.045504 | 103.176439 | 412.101761 | |
| 9700 | 39.163105 | 107.168415 | 413.499956 | |
| 9800 | 38.923913 | 87.203774 | 431.009231 | |
| 9900 | 39.881353 | 96.036974 | 435.935511 | |
| 10000 | 38.184989 | 101.840954 | 428.29386 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const getKeys = require('./getKeys.js'); | |
| const {performance} = require('perf_hooks'); | |
| const createObject = require('./createObject.js'); | |
| module.exports = function staticTest(length = 1000) { | |
| const keys = getKeys(); | |
| for (let i = 0; i < length; i++) { | |
| performance.mark(`start`); | |
| const obj = new createObject(keys); | |
| performance.mark(`end`); | |
| performance.measure(`${length}`, `start`, `end`); | |
| } | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const {PerformanceObserver} = require('perf_hooks'); | |
| process.on('message', ({count, type}) => { | |
| const test = | |
| type === 'static' | |
| ? require('./staticTest.js') | |
| : type === 'mixed' | |
| ? require('./mixedTest.js') : require('./dynamicTest.js'); | |
| let totalTime = 0; | |
| const obs = new PerformanceObserver((items) => { | |
| totalTime += items.getEntries()[0].duration; | |
| }); | |
| obs.observe({entryTypes: ['measure']}); | |
| test(count); | |
| process.send({iterations: count, time: totalTime, type}); | |
| process.exit(0); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment