50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
const events = require('events');
|
|
const EventEmitter = events.EventEmitter;
|
|
require('../../dist/zone-node');
|
|
|
|
const emitters = [];
|
|
const callbacks = [];
|
|
const size = 100000;
|
|
for (let i = 0; i < size; i++) {
|
|
const emitter = new EventEmitter();
|
|
const callback = (function(i) { return function() { console.log(i); }; })(i);
|
|
emitters[i] = emitter;
|
|
callbacks[i] = callback;
|
|
}
|
|
|
|
function addRemoveCallback(reuse, useZone) {
|
|
const start = new Date();
|
|
let callback = callbacks[0];
|
|
for (let i = 0; i < size; i++) {
|
|
const emitter = emitters[i];
|
|
if (!reuse) callback = callbacks[i];
|
|
if (useZone)
|
|
emitter.on('msg', callback);
|
|
else
|
|
emitter.__zone_symbol__addListener('msg', callback);
|
|
}
|
|
|
|
for (let i = 0; i < size; i++) {
|
|
const emitter = emitters[i];
|
|
if (!reuse) callback = callbacks[i];
|
|
if (useZone)
|
|
emitter.removeListener('msg', callback);
|
|
else
|
|
emitter.__zone_symbol__removeListener('msg', callback);
|
|
}
|
|
const end = new Date();
|
|
console.log(useZone ? 'use zone' : 'native', reuse ? 'reuse' : 'new');
|
|
console.log('Execution time: %dms', end - start);
|
|
}
|
|
|
|
addRemoveCallback(false, false);
|
|
addRemoveCallback(false, true);
|
|
addRemoveCallback(true, false);
|
|
addRemoveCallback(true, true); |